]u @ s@ d d l m Z Gd d d e Z Gd d d e Z d S) )tokenc @ s e Z d Z d d Z d S)
ParseErrorc C sH t j | d | | | | f | | _ | | _ | | _ | | _ d S)Nz!%s: type=%r, value=%r, context=%r) Exception__init__msgtypevaluecontext)selfr r r r r */opt/alt/python35/lib64/python3.5/parse.pyr s zParseError.__init__N)__name__
__module____qualname__r r r r r r s r c @ sj e Z d Z d d d Z d d d Z d d Z d d Z d
d Z d d
Z d d Z d S)ParserNc C s" | | _ | p d d | _ d S)Nc S s | S)Nr )grammarnoder r r W s z!Parser.__init__..)r convert)r
r r r r r r 9 s zParser.__init__c C sh | d k r | j j } | d d g f } | j j | d | f } | g | _ d | _ t | _ d S)N )r startdfasstackrootnodeset
used_names)r
r newnodeZ
stackentryr r r setupY s
zParser.setupc C s | j | | | } x| j d \ } } } | \ } } | | }
xV|
D] \ } } | j j | \ }
} | | k r | j | | | | | } xV | | d | f g k r | j | j s d S| j d \ } } } | \ } } q Wd S|
d k rK | j j |
} | \ } } | | k rK | j |
| j j |
| | PqK Wd | f |
k r| j | j st d | | | q t d | | | q Wd S)
Nr r TF ztoo much inputz bad inputr ) classifyr r Zlabelsshiftpopr pushr )r
r r r ilabeldfastater ZstatesfirstZarcsinewstatetvZitsdfaZ itsstatesZitsfirstr r r addtokenq s:
zParser.addtokenc C s~ | t j k rD | j j | | j j j | } | d k rD | S| j j j | } | d k rz t d | | | | S)Nz bad token) r NAMEr addr keywordsgettokensr )r
r r r r$ r r r r s zParser.classifyc C st | j d \ } } } | | | d f } | j | j | } | d k rZ | d j | | | | f | j d