B u `ã @s ddlZddlZddlZddlZddlZddlZdZdZdZ dZ dZ dZ dZ d Zd ZdZejddkrleZneZejZGd d „d eƒZGd d„deƒZGdd„deƒZdd„Zdd„Zdadada dZ!dd„Z"dd„Z#dd„Z$dd„Z%Gdd„dƒZ&Gd d!„d!ƒZ'Gd"d#„d#ƒZ(e )d$¡Z*Gd%d&„d&eƒZ+Gd'd(„d(eƒZ,Gd)d*„d*eƒZ-d+d,„Z.Gd-d.„d.eƒZ/Gd/d0„d0eƒZ0Gd1d2„d2eƒZ1Gd3d4„d4eƒZ2d5d6„Z3d7d8„Z4Gd9d:„d:eƒZ5Gd;d<„d„Z7d?d@„Z8GdAdB„dBeƒZ9de de ddd de ddddf dCdD„Z:dS)EéNz3.11z3.10Tz parser.outÚparsetabÚLALRéFé(c@s4eZdZdd„Zdd„ZeZdd„Zdd„ZeZd S) Ú PlyLoggercCs ||_dS)N)Úf)Úselfr©r ú,/tmp/pip-unpacked-wheel-zt_1wjp0/ply/yacc.pyÚ__init__mszPlyLogger.__init__cOs|j ||d¡dS)NÚ )rÚwrite)rÚmsgÚargsÚkwargsr r r ÚdebugpszPlyLogger.debugcOs|j d||d¡dS)Nz WARNING: r )rr )rrrrr r r ÚwarninguszPlyLogger.warningcOs|j d||d¡dS)NzERROR: r )rr )rrrrr r r ÚerrorxszPlyLogger.errorN) Ú__name__Ú __module__Ú __qualname__r rÚinforrÚcriticalr r r r rls rc@seZdZdd„Zdd„ZdS)Ú NullLoggercCs|S)Nr )rÚnamer r r Ú__getattribute__szNullLogger.__getattribute__cOs|S)Nr )rrrr r r Ú__call__‚szNullLogger.__call__N)rrrrrr r r r r~src@s eZdZdS)Ú YaccErrorN)rrrr r r r r†srcCsPt|ƒ}d|krt|ƒ}t|ƒtkr4|dt…d}dt|ƒjt|ƒ|f}|S)Nr z ...z<%s @ 0x%x> (%s))ÚreprÚlenÚ resultlimitÚtyperÚid)ÚrÚrepr_strÚresultr r r Ú format_resultŠs r&cCsBt|ƒ}d|krt|ƒ}t|ƒdkr(|Sdt|ƒjt|ƒfSdS)Nr éz <%s @ 0x%x>)rrr!rr")r#r$r r r Úformat_stack_entry”s  r(aPLY: Don't use global functions errok(), token(), and restart() in p_error(). Instead, invoke the methods on the associated parser instance: def p_error(p): ... # Use parser.errok(), parser.token(), parser.restart() ... parser = yacc.yacc() cCst t¡tƒS)N)ÚwarningsÚwarnÚ_warnmsgÚ_errokr r r r Úerrok®s r-cCst t¡tƒS)N)r)r*r+Ú_restartr r r r Úrestart²s r/cCst t¡tƒS)N)r)r*r+Ú_tokenr r r r Útoken¶s r1cCs>|ja|ja|ja||ƒ}y bbbWntk r8YnX|S)N)r-r,r1r0r/r.Ú NameError)Ú errorfuncr1Úparserr#r r r Úcall_errorfunc»s r5c@seZdZdd„Zdd„ZdS)Ú YaccSymbolcCs|jS)N)r!)rr r r Ú__str__ÙszYaccSymbol.__str__cCst|ƒS)N)Ústr)rr r r Ú__repr__ÜszYaccSymbol.__repr__N)rrrr7r9r r r r r6Øsr6c@sneZdZddd„Zdd„Zdd„Zdd „Zd d „Zd d „Zdd„Z dd„Z dd„Z dd„Z dd„Z dd„ZdS)ÚYaccProductionNcCs||_||_d|_d|_dS)N)ÚsliceÚstackÚlexerr4)rÚsr<r r r r észYaccProduction.__init__cCsBt|tƒrdd„|j|DƒS|dkr2|j|jS|j|jSdS)NcSsg|] }|j‘qSr )Úvalue)Ú.0r>r r r ú ñsz.YaccProduction.__getitem__..r)Ú isinstancer;r?r<)rÚnr r r Ú __getitem__ïs   zYaccProduction.__getitem__cCs||j|_dS)N)r;r?)rrCÚvr r r Ú __setitem__÷szYaccProduction.__setitem__cCsdd„|j||…DƒS)NcSsg|] }|j‘qSr )r?)r@r>r r r rAûsz/YaccProduction.__getslice__..)r;)rÚiÚjr r r Ú __getslice__úszYaccProduction.__getslice__cCs t|jƒS)N)rr;)rr r r Ú__len__ýszYaccProduction.__len__cCst|j|ddƒS)NÚlinenor)Úgetattrr;)rrCr r r rKszYaccProduction.linenocCs||j|_dS)N)r;rK)rrCrKr r r Ú set_linenoszYaccProduction.set_linenocCs,t|j|ddƒ}t|j|d|ƒ}||fS)NrKrÚ endlineno)rLr;)rrCÚ startlineÚendliner r r ÚlinespanszYaccProduction.linespancCst|j|ddƒS)NÚlexposr)rLr;)rrCr r r rR szYaccProduction.lexposcCs||j|_dS)N)r;rR)rrCrRr r r Ú set_lexposszYaccProduction.set_lexposcCs,t|j|ddƒ}t|j|d|ƒ}||fS)NrRrÚ endlexpos)rLr;)rrCÚstartposÚendposr r r ÚlexspanszYaccProduction.lexspancCst‚dS)N)Ú SyntaxError)rr r r rszYaccProduction.error)N)rrrr rDrFrIrJrKrMrQrRrSrWrr r r r r:ès r:c@s\eZdZdd„Zdd„Zdd„Zdd„Zd d „Zdd d„Zddd„Z ddd„Z ddd„Z d S)ÚLRParsercCs0|j|_|j|_|j|_||_| ¡d|_dS)NT) Úlr_productionsÚ productionsÚ lr_actionÚactionÚlr_gotoÚgotor3Úset_defaulted_statesÚerrorok)rZlrtabZerrorfr r r r s zLRParser.__init__cCs d|_dS)NT)ra)rr r r r-(szLRParser.errokcCs@|jdd…=|jdd…=tƒ}d|_|j |¡|j d¡dS)Nz$endr)Ú statestackÚsymstackr6r!Úappend)rÚsymr r r r/+s    zLRParser.restartcCsTi|_xH|j ¡D]:\}}t| ¡ƒ}t|ƒdkr|ddkr|d|j|<qWdS)Nér)Údefaulted_statesr]ÚitemsÚlistÚvaluesr)rÚstateÚactionsÚrulesr r r r`;s  zLRParser.set_defaulted_statescCs i|_dS)N)rg)rr r r Údisable_defaulted_statesBsz!LRParser.disable_defaulted_statesNFcCsZ|str.t|tƒrttjƒ}| |||||¡S|rD| |||||¡S| |||||¡SdS)N) Ú yaccdevelrBÚintrÚsysÚstderrÚ parsedebugÚparseoptÚparseopt_notrack)rÚinputr=rÚtrackingÚ tokenfuncr r r ÚparseEs  zLRParser.parsec CsÈd}g}|j}|j} |j} |j} tdƒ} d} | d¡|sLddlm}|j}|| _|| _ |dk rj|  |¡|dkrz|j }n|}||_ g}||_ g}||_ || _d}| d¡tƒ}d|_| |¡d}xú| d¡| d|¡|| kr,|s|sü|ƒ}n| ¡}|stƒ}d|_|j}|| |¡}n| |}| d|| ¡| d d d  d d „|Dƒdd…¡t|ƒf ¡¡|dk rˆ|dkrÂ| |¡|}| d|¡| |¡d}| rÊ| d8} qÊ|dkrL| | }|j}|j}tƒ}||_d|_|r@| d|jdd dd „|| d…Dƒ¡d| |d||¡n| d|jg| |d|¡|r|| dd…}||d<|rÄ|d}|j|_|j|_|d}t|d|jƒ|_t|d|jƒ|_|| _ yd|| d…=||_!| "| ¡|| d…=| dt#| dƒ¡| |¡| |d|}| |¡WqÊt$k rŠ| |¡| %|dd…¡| ¡|d}d|_d|_|}t&} d|_'YqÊXqÊn¼|r¦|j|_|j|_|g}|| _ yL||_!| "| ¡| dt#| dƒ¡| |¡| |d|}| |¡WqÊt$k rH| |¡| ¡|d}d|_d|_|}t&} d|_'YqÊXqÊ|dkrˆ|d}t|ddƒ}| dt#|ƒ¡| d¡|S|dkr¸| (dd d  dd „|Dƒdd…¡t|ƒf ¡¡| dksØ|j'r t&} d|_'|}|jdkröd}|j)r>|rt*|dƒs||_||_!t+|j)||ƒ}|j'rž|}d}qÊn`|rŽt*|d ƒrX|j}nd}|rzt,j- .d!||jf¡nt,j- .d"|j¡nt,j- .d#¡dSnt&} t|ƒdkrÖ|jdkrÖd}d}d}|dd…=qÊ|jdkrædS|jdkrˆ|d}|jdkr2|r,t|d |jƒ|_t|d$|jƒ|_d}qÊtƒ}d|_t*|d ƒrX|j|_|_t*|d$ƒrr|j|_|_||_| |¡|}qÊ| ¡}|r¦|j|_|j|_| ¡|d}qÊt/d%ƒ‚qÊWdS)&NrzPLY: PARSE DEBUG STARTrf)Úlexz$endÚz State : %sz#Defaulted state %s: Reduce using %dz Stack : %sz%s . %sú cSsg|] }|j‘qSr )r!)r@Úxxr r r rA³sz'LRParser.parsedebug..z Action : Shift and goto state %sz3Action : Reduce rule [%s] with %s and goto state %dú[ú,cSsg|]}t|jƒ‘qSr )r(r?)r@Z_vr r r rAÖsú]éÿÿÿÿrNrTz Result : %srFr?zDone : Returning %szPLY: PARSE DEBUG ENDz Error : %scSsg|] }|j‘qSr )r!)r@r}r r r rADsr=rKz(yacc: Syntax error at line %d, token=%s zyacc: Syntax error, token=%sz yacc: Parse error in input. EOF rRzyacc: internal parser error!!! )0r]r_r[rgr:rr{rzr=r4rvr1rbrcr<rdr6r!rÚpopÚgetÚjoinr8Úlstriprrr?rKrRrLrNrTr;rkÚcallabler&rXÚextendÚ error_countrarr3Úhasattrr5rqrrr Ú RuntimeError) rrvr=rrwrxÚ lookaheadÚlookaheadstackrlr_ÚprodrgÚpsliceÚ errorcountrzÚ get_tokenrbrcÚerrtokenrerkÚltypeÚtÚpÚpnameÚplenÚtargÚt1rCr%ÚtokrKr r r rs^s~        .        $               .           zLRParser.parsedebugc Cstd}g}|j}|j} |j} |j} tdƒ} d} |sBddlm}|j}|| _|| _|dk r`|  |¡|dkrp|j }n|}||_ g}||_ g}||_ || _ d}| d¡tƒ}d|_| |¡d}x°|| kr|sò|sÚ|ƒ}n| ¡}|sòtƒ}d|_|j}|| |¡}n| |}|dk rh|dkrN| |¡|}| |¡d}| rÀ| d8} qÀ|dkrF| | }|j}|j}tƒ}||_d|_|rž|| dd…}||d<|ræ|d}|j|_|j|_|d}t|d|jƒ|_t|d|jƒ|_|| _yP|| d…=||_| | ¡|| d…=| |¡| |d|}| |¡WqÀtk r˜| |¡| |dd…¡| ¡|d}d|_d|_|}t } d |_!YqÀXqÀn¨|r´|j|_|j|_|g}|| _y8||_| | ¡| |¡| |d|}| |¡WqÀtk rB| |¡| ¡|d}d|_d|_|}t } d |_!YqÀXqÀ|dkrh|d}t|d dƒ}|S|dkrd| dks„|j!rLt } d |_!|}|jdkr¢d}|j"rê|rÂt#|d ƒsÂ||_||_t$|j"||ƒ}|j!rJ|}d}qÀn`|r:t#|d ƒr|j}nd}|r&t%j& 'd ||jf¡nt%j& 'd|j¡nt%j& 'd¡dSnt } t|ƒdkr‚|jdkr‚d}d}d}|dd…=qÀ|jdkr’dS|jdkr4|d}|jdkrÞ|rØt|d |jƒ|_t|d|jƒ|_d}qÀtƒ}d|_t#|d ƒr|j|_|_t#|dƒr|j|_|_||_| |¡|}qÀ| ¡}|rR|j|_|j|_| ¡|d}qÀt(dƒ‚qÀWdS)Nrrf)rzz$endrrNrTrFr?r=rKz(yacc: Syntax error at line %d, token=%s zyacc: Syntax error, token=%sz yacc: Parse error in input. EOF rRzyacc: internal parser error!!! ))r]r_r[rgr:r{rzr=r4rvr1rbrcr<rdr6r!r‚rƒrrr?rKrRrLrNrTr;rkr†rXr‡rˆrar3r‰r5rqrrr rŠ) rrvr=rrwrxr‹rŒrlr_rrgrŽrrzrrbrcr‘rerkr’r“r”r•r–r—r˜rCr%r™rKr r r rt¹sX                                  zLRParser.parseoptcCsÜd}g}|j}|j} |j} |j} tdƒ} d} |sBddlm}|j}|| _|| _|dk r`|  |¡|dkrp|j }n|}||_ g}||_ g}||_ || _ d}| d¡tƒ}d|_| |¡d}x|| kr|sò|sÚ|ƒ}n| ¡}|sòtƒ}d|_|j}|| |¡}n| |}|dk r |dkrN| |¡|}| |¡d}| rÀ| d8} qÀ|dkrê| | }|j}|j}tƒ}||_d|_|rX|| dd…}||d<|| _yP|| d…=||_| | ¡|| d…=| |¡| |d|}| |¡WqÀtk rR| |¡| |dd…¡| ¡|d}d|_d|_|}t} d|_YqÀXqÀn’|g}|| _y8||_| | ¡| |¡| |d|}| |¡WqÀtk ræ| |¡| ¡|d}d|_d|_|}t} d|_YqÀXqÀ|dkr |d}t|ddƒ}|S|dkrÌ| dks(|jrðt} d|_|}|jdkrFd}|jrŽ|rft|d ƒsf||_||_t |j||ƒ}|jrî|}d}qÀn`|rÞt|d ƒr¨|j!}nd}|rÊt"j# $d ||jf¡nt"j# $d |j¡nt"j# $d ¡dSnt} t|ƒdkr&|jdkr&d}d}d}|dd…=qÀ|jdkr6dS|jdkr²|d}|jdkr\d}qÀtƒ}d|_t|d ƒr‚|j!|_!|_%t|dƒrœ|j&|_&|_'||_| |¡|}qÀ| ¡}| ¡|d}qÀt(dƒ‚qÀWdS)Nrrf)rzz$endrrFr?r=rKz(yacc: Syntax error at line %d, token=%s zyacc: Syntax error, token=%sz yacc: Parse error in input. EOF rRzyacc: internal parser error!!! ))r]r_r[rgr:r{rzr=r4rvr1rbrcr<rdr6r!r‚rƒrrr?r;rkr†rXr‡rˆrarLr3r‰r5rKrqrrr rNrRrTrŠ)rrvr=rrwrxr‹rŒrlr_rrgrŽrrzrrbrcr‘rerkr’r“r”r•r–r—rCr%r™rKr r r ruës8                                  zLRParser.parseopt_notrack)NNFFN)NNFFN)NNFFN)NNFFN) rrrr r-r/r`rnryrsrtrur r r r rYs  ] 4rYz^[a-zA-Z0-9_-]+$c@sReZdZdZddd„Zdd„Zd d „Zd d „Zd d„Zdd„Z dd„Z dd„Z dS)Ú Productionr©ÚrightrNr{c Cs¨||_t|ƒ|_||_||_d|_||_||_||_t |jƒ|_ g|_ x$|jD]}||j krN|j   |¡qNWg|_ d|_ |jr˜d|jd |j¡f|_n d|j|_dS)Nz%s -> %sr|z %s -> )rÚtuplerÚnumberÚfuncr†ÚfileÚlineÚprecrÚusymsrdÚlr_itemsÚlr_nextr„r8) rržrrÚ precedencerŸr r¡r>r r r r !s$    zProduction.__init__cCs|jS)N)r8)rr r r r7?szProduction.__str__cCsdt|ƒdS)Nz Production(ú))r8)rr r r r9BszProduction.__repr__cCs t|jƒS)N)rr)rr r r rJEszProduction.__len__cCsdS)Nrfr )rr r r Ú __nonzero__HszProduction.__nonzero__cCs |j|S)N)r)rÚindexr r r rDKszProduction.__getitem__c CsŠ|t|jƒkrdSt||ƒ}y|j|j|d|_Wnttfk rTg|_YnXy|j|d|_Wntk r„d|_YnX|S)Nrf)rrÚLRItemÚ ProdnamesÚlr_afterÚ IndexErrorÚKeyErrorÚ lr_before)rrCr”r r r Úlr_itemOs   zProduction.lr_itemcCs|jr||j|_dS)N)rŸr†)rÚpdictr r r Úbind_szProduction.bind)r›Nr{r) rrrÚreducedr r7r9rJr¨rDr°r²r r r r ršs ršc@s,eZdZdd„Zdd„Zdd„Zdd„Zd S) ÚMiniProductioncCs.||_||_||_d|_||_||_||_dS)N)rrrŸr†r r¡r8)rr8rrrŸr r¡r r r r hszMiniProduction.__init__cCs|jS)N)r8)rr r r r7qszMiniProduction.__str__cCs d|jS)NzMiniProduction(%s))r8)rr r r r9tszMiniProduction.__repr__cCs|jr||j|_dS)N)rŸr†)rr±r r r r²xszMiniProduction.bindN)rrrr r7r9r²r r r r r´gs r´c@s$eZdZdd„Zdd„Zdd„ZdS)rªcCsZ|j|_t|jƒ|_|j|_||_i|_|j |d¡t|jƒ|_t|jƒ|_|j |_ dS)NÚ.) rrirržÚlr_indexÚ lookaheadsÚinsertrrr£)rr”rCr r r r –s   zLRItem.__init__cCs,|jrd|jd |j¡f}n d|j}|S)Nz%s -> %sr|z %s -> )rrr„)rr>r r r r7¡s zLRItem.__str__cCsdt|ƒdS)NzLRItem(r§)r8)rr r r r9¨szLRItem.__repr__N)rrrr r7r9r r r r rª•s rªcCs:t|ƒd}x(|dkr4|||kr*||S|d8}qWdS)Nrfr)r)ÚsymbolsÚ terminalsrGr r r Úrightmost_terminal°s     r»c@s eZdZdS)Ú GrammarErrorN)rrrr r r r r¼Àsr¼c@s’eZdZdd„Zdd„Zdd„Zdd„Zd$d d „Zd%dd„Zdd„Z dd„Z dd„Z dd„Z dd„Z dd„Zdd„Zdd„Zd&d d!„Zd"d#„Zd S)'ÚGrammarcCsfdg|_i|_i|_i|_x|D]}g|j|<q Wg|jd<i|_i|_i|_i|_tƒ|_ d|_ dS)Nr) Ú Productionsr«ÚProdmapÚ TerminalsÚ NonterminalsÚFirstÚFollowÚ PrecedenceÚsetÚUsedPrecedenceÚStart)rrºÚtermr r r r Äs  zGrammar.__init__cCs t|jƒS)N)rr¾)rr r r rJèszGrammar.__len__cCs |j|S)N)r¾)rr©r r r rDëszGrammar.__getitem__cCsL|jdgkstdƒ‚||jkr*td|ƒ‚|dkr:tdƒ‚||f|j|<dS)Nz2Must call set_precedence() before add_production()z,Precedence already specified for terminal %r)ÚleftrœÚnonassocz:Associativity must be one of 'left','right', or 'nonassoc')r¾ÚAssertionErrorrÄr¼)rrÈÚassocÚlevelr r r Úset_precedenceös   zGrammar.set_precedenceNr{rc Cs¾||jkrtd|||fƒ‚|dkr6td|||fƒ‚t |¡sRtd|||fƒ‚x¦t|ƒD]š\}}|ddkrÐyJt|ƒ}t|ƒdkrštd||||fƒ‚||jkr®g|j|<|||<w\Wntk rÎYnXt |¡s\|d kr\td ||||fƒ‚q\Wd |kr†|d d kr"td ||fƒ‚|d d kr@td||fƒ‚|d } |j  | ¡} | sntd||| fƒ‚n |j   | ¡|d d…=nt ||jƒ} |j  | d¡} d||f} | |j krä|j | } td||| fd| j| jfƒ‚t|jƒ} ||jkrg|j|<xR|D]J}||jkr,|j| | ¡n&||jkrBg|j|<|j| | ¡q Wt| ||| |||ƒ}|j |¡||j | <y|j| |¡Wn"tk r¸|g|j|<YnXdS)Nz7%s:%d: Illegal rule name %r. Already defined as a tokenrz5%s:%d: Illegal rule name %r. error is a reserved wordz%s:%d: Illegal rule name %rrz'"rfzA%s:%d: Literal token %s in rule %r may only be a single characterz%precz!%s:%d: Illegal name %r in rule %rrz+%s:%d: Syntax error. Nothing follows %%precéþÿÿÿzH%s:%d: Syntax error. %%prec can only appear at the end of a grammar rulez/%s:%d: Nothing known about the precedence of %r)rœrz%s -> %sz%s:%d: Duplicate rule %s. zPrevious definition at %s:%d)rÀr¼Ú_is_identifierÚmatchÚ enumerateÚevalrrXrÄrƒrÆÚaddr»r¿r r¡r¾rÁrdršr«r®)rÚprodnameÚsymsrŸr r¡rCr>ÚcZprecnameZprodprecÚmapÚmZpnumberr“r”r r r Úadd_productionsp                        zGrammar.add_productioncCsT|s|jdj}||jkr&td|ƒ‚tdd|gƒ|jd<|j| d¡||_dS)Nrfzstart symbol %s undefinedrzS')r¾rrÁr¼ršrdrÇ)rÚstartr r r Ú set_startcs   zGrammar.set_startcs>‡‡‡fdd„‰tƒ‰ˆˆjdjdƒ‡fdd„ˆjDƒS)NcsJ|ˆkr dSˆ |¡x.ˆj |g¡D]}x|jD] }ˆ|ƒq2Wq&WdS)N)rÔr«rƒr)r>r”r#)Úmark_reachable_fromÚ reachablerr r rÝvs   z5Grammar.find_unreachable..mark_reachable_fromrcsg|]}|ˆkr|‘qSr r )r@r>)rÞr r rA€sz,Grammar.find_unreachable..)rÅr¾rrÁ)rr )rÝrÞrr Úfind_unreachablesszGrammar.find_unreachablec Csøi}x|jD] }d||<q Wd|d<x|jD] }d||<q,Wxpd}x`|j ¡D]R\}}xH|D]@}x |jD]}||shd}PqhWd}|r\||sšd||<d}Pq\WqNW|s>Pq>Wg} x@| ¡D]4\}} | s¼||jkræ||jkræ|dkræq¼|  |¡q¼W| S)NTz$endFr)rÀrÁr«rhrrd) rZ terminatesr“rCÚ some_changeÚplr”r>Z p_terminatesÚinfiniterÈr r r Úinfinite_cyclesŠs:       zGrammar.infinite_cyclescCsXg}xN|jD]D}|sq x8|jD].}||jkr||jkr|dkr| ||f¡qWq W|S)Nr)r¾rr«rÀrd)rr%r”r>r r r Úundefined_symbolsÊs  zGrammar.undefined_symbolscCs6g}x,|j ¡D]\}}|dkr|s| |¡qW|S)Nr)rÀrhrd)rZ unused_tokr>rEr r r Úunused_terminalsÛs  zGrammar.unused_terminalscCs<g}x2|j ¡D]$\}}|s|j|d}| |¡qW|S)Nr)rÁrhr«rd)rZ unused_prodr>rEr”r r r Ú unused_rulesês zGrammar.unused_rulescCsDg}x:|jD]0}||jks ||jks | ||j|df¡q W|S)Nr)rÄrÀrÆrd)rZunusedZtermnamer r r Úunused_precedenceûs  zGrammar.unused_precedencecCs`g}xV|D]D}d}x2|j|D]$}|dkr0d}q||kr| |¡qW|rLq Pq W| d¡|S)NFzT)rÂrd)rÚbetar%ÚxZx_produces_emptyrr r r Ú_first s  zGrammar._firstcCsÀ|jr |jSx|jD]}|g|j|<qWdg|jd<x|jD]}g|j|<qT) rÃrÂrërÁr¾rrÒrrêrdr) rrÛÚkÚdidaddr”rGÚBZfstZhasemptyrr r r Úcompute_followSs<     zGrammar.compute_followc CsÔxÎ|jD]Ä}|}d}g}x¬|t|ƒkr,d}ntt||ƒ}y|j|j|d|_Wnttfk rng|_YnXy|j|d|_Wntk ržd|_YnX||_ |s¬P|  |¡|}|d7}qW||_ qWdS)Nrrf) r¾rrªr«rr¬r­r®r¯r¥rdr¤)rr”ZlastlrirGr¤Zlrir r r Ú build_lritemsŽs.       zGrammar.build_lritems)Nr{r)N)N)rrrr rJrDrÎrÚrÜrßrãrärårærçrêrërïrðr r r r r½Ãs $  T @#% ;r½c@s eZdZdS)Ú VersionErrorN)rrrr r r r rñ²srñc@s,eZdZdd„Zdd„Zdd„Zdd„Zd S) ÚLRTablecCsd|_d|_d|_d|_dS)N)r\r^rZÚ lr_method)rr r r r ¶szLRTable.__init__cCs~t|tjƒr|}ntd|ƒtj|}|jtkr:tdƒ‚|j |_ |j |_ g|_ x|jD]}|j  t|Ž¡qXW|j|_|jS)Nz import %sz&yacc table file version is out of date)rBÚtypesÚ ModuleTypeÚexecrqÚmodulesZ _tabversionÚ__tabversion__rñZ _lr_actionr\Z_lr_gotor^rZZ_lr_productionsrdr´Z _lr_methodróZ _lr_signature)rÚmodulerr”r r r Ú read_table¼s     zLRTable.read_tablecCsÆy ddl}Wntk r(ddl}YnXtj |¡s:t‚t|dƒ}| |¡}|tkr^t dƒ‚| |¡|_ | |¡}| |¡|_ | |¡|_ | |¡}g|_ x|D]}|j  t|Ž¡q¢W| ¡|S)NrÚrbz&yacc table file version is out of date)ÚcPickleÚ ImportErrorÚpickleÚosÚpathÚexistsÚopenÚloadrørñrór\r^rZrdr´Úclose)rÚfilenamerþZin_fZ tabversionÚ signaturer[r”r r r Ú read_pickleÐs(          zLRTable.read_picklecCsx|jD]}| |¡qWdS)N)rZr²)rr±r”r r r Úbind_callablesìs zLRTable.bind_callablesN)rrrr rúrrr r r r ròµsròc CsTi}x|D] }d||<q Wg}i}x,|D]$}||dkr(t|||||||ƒq(W|S)Nr)Útraverse)ÚXÚRÚFPÚNrér<ÚFr r r Údigraph s    rc Cs | |¡t|ƒ}|||<||ƒ||<||ƒ}xr|D]j} || dkrXt| ||||||ƒt|||| ƒ||<x.| | g¡D]} | ||kr||| | ¡q|Wq4W|||krt||d<||||d<| ¡} x2| |krt||d<||||d<| ¡} qÖWdS)Nrr)rdrr ÚminrƒÚMAXINTr‚) rér r<rr r r ÚdÚrelÚyÚaÚelementr r r r s(        r c@s eZdZdS)Ú LALRErrorN)rrrr r r r r+src@s’eZdZd$dd„Zdd„Zdd„Zd d „Zd d „Zd d„Zdd„Z dd„Z dd„Z dd„Z dd„Z dd„Zdd„Zdd„Zd%d d!„Zd&d"d#„ZdS)'ÚLRGeneratedTablerNcCsž|dkrtd|ƒ‚||_||_|s*tƒ}||_i|_i|_|j|_i|_ i|_ d|_ d|_ d|_ g|_g|_g|_|j ¡|j ¡|j ¡| ¡dS)N)ZSLRrzUnsupported method %sr)rÚgrammarrórÚlogr\r^r¾rZÚ lr_goto_cacheÚ lr0_cidhashÚ _add_countZ sr_conflictZ rr_conflictÚ conflictsÚ sr_conflictsÚ rr_conflictsrðrërïÚlr_parse_table)rrÚmethodrr r r r 6s,    zLRGeneratedTable.__init__cCsz|jd7_|dd…}d}xV|rtd}xH|D]@}x:|jD]0}t|ddƒ|jkrRq:| |j¡|j|_d}q:Wq.Wq W|S)NrfTFÚ lr0_addedr)rr¬rLrdr¥r#)rÚIÚJrírHrér r r Ú lr0_closure[s    zLRGeneratedTable.lr0_closurec CsÔ|j t|ƒ|f¡}|r|S|j |¡}|s:i}||j|<g}xP|D]H}|j}|rD|j|krD| t|ƒ¡}|s~i}||t|ƒ<| |¡|}qDW| d¡}|s¾|r¶| |¡}||d<n||d<||jt|ƒ|f<|S)Nz$end)rrƒr"r¥r¯rdr&) rr$réÚgr>Zgsr”rCÚs1r r r Úlr0_gotous2        zLRGeneratedTable.lr0_gotoc CsÞ| |jjdjg¡g}d}x"|D]}||jt|ƒ<|d7}q"Wd}x”|t|ƒkrØ||}|d7}i}x$|D]}x|jD] }d||<qxWqlWxH|D]@}| ||¡}|r’t|ƒ|jkr¶q’t|ƒ|jt|ƒ<|  |¡q’WqFW|S)Nrrf) r&rr¾r¥rr"rr£r)rd) rÚCrGr$ZasymsÚiir>rér'r r r Ú lr0_items˜s(      zLRGeneratedTable.lr0_itemscCs‚tƒ}d}xrxV|jjdd…D]B}|jdkr:| |j¡qx$|jD]}||krBPqBW| |j¡qWt|ƒ|krrPt|ƒ}q W|S)Nrrf)rÅrr¾rrÔrr)rÚnullableZ num_nullabler”r“r r r Úcompute_nullable_nonterminalsÐs     z.LRGeneratedTable.compute_nullable_nonterminalscCsrg}xht|ƒD]\\}}xR|D]J}|j|jdkr||j|jdf}|d|jjkr||kr| |¡qWqW|S)Nrf)rÒr¶rrrrÁrd)rr*ÚtransZstatenorkr”r“r r r Úfind_nonterminal_transitionsís z-LRGeneratedTable.find_nonterminal_transitionsc Cs”|\}}g}| |||¡}xJ|D]B}|j|jdkr"|j|jd} | |jjkr"| |kr"| | ¡q"W|dkr||jjdjdkr| d¡|S)Nrfrz$end)r)r¶rrrrÀrdr¾) rr*r/r-rkr Útermsr'r”rr r r Ú dr_relation s   zLRGeneratedTable.dr_relationc Csvg}|\}}| |||¡}|j t|ƒd¡}xB|D]:} | j| jdkr4| j| jd} | |kr4| || f¡q4W|S)Nrrf)r)rrƒr"r¶rrrd) rr*r/Úemptyrrkr r'rHr”rr r r Úreads_relation s zLRGeneratedTable.reads_relationcCsÞi}i}i}x|D] }d||<qWx°|D]¦\}} g} g} xR||D]D} | j| krZqH| j} |}x¦| | jdkr | d} | j| }||f|kræ| d}xH|| jkrÖ| j||jjkr¼P| j||krÌP|d}qžW|  ||f¡| |||¡}|j  t |ƒd¡}qfWx€||D]t}|j| jkr,q|j| jkr>qd}xD||jkrx|j|| j|dkrlP|d}qDW|  ||f¡qWqHWx2| D]*}||kr®g||<|| || f¡q˜W| ||| f<q*W||fS)Nrfrr) rr¶rrrrÀrdr)rrƒr")rr*r/r-ZlookdictZ includedictZdtransr“rkr ZlookbZincludesr”r¶rHÚlir'r#rGr r r Úcompute_lookback_includesD sX         z*LRGeneratedTable.compute_lookback_includescs0‡‡‡fdd„}‡‡‡fdd„}t|||ƒ}|S)Ncsˆ ˆ|ˆ¡S)N)r2)ré)r*r-rr r Ú• óz4LRGeneratedTable.compute_read_sets..csˆ ˆ|ˆ¡S)N)r4)ré)r*r-rr r r7– r8)r)rr*Úntransr-r r rr )r*r-rr Úcompute_read_sets” s z"LRGeneratedTable.compute_read_setscs(‡fdd„}‡fdd„}t|||ƒ}|S)Ncsˆ|S)Nr )ré)Úreadsetsr r r7« r8z6LRGeneratedTable.compute_follow_sets..cs ˆ |g¡S)N)rƒ)ré)Úinclsetsr r r7¬ r8)r)rr9r;r<r r rr )r<r;r Úcompute_follow_setsª s   z$LRGeneratedTable.compute_follow_setsc Csxxr| ¡D]f\}}x\|D]T\}}||jkr4g|j|<| |g¡}x*|D]"}||j|krF|j| |¡qFWqWq WdS)N)rhr·rƒrd) rZ lookbacksZ followsetr/Zlbrkr”rrr r r Úadd_lookaheads¼ s    zLRGeneratedTable.add_lookaheadscCsP| ¡}| |¡}| |||¡}| |||¡\}}| |||¡}| ||¡dS)N)r.r0r:r6r=r>)rr*r-r/r;ZlookdZincludedZ followsetsr r r Úadd_lalr_lookaheadsÎ s  z$LRGeneratedTable.add_lalr_lookaheadsc$ Cs0|jj}|jj}|j}|j}|j}i}| d|j¡| ¡}|jdkrP|  |¡d}xÔ|D]Ê} g} i} i} i} | d¡| d|¡| d¡x| D]}| d|j |¡q˜W| d¡xü| D]ò}|j |j dkr$|j dkrød| d <|| d <q¶|jdkr|j|}n|jj|j }x”|D]ö}|  ||d |j |ff¡|  |¡}|dk rô|dkr:| |d ¡\}}||j j\}}||ks¢||krö|d krö|j | |<|| |<|sà|sà| d |¡|j ||df¡||j jd7_nB||kr|dkrd| |<n$|sò| d|¡|j ||df¡n¸|dkræ|| }||j }|j|jkr®|j | |<|| |<||}}||j jd7_||j jd8_n ||}}|j |||f¡| d|| |j | |¡n td|ƒ‚n(|j | |<|| |<||j jd7_q&WqÂ|j }|j|d}||jjkrÂ| | |¡}|j t|ƒd¡}|dkrÂ|  ||d|f¡|  |¡}|dk r¦|dkr´||kr¤td|ƒ‚nð|dkr˜| |d ¡\}}|| |j j\}}||ks||krN|dkrN|| |j jd8_|| |<|| |<|s–| d|¡|j ||df¡nH||krl|dkrld| |<n*|s¤|s¤| d |¡|j ||df¡n td|ƒ‚qÂ|| |<|| |<qÂWi}xF| D]>\}}}|| krÄ|| |krÄ| d||¡d|||f<qÄW| d¡d}xX| D]P\}}}|| kr|| |k r||f|kr| d||¡d}d|||f<qW|r~| d¡i} x6| D].}!x&|!jD]}"|"|jjkr”d| |"<q”WqˆWxL| D]D}#| | |#¡}|j t|ƒd¡}|dkrÀ|| |#<| d|#|¡qÀW| ||<| ||<| ||<|d7}q\WdS)NzParsing method: %srrr{zstate %dz (%d) %srfzS'z$endzreduce using rule %d (%s))rœrrÉz3 ! shift/reduce conflict for %s resolved as reduceÚreducerÊz2 ! shift/reduce conflict for %s resolved as shiftÚshiftz= ! reduce/reduce conflict for %s resolved using rule %d (%s)zUnknown conflict in state %drzshift and go to state %dz Shift/shift conflict in state %drœz %-15s %sz ! %-15s [ %s ]z" %-30s shift and go to state %d) rr¾rÄr^r\rrrór,r?ržrr¶rr·rÃrdrƒr¢rr³r¡r rrrÀr)rr"rr£rÁ)$rr¾rÄr_r]rZactionpr*Ústr$ZactlistZ st_actionZ st_actionpZst_gotor”Zlaheadsrr#ZsprecZslevelZrprecZrlevelZoldpÚppZchosenpZrejectprGr'rHZ _actprintrÙZnot_usedZnkeysr+r>rCr r r r!æ s                                               zLRGeneratedTable.lr_parse_tabler{c CsÎt|tjƒrtdƒ‚| d¡d}tj ||¡d}ylt|dƒ}|  dtj  |¡t |j |f¡d}|rti}xf|j  ¡D]X\} } xN|  ¡D]B\} } | | ¡} | s´ggf} | || <| d | ¡| d | ¡qŽWq|W|  d ¡xz| ¡D]n\}} |  d |¡x | dD]} |  d | ¡q W|  d ¡x | dD]} |  d | ¡q8W|  d ¡qìW|  d¡|  d¡nJ|  d¡x4|j  ¡D]&\}} |  d|d|d| f¡qŠW|  d¡|rÔi}xl|j ¡D]^\} } xR|  ¡D]F\} } | | ¡} | sggf} | || <| d | ¡| d | ¡qæWqÔW|  d¡x|| ¡D]p\}} |  d |¡x | dD]} |  d | ¡qjW|  d ¡x | dD]} |  d | ¡q–W|  d ¡qJW|  d¡|  d¡nJ|  d¡x4|j ¡D]&\}} |  d|d|d| f¡qêW|  d¡|  d¡xd|jD]Z}|jrl|  d|j|j|j|jtj  |j¡|jf¡n|  dt|ƒ|j|jf¡q0W|  d¡| ¡Wn&tk rÈ}z‚Wdd}~XYnXdS)Nz"Won't overwrite existing tabmodulerµrz.pyÚwz # %s # This file is automatically generated. Do not edit. # pylint: disable=W,C,R _tabversion = %r _lr_method = %r _lr_signature = %r rfrz _lr_action_items = {z%r:([z%r,z],[z]),z} z _lr_action = {} for _k, _v in _lr_action_items.items(): for _x,_y in zip(_v[0],_v[1]): if not _x in _lr_action: _lr_action[_x] = {} _lr_action[_x][_k] = _y del _lr_action_items z _lr_action = { z (%r,%r):%r,z _lr_goto_items = {z¹ _lr_goto = {} for _k, _v in _lr_goto_items.items(): for _x, _y in zip(_v[0], _v[1]): if not _x in _lr_goto: _lr_goto[_x] = {} _lr_goto[_x][_k] = _y del _lr_goto_items z _lr_goto = { z_lr_productions = [ z (%r,%r,%d,%r,%r,%d), z (%r,%r,%d,None,None,None), z] )rBrôrõÚIOErrorÚsplitrÿrr„rr Úbasenamerørór\rhrƒrdr^rZrŸr8rrr r¡r)rÚ tabmoduleÚ outputdirrZbasemodulenamerrZsmallerrhr>ZndrrErGrìr”Úer r r Ú write_table§ sŽ        "      "   "  zLRGeneratedTable.write_tablec Csy ddl}Wntk r(ddl}YnXt|dƒÄ}| t|t¡| |j|t¡| ||t¡| |j|t¡| |j |t¡g}x^|j D]T}|j rÄ|  |j |j|j|j tj |j¡|jf¡qŽ|  t |ƒ|j|jdddf¡qŽW| ||t¡WdQRXdS)NrÚwb)rürýrþrÚdumprøÚpickle_protocolrór\r^rZrŸrdr8rrrÿrrGr r¡)rrrrþÚoutfZoutpr”r r r Ú pickle_table" s    ,"zLRGeneratedTable.pickle_table)rN)r{r{)r{)rrrr r&r)r,r.r0r2r4r6r:r=r>r?r!rKrPr r r r r5s" %#8+PB {rcCs0t |¡}|j ¡}|j|jkr,| |j¡|S)N)rqÚ _getframeÚ f_globalsÚcopyÚf_localsÚupdate)ÚlevelsrZldictr r r Úget_caller_module_dictE s     rWc Csg}| ¡}d}|}xê|D]â}|d7}| ¡}|s4qyˆ|ddkrh|sVtd||fƒ‚|} |dd…} n@|d} | }|dd…} |d} | dkr¨| dkr¨td||fƒ‚| ||| | f¡Wqtk rÒ‚Yqtk rútd ||| ¡fƒ‚YqXqW|S) Nrfrú|z%s:%d: Misplaced '|'éú:z::=z!%s:%d: Syntax error. Expected ':'z%s:%d: Syntax error in rule %r)Ú splitlinesrFrXrdÚ ExceptionÚstrip) Údocr r¡rZpstringsZlastpZdlineZpsr”rÕrÖZassignr r r Ú parse_grammarQ s6    r_c@s†eZdZd dd„Zdd„Zdd„Zdd „Zd d „Zd d „Zdd„Z dd„Z dd„Z dd„Z dd„Z dd„Zdd„Zdd„Zdd„ZdS)!Ú ParserReflectNcCsL||_d|_d|_d|_tƒ|_g|_d|_|dkrBtt j ƒ|_ n||_ dS)NF) r±rÛÚ error_funcÚtokensrÅr÷rrrrqrrr)rr±rr r r r { szParserReflect.__init__cCs,| ¡| ¡| ¡| ¡| ¡dS)N)Ú get_startÚget_error_funcÚ get_tokensÚget_precedenceÚget_pfunctions)rr r r Úget_allŠ s zParserReflect.get_allcCs6| ¡| ¡| ¡| ¡| ¡| ¡|jS)N)Úvalidate_startÚvalidate_error_funcÚvalidate_tokensÚvalidate_precedenceÚvalidate_pfunctionsÚvalidate_modulesr)rr r r Ú validate_all’ szParserReflect.validate_allc Csžg}yv|jr| |j¡|jr:| d dd„|jDƒ¡¡|jrR| d |j¡¡x$|jD]}|drZ| |d¡qZWWnttfk r’YnXd |¡S)Nr{cSsg|]}d |¡‘qS)r{)r„)r@r”r r r rA¢ sz+ParserReflect.signature..r|r)rÛrdr¢r„rbÚpfuncsÚ TypeErrorÚ ValueError)rÚpartsrr r r rœ s  zParserReflect.signaturec Cs¸t d¡}x¨|jD]ž}yt |¡\}}Wntk r>wYnXi}xjt|ƒD]^\}}|d7}| |¡}|rN| d¡}|  |¡} | sŽ|||<qNt  |¡} |j   d| ||| ¡qNWqWdS)Nz\s*def\s+(p_[a-zA-Z_0-9]*)\(rfz;%s:%d: Function %s redefined. Previously defined on line %d) ÚreÚcompiler÷ÚinspectÚgetsourcelinesrErÒrÑÚgrouprƒÚ getsourcefilerr) rZfrerùÚlinesZlinenZ counthashr¡rÙrÚprevrr r r rn· s$       zParserReflect.validate_modulescCs|j d¡|_dS)NrÛ)r±rƒrÛ)rr r r rcÐ szParserReflect.get_startcCs&|jdk r"t|jtƒs"|j d¡dS)Nz'start' must be a string)rÛrBÚ string_typesrr)rr r r riÔ s  zParserReflect.validate_startcCs|j d¡|_dS)NÚp_error)r±rƒra)rr r r rdÚ szParserReflect.get_error_funccCs |jrœt|jtjƒrd}n*t|jtjƒr.d}n|j d¡d|_dS|jjj}|jjj }t   |j¡}|j   |¡|jjj|}|dkrœ|j d||¡d|_dS)Nrrfz2'p_error' defined, but is not a function or methodTz$%s:%d: p_error() requires 1 argument)rarBrôÚ FunctionTypeÚ MethodTyperrÚ__code__Úco_firstlinenoÚ co_filenamervÚ getmoduler÷rÔÚ co_argcount)rÚismethodZelineZefilerùZargcountr r r rjÞ s      z!ParserReflect.validate_error_funccCsr|j d¡}|s&|j d¡d|_dSt|ttfƒsJ|j d¡d|_dS|sd|j d¡d|_dSt|ƒ|_dS)NrbzNo token list is definedTztokens must be a list or tupleztokens is empty) r±rƒrrrBrirÚsortedrb)rrbr r r reô s    zParserReflect.get_tokenscCsZd|jkr |j d¡d|_dStƒ}x.|jD]$}||krH|j d|¡| |¡q.WdS)Nrz.Illegal token name 'error'. Is a reserved wordTzToken %r multiply defined)rbrrrÅrrÔ)rrºrCr r r rk s   zParserReflect.validate_tokenscCs|j d¡|_dS)Nr¦)r±rƒr¢)rr r r rf szParserReflect.get_precedencecCsg}|jrt|jttfƒs2|j d¡d|_dSxÐt|jƒD]Â\}}t|ttfƒsj|j d¡d|_dSt|ƒdkrŽ|j d|¡d|_dS|d}t|tƒs¶|j d¡d|_dSxH|dd…D]8}t|tƒsè|j d ¡d|_dS|  |||df¡qÄWq>W||_ dS) Nz"precedence must be a list or tupleTzBad precedence tablerYz?Malformed precedence entry %s. Must be (assoc, term, ..., term)rz)precedence associativity must be a stringrfz precedence items must be strings) r¢rBrirrrrÒrr|rdÚpreclist)rr‡rÍr”rÌrÈr r r rl s6       z!ParserReflect.validate_precedencecCsŠg}xj|j ¡D]\\}}| d¡r|dkr,qt|tjtjfƒrt|d|jj ƒ}t   |¡}|  ||||j f¡qW|jdd„d||_dS)NÚp_r}rcSs |dt|dƒ|d|dfS)NrrfrYr)r8)Z p_functionr r r r7F s z.ParserReflect.get_pfunctions..)Úkey)r±rhÚ startswithrBrôr~rrLr€rrvrƒrdÚ__doc__Úsortrp)rZ p_functionsrÚitemr¡rùr r r rg9 s zParserReflect.get_pfunctionsc Cs^g}t|jƒdkr(|j d¡d|_dSx"|jD]\}}}}t |¡}|j|}t|tj ƒrfd}nd}|j j |kr’|j d|||j ¡d|_q2|j j |krº|j d|||j ¡d|_q2|j sÖ|j d|||j ¡q2y,t|||ƒ} x| D]} | || f¡qêWWn:tk r<} z|j t| ƒ¡d|_Wdd} ~ XYnX|j |¡q2Wx|j ¡D]ô\} } |  d ¡rˆt| tjtj fƒrˆq\|  d ¡r˜q\|  d ¡r¼| d kr¼|j d | ¡t| tjƒrØ| j j dksöt| tj ƒr\| jj j dkr\| j r\y8| j  d ¡}|ddkr4|j d| j j| j j| ¡Wntk rLYnXq\W||_dS)Nrz+no rules of the form p_rulename are definedTrYrfz%%s:%d: Rule %r has too many argumentsz#%s:%d: Rule %r requires an argumentzA%s:%d: No documentation string specified in function %r (ignored)rˆZt_r}z%r not defined as a functionr|rZz9%s:%d: Possible grammar rule %r defined without p_ prefix)rrprrrvryr±rBrôrr€r„rr‹rr_rdrXr8r÷rÔrhrŠr~Ú__func__rFr‚rr­r)rrr¡rùrr^r rŸZreqargsZparsed_gr'rJrCrEr r r rmN s\            z!ParserReflect.validate_pfunctions)N)rrrr rhrorrnrcrirdrjrerkrfrlrgrmr r r r r`z s  r`c < s² |dkr t}| rd}| dkr&ttjƒ} ˆrž‡fdd„tˆƒDƒ} t| ƒ}d|krdtj|dj|d<d|kr¦d|kr¦ttj|ddƒr¦tj|dj |d<nt dƒ}| dkrt |t j ƒrÄ|j}nLd|krÖ|d}n:| d¡}d |dd …¡}td |ƒttj|dd ƒ}tj |¡} | d¡}|rNt |tƒrNd|krN|d|}|dk r`||d <t|| d }| ¡|jr„tdƒ‚| ¡}yŠtƒ}| r¦| | ¡}n | |¡}|sÀ||kry"| |j ¡t!||j"ƒ}|j#a#|St$k r}z|  %d|¡Wdd}~XYnXWnFt&k rH}z|  %t|ƒ¡Wdd}~XYnt'k r\YnX| dkrÐ|rÊytt(tj | |¡dƒƒ} Wn<t)k rÆ}z|  %d||f¡t*ƒ} Wdd}~XYnXnt*ƒ} |  +dt,¡d}| -¡ròtdƒ‚|j"s|  %d¡t.|j/ƒ}xZ|j0D]P\}}}y| 1|||¡Wn0t2k rb}z|  %d|¡Wdd}~XYnXqWxl|j3D]b\}}|\} }!}"}#y| 4|"|#|| |!¡Wn4t2k rÐ}z|  d|¡d}Wdd}~XYnXqrWy&|dkrò| 5|j6¡n | 5|¡Wn6t2k r4}z|  t|ƒ¡d}Wdd}~XYnX|rDtdƒ‚| 7¡}$x*|$D]"\}%}&|  d|&j8|&j9|%¡d}qRW| :¡}'|'rÌ|  +d ¡|  +d¡|  +d ¡x&|'D]}|  %d|¡|  +d|¡qªW|r|  +d ¡|  +d¡|  +d ¡x&t;|j<ƒD]\}(})|  +d|(|)¡qüW| =¡}*x$|*D]}&|  %d|&j8|&j9|&j>¡q&Wt?|'ƒdkr^|  %d¡t?|'ƒdkr||  %d t?|'ƒ¡t?|*ƒdkr”|  %d!¡t?|*ƒdkr²|  %d"t?|*ƒ¡|rŠ|  +d ¡|  +d#¡|  +d ¡t@|jAƒ}+|+ B¡x2|+D]*}|  +d$|d% d&d„|jA|Dƒ¡¡qîW|  +d ¡|  +d'¡|  +d ¡t@|jCƒ},|, B¡x2|,D]*}-|  +d$|-d% d(d„|jC|-Dƒ¡¡qRW|  +d ¡|rÜ| D¡}.x|.D]}/|  %d)|/¡qžW| E¡}0x|0D]}1|  d*|1¡d}qÂW| F¡}2x$|2D]\}}|  d+||¡d}qêW|rtdƒ‚|r*|  Gd,|¡tH||| ƒ}|r¨t?|jIƒ}3|3dkr\|  %d-¡n|3dkrr|  %d.|3¡t?|jJƒ}4|4dkr’|  %d/¡n|4dkr¨|  %d0|4¡|rÞ|jIs¾|jJrÞ|  %d ¡|  %d1¡|  %d ¡x&|jID]\}5}6}7|  %d2|6|5|7¡qäWtKƒ}8x‚|jJD]x\}5}9}:|5tL|9ƒtL|:ƒf|8kr8q|  %d3|5|9¡|  %d4|:|5¡|  %d3|5|9¡|  %d4|:|5¡|8 M|5tL|9ƒtL|:ƒf¡qWg};xJ|jJD]@\}5}9}:|:jNsš|:|;krš|  %d5|:¡|  %d5|:¡|; O|:¡qšW| rBy&| P|| |¡|tjk rtj|=Wn6t)k r@}z|  %d6||f¡Wdd}~XYnX| ry| Q| |¡Wn6t)k rŽ}z|  %d6| |f¡Wdd}~XYnX| |j ¡t!||j"ƒ}|j#a#|S)7Nrcsg|]}|tˆ|ƒf‘qSr )rL)r@rì)rùr r rA£ szyacc..Ú__file__rÚ __package__rYrµrz import %sr{rÛ)rzUnable to build parserz.There was a problem loading the table file: %rrDzCouldn't open %r. %sz5Created by PLY version %s (http://www.dabeaz.com/ply)Fz no p_error() function is definedz%sTz;%s:%d: Symbol %r used, but not defined as a token or a rulezUnused terminals:zToken %r defined, but not usedz %sr½z Rule %-5d %sz$%s:%d: Rule %r defined, but not usedrfzThere is 1 unused tokenzThere are %d unused tokenszThere is 1 unused rulezThere are %d unused rulesz'Terminals, with rules where they appearz %-20s : %sr|cSsg|] }t|ƒ‘qSr )r8)r@r>r r r rAM sz*Nonterminals, with rules where they appearcSsg|] }t|ƒ‘qSr )r8)r@r>r r r rAU szSymbol %r is unreachablez)Infinite recursion detected for symbol %rz0Precedence rule %r defined for unknown symbol %rzGenerating %s tablesz1 shift/reduce conflictz%d shift/reduce conflictsz1 reduce/reduce conflictz%d reduce/reduce conflictsz Conflicts:z7shift/reduce conflict for %s in state %d resolved as %sz;reduce/reduce conflict in state %d resolved using rule (%s)zrejected rule (%s) in state %dzRule (%s) is never reducedzCouldn't create %r. %s)RÚ tab_modulerrqrrÚdirÚdictr÷rr‰rrWrBrôrõrFr„rörLrÿrÚdirnamerƒr8r`rhrrrròrrúrr±rYraryr\rrñrýrrErrÚ __version__ror½rbr‡rÎr¼rrÚrÜrÛrär r¡rårÒr¾rærrrirÀrŒrÁrßrãrçrrrr rÅr"rÔr³rdrKrP)>s   7m H.rT   )