U §Ãq`kã @sddlZddlZddlZddlZddlZddlZddlZdZdZ dZ dZ dZ dZ dZdZd ZdZejddkrteZneZejZGd d „d eƒZGd d „d eƒZGdd„deƒZdd„Zdd„Zdada da!dZ"dd„Z#dd„Z$dd„Z%dd„Z&Gdd„dƒZ'Gdd „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ƒZ0Gd.d/„d/eƒZ1Gd0d1„d1eƒZ2Gd2d3„d3eƒZ3d4d5„Z4d6d7„Z5Gd8d9„d9eƒZ6Gd:d;„d;e3ƒZ7dd?„Z9Gd@dA„dAeƒZ:de de dddde ddddf dBdC„Z;dS)DéNz3.10Tz parser.outÚparsetabÚLALRéFé(c@s4eZdZdd„Zdd„ZeZdd„Zdd„ZeZd S) Ú PlyLoggercCs ||_dS©N)Úf)Úselfr©r ú9/tmp/pip-target-nv4zd3e_/lib/python/pycparser/ply/yacc.pyÚ__init__nszPlyLogger.__init__cOs|j ||d¡dS)NÚ ©rÚwrite©r ÚmsgÚargsÚkwargsr r r ÚdebugqszPlyLogger.debugcOs|j d||d¡dS)Nz WARNING: r rrr r r ÚwarningvszPlyLogger.warningcOs|j d||d¡dS)NzERROR: r rrr r r ÚerroryszPlyLogger.errorN) Ú__name__Ú __module__Ú __qualname__r rÚinforrÚcriticalr r r r rms rc@seZdZdd„Zdd„ZdS)Ú NullLoggercCs|Srr )r Únamer r r Ú__getattribute__€szNullLogger.__getattribute__cOs|Srr )r rrr r r Ú__call__ƒszNullLogger.__call__N)rrrrrr r r r rsrc@s eZdZdS)Ú YaccErrorN©rrrr r r r r ‡sr cCsPt|ƒ}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>)r"r#r%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ƒSr)ÚwarningsÚwarnÚ_warnmsgÚ_errokr r r r Úerrok¯s r1cCst t¡tƒSr)r-r.r/Ú_restartr r r r Úrestart³s r3cCst t¡tƒSr)r-r.r/Ú_tokenr r r r Útoken·s r5cCs>|ja|ja|ja||ƒ}z bbbWntk r8YnX|Sr)r1r0r5r4r3r2Ú NameError)Ú errorfuncr5Úparserr'r r r Úcall_errorfunc¼s r9c@seZdZdd„Zdd„ZdS)Ú YaccSymbolcCs|jSr©r%©r r r r Ú__str__ÚszYaccSymbol.__str__cCst|ƒSr©Ústrr<r r r Ú__repr__ÝszYaccSymbol.__repr__N)rrrr=r@r r r r r:Ùsr:c@sfeZdZddd„Zdd„Zdd„Zdd „Zd d „Zd d „Zdd„Z dd„Z dd„Z dd„Z dd„Z dS)ÚYaccProductionNcCs||_||_d|_d|_dSr)ÚsliceÚstackÚlexerr8)r ÚsrCr r r r êszYaccProduction.__init__cCsBt|tƒrdd„|j|DƒS|dkr2|j|jS|j|jSdS)NcSsg|] }|j‘qSr ©Úvalue©Ú.0rEr r r Ú òsz.YaccProduction.__getitem__..r)Ú isinstancerBrGrC©r Únr r r Ú __getitem__ðs   zYaccProduction.__getitem__cCs||j|_dSr)rBrG)r rMÚvr r r Ú __setitem__øszYaccProduction.__setitem__cCsdd„|j||…DƒS)NcSsg|] }|j‘qSr rFrHr r r rJüsz/YaccProduction.__getslice__..)rB)r ÚiÚjr r r Ú __getslice__ûszYaccProduction.__getslice__cCs t|jƒSr)r#rBr<r r r Ú__len__þszYaccProduction.__len__cCst|j|ddƒS)NÚlinenor©ÚgetattrrBrLr r r rUszYaccProduction.linenocCs||j|_dSr)rBrU)r rMrUr r r Ú set_linenoszYaccProduction.set_linenocCs,t|j|ddƒ}t|j|d|ƒ}||fS)NrUrÚ endlinenorV)r rMÚ startlineÚendliner r r ÚlinespanszYaccProduction.linespancCst|j|ddƒS)NÚlexposrrVrLr r r r] szYaccProduction.lexposcCs,t|j|ddƒ}t|j|d|ƒ}||fS)Nr]rÚ endlexposrV)r rMÚstartposÚendposr r r ÚlexspanszYaccProduction.lexspancCst‚dSr)Ú SyntaxErrorr<r r r rszYaccProduction.error)N)rrrr rNrPrSrTrUrXr\r]rarr r r r rAés rAc@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Úgotor7Úset_defaulted_statesÚerrorok)r ZlrtabZerrorfr r r r s zLRParser.__init__cCs d|_dSrd)rlr<r r r r1&szLRParser.errokcCs@|jdd…=|jdd…=tƒ}d|_|j |¡|j d¡dS)Nú$endr)Ú statestackÚsymstackr:r%Úappend)r Úsymr r r r3)s    zLRParser.restartcCsPi|_|j ¡D]:\}}t| ¡ƒ}t|ƒdkr|ddkr|d|j|<qdS©Nér)Údefaulted_statesrhÚitemsÚlistÚvaluesr#)r ÚstateÚactionsÚrulesr r r rk9s  zLRParser.set_defaulted_statescCs i|_dSr)rtr<r r r Údisable_defaulted_states@sz!LRParser.disable_defaulted_statesNFcCsZ|str.t|tƒrttjƒ}| |||||¡S|rD| |||||¡S| |||||¡SdSr) Ú yaccdevelrKÚintrÚsysÚstderrÚ parsedebugÚparseoptÚparseopt_notrack)r ÚinputrDrÚtrackingÚ tokenfuncr r r ÚparseCs  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}| 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Æ|dkrH| | }|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ƒ|_|| _ zd|| d…=||_!| "| ¡|| d…=| dt#| dƒ¡| |¡| |d|}| |¡WqÆt$k r†| |¡| %|dd…¡| ¡|d}d|_d|_|}t&} d|_'YqÆXqÆn¼|r¢|j|_|j|_|g}|| _ zL||_!| "| ¡| dt#| dƒ¡| |¡| |d|}| |¡WqÆt$k rD| |¡| ¡|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 ƒrT|j}nd}|rvt,j- .d!||jf¡nt,j- .d"|j¡nt,j- .d#¡dSnt&} t|ƒdkrÒ|jdkrÒd}d}d}|dd…=qÆ|jdkrâdS|jdkr„|d}|jdkr.|r(t|d |jƒ|_t|d$|jƒ|_d}qÆtƒ}d|_t*|d ƒrT|j|_|_t*|d$ƒrn|j|_|_||_| |¡|}qÆ| ¡}|r¢|j|_|j|_| ¡|d}qÆt/d%ƒ‚qÆdS)&NrzPLY: PARSE DEBUG STARTrs©ÚlexrmÚz State : %sz#Defaulted state %s: Reduce using %dz Stack : %sz%s . %sú cSsg|] }|j‘qSr r;©rIZxxr r r rJ±sz'LRParser.parsedebug..z Action : Shift and goto state %sz3Action : Reduce rule [%s] with %s and goto state %dú[ú,cSsg|]}t|jƒ‘qSr )r,rG)rIZ_vr r r rJÔsú]éÿÿÿÿrYr^z Result : %srFrGzDone : Returning %szPLY: PARSE DEBUG ENDz Error : %scSsg|] }|j‘qSr r;r‹r r r rJBsrDrUú(yacc: Syntax error at line %d, token=%s úyacc: Syntax error, token=%sú yacc: Parse error in input. EOF r]úyacc: internal parser error!!! )0rhrjrfrtrArr‰rˆrDr8rƒr5rnrorCrpr:r%rÚpopÚgetÚjoinr?Úlstriprr#rGrUr]rWrYr^rBrxÚcallabler*rbÚextendÚ error_countrlrr7Úhasattrr9r~rrÚ RuntimeError© r rƒrDrr„r…Ú lookaheadÚlookaheadstackryrjÚprodrtÚpsliceÚ errorcountrˆÚ get_tokenrnroÚerrtokenrqrxÚltypeÚtÚpÚpnameÚplenÚtargÚt1rMr)ÚtokrUr r r r€\s„        *ÿ        $þ ÿ              *ÿ          zLRParser.parsedebugc Csnd}g}|j}|j} |j} |j} tdƒ} d} |sBddlm}|j}|| _|| _|dk r`|  |¡|dkrp|j }n|}||_ g}||_ g}||_ || _ d}| d¡tƒ}d|_| |¡d}|| kr|sî|sÖ|ƒ}n| ¡}|sîtƒ}d|_|j}|| |¡}n| |}|dk rd|dkrJ| |¡|}| |¡d}| r¼| d8} q¼|dkrB| | }|j}|j}tƒ}||_d|_|rš|| dd…}||d<|râ|d}|j|_|j|_|d}t|d|jƒ|_t|d|jƒ|_|| _zP|| d…=||_| | ¡|| d…=| |¡| |d|}| |¡Wq¼tk r”| |¡| |dd…¡| ¡|d}d|_d|_|}t } d |_!Yq¼Xq¼n¨|r°|j|_|j|_|g}|| _z8||_| | ¡| |¡| |d|}| |¡Wq¼tk r>| |¡| ¡|d}d|_d|_|}t } d |_!Yq¼Xq¼|dkrd|d}t|d dƒ}|S|dkr`| dks€|j!rHt } d |_!|}|jdkržd}|j"ræ|r¾t#|d ƒs¾||_||_t$|j"||ƒ}|j!rF|}d}q¼n`|r6t#|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|jdkr0|d}|jdkrÚ|rÔt|d |jƒ|_t|d|jƒ|_d}q¼tƒ}d|_t#|d ƒr|j|_|_t#|dƒr|j|_|_||_| |¡|}q¼| ¡}|rN|j|_|j|_| ¡|d}q¼t(dƒ‚q¼dS)Nrrsr‡rmrrYr^rFrGrDrUrr‘r’r]r“))rhrjrfrtrAr‰rˆrDr8rƒr5rnrorCrpr:r%r”r•rr#rGrUr]rWrYr^rBrxr˜rbr™ršrlr7r›r9r~rrrœrr r r r·sV                                  zLRParser.parseoptcCsÖd}g}|j}|j} |j} |j} tdƒ} d} |sBddlm}|j}|| _|| _|dk r`|  |¡|dkrp|j }n|}||_ g}||_ g}||_ || _ d}| d¡tƒ}d|_| |¡d}|| kr|sî|sÖ|ƒ}n| ¡}|sîtƒ}d|_|j}|| |¡}n| |}|dk r|dkrJ| |¡|}| |¡d}| r¼| d8} q¼|dkræ| | }|j}|j}tƒ}||_d|_|rT|| dd…}||d<|| _zP|| d…=||_| | ¡|| d…=| |¡| |d|}| |¡Wq¼tk rN| |¡| |dd…¡| ¡|d}d|_d|_|}t} d|_Yq¼Xq¼n’|g}|| _z8||_| | ¡| |¡| |d|}| |¡Wq¼tk râ| |¡| ¡|d}d|_d|_|}t} d|_Yq¼Xq¼|dkr|d}t|ddƒ}|S|dkrÈ| dks$|jrìt} d|_|}|jdkrBd}|jrŠ|rbt|d ƒsb||_||_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¼|jdkr2dS|jdkr®|d}|jdkrXd}q¼tƒ}d|_t|d ƒr~|j!|_!|_%t|dƒr˜|j&|_&|_'||_| |¡|}q¼| ¡}| ¡|d}q¼t(dƒ‚q¼dS)Nrrsr‡rmrrFrGrDrUrr‘r’r]r“))rhrjrfrtrAr‰rˆrDr8rƒr5rnrorCrpr:r%r”r•rr#rGrBrxr˜rbr™ršrlrWr7r›r9rUr~rrrYr]r^rœ)r rƒrDrr„r…ržrŸryrjr rtr¡r¢rˆr£rnror¤rqrxr¥r¦r§r¨r©rªrMr)r¬rUr r r r‚és6                                  zLRParser.parseopt_notrack)NNFFN)NNFFN)NNFFN)NNFFN) rrrr r1r3rkr{r†r€rr‚r r r r rcs  ] 4rcz^[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|_ |jD]}||j krL|j   |¡qLg|_ d|_ |jr”d|jd |j¡f|_n d|j|_dS©Nú%s -> %srŠz %s -> )rÚtupler ÚnumberÚfuncr˜ÚfileÚlineÚprecr#ÚusymsrpÚlr_itemsÚlr_nextr–r?) r r³rr Ú precedencer´rµr¶rEr r r r s$    zProduction.__init__cCs|jSrr>r<r r r r==szProduction.__str__cCsdt|ƒdS)Nz Production(ú)r>r<r r r r@@szProduction.__repr__cCs t|jƒSr)r#r r<r r r rTCszProduction.__len__cCsdS©Nrsr r<r r r Ú __nonzero__FszProduction.__nonzero__cCs |j|Sr)r ©r Úindexr r r rNIszProduction.__getitem__c Csˆ|t|jƒkrdSt||ƒ}zt|j|d|_Wnttfk rRg|_YnXz|j|d|_Wntk r‚d|_YnX|Sr½)r#r ÚLRItemÚ ProdnamesÚlr_afterÚ IndexErrorÚKeyErrorÚ lr_before)r rMr§r r r Úlr_itemMs   zProduction.lr_itemcCs|jr||j|_dSr©r´r˜©r Úpdictr r r Úbind]szProduction.bind)r®Nr‰r) rrrÚreducedr r=r@rTr¾rNrÇrËr r r r r­s r­c@s,eZdZdd„Zdd„Zdd„Zdd„Zd S) ÚMiniProductioncCs.||_||_||_d|_||_||_||_dSr)rr#r´r˜rµr¶r?)r r?rr#r´rµr¶r r r r fszMiniProduction.__init__cCs|jSrr>r<r r r r=oszMiniProduction.__str__cCs d|jS)NzMiniProduction(%s)r>r<r r r r@rszMiniProduction.__repr__cCs|jr||j|_dSrrÈrÉr r r rËvszMiniProduction.bindN)rrrr r=r@rËr r r r rÍes rÍc@s$eZdZdd„Zdd„Zdd„ZdS)rÁcCsZ|j|_t|jƒ|_|j|_||_i|_|j |d¡t|jƒ|_t|jƒ|_|j |_ dS)NÚ.) rrvr r³Úlr_indexÚ lookaheadsÚinsertr²r#r¸)r r§rMr r r r ”s   zLRItem.__init__cCs,|jrd|jd |j¡f}n d|j}|Sr°)r rr–)r rEr r r r=Ÿs zLRItem.__str__cCsdt|ƒdS)NzLRItem(r¼r>r<r r r r@¦szLRItem.__repr__N)rrrr r=r@r r r r rÁ“s rÁcCs6t|ƒd}|dkr2|||kr(||S|d8}q dSrr)r#)ÚsymbolsÚ terminalsrQr r r Úrightmost_terminal®s    rÔc@s eZdZdS)Ú GrammarErrorNr!r 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)'ÚGrammarcCsbdg|_i|_i|_i|_|D]}g|j|<qg|jd<i|_i|_i|_i|_tƒ|_ d|_ dS©Nr) Ú ProductionsrÂÚProdmapÚ TerminalsÚ NonterminalsÚFirstÚFollowÚ PrecedenceÚsetÚUsedPrecedenceÚStart)r rÓÚtermr r r r Âs  zGrammar.__init__cCs t|jƒSr)r#rØr<r r r rTæszGrammar.__len__cCs |j|Sr)rØr¿r r r rNé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Õ)r râÚassocÚlevelr r r Úset_precedenceôs   zGrammar.set_precedenceNr‰rc Cs¸||jkrtd|||fƒ‚|dkr6td|||fƒ‚t |¡sRtd|||fƒ‚t|ƒD]œ\}}|ddkrÐzLt|ƒ}t|ƒdkr˜td||||fƒ‚||jkr¬g|j|<|||<WqZWntk rÎYnXt |¡sZ|d krZtd ||||fƒ‚qZd |kr„|d d kr td ||fƒ‚|d d kr>td||fƒ‚|d } |j  | ¡} | sltd||| fƒ‚n |j   | ¡|d d…=nt ||jƒ} |j  | d¡} d||f} | |j krâ|j | } td||| fd| j| jfƒ‚t|jƒ} ||jkrg|j|<|D]J}||jkr(|j| | ¡n&||jkr>g|j|<|j| | ¡qt| ||| |||ƒ}|j |¡||j | <z|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'"rszA%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 %rr®r±z%s:%d: Duplicate rule %s. zPrevious definition at %s:%d)rÚrÕÚ_is_identifierÚmatchÚ enumerateÚevalr#rbrÞr•ràÚaddrÔrÙrµr¶rØrÛrpr­rÂrÅ)r ÚprodnameÚsymsr´rµr¶rMrEÚcZprecnameZprodprecÚmapÚmZpnumberr¦r§r r r Úadd_production sv     ÿ   ÿ       ÿ        zGrammar.add_productioncCsT|s|jdj}||jkr&td|ƒ‚tdd|gƒ|jd<|j| d¡||_dS)Nrszstart symbol %s undefinedrúS')rØrrÛrÕr­rprá)r Ústartr r r Ú set_startas   zGrammar.set_startcs>‡‡‡fdd„‰tƒ‰ˆˆjdjdƒ‡fdd„ˆjDƒS)NcsB|ˆkr dSˆ |¡ˆj |g¡D]}|jD] }ˆ|ƒq.q$dSr)rîrÂr•r )rEr§r'©Úmark_reachable_fromÚ reachabler r r rùts   z5Grammar.find_unreachable..mark_reachable_fromrcsg|]}|ˆkr|‘qSr r rH)rúr r rJ~sz,Grammar.find_unreachable..)rßrØr rÛr<r rør Úfind_unreachableqszGrammar.find_unreachablec Csài}|jD] }d||<q d|d<|jD] }d||<q&d}|j ¡D]N\}}|D]@}|jD]}||sXd}qrqXd}|rN||sŠd||<d}qBqNqB|s4qšq4g} | ¡D]4\}} | s¦||jkrÐ||jkrÐ|dkrÐq¦|  |¡q¦| S)NTrmFr)rÚrÛrÂrur rp) r Z terminatesr¦rMÚ some_changeÚplr§rEZ p_terminatesÚinfiniterâr r r Úinfinite_cyclesˆs8      zGrammar.infinite_cyclescCsPg}|jD]@}|sq |jD].}||jkr||jkr|dkr| ||f¡qq |Sr×)rØr rÂrÚrp)r r)r§rEr r r Úundefined_symbolsÈs  zGrammar.undefined_symbolscCs2g}|j ¡D]\}}|dkr|s| |¡q|Sr×)rÚrurp)r Z unused_tokrErOr r r Úunused_terminalsÙs   zGrammar.unused_terminalscCs8g}|j ¡D]$\}}|s|j|d}| |¡q|S©Nr)rÛrurÂrp)r Z unused_prodrErOr§r r r Ú unused_rulesès  zGrammar.unused_rulescCs@g}|jD]0}||jks ||jks | ||j|df¡q |Sr)rÞrÚràrp)r ZunusedZtermnamer r r Úunused_precedenceùs  zGrammar.unused_precedencecCsZg}|D]B}d}|j|D]$}|dkr,d}q||kr| |¡q|rFqqVq| d¡|S)NFúT)rÜrp)r Úbetar)ÚxZx_produces_emptyrr r r Ú_first s  zGrammar._firstcCs¨|jr |jS|jD]}|g|j|<qdg|jd<|jD]}g|j|<q6d}|jD]H}|j|D]8}| |j¡D]&}||j|krn|j| |¡d}qnq^qP|sFq¢qF|jS)NrmFT)rÜrÚrÛrÂrr rp)r r¦rMrür§rr r r Ú compute_first,s"      zGrammar.compute_firstc Cs<|jr |jS|js| ¡|jD]}g|j|<q |s@|jdj}dg|j|<d}|jdd…D]Ì}t|jƒD]¼\}}||jkrl| |j|dd…¡}d}|D]:} | dkrÌ| |j|krÌ|j|  | ¡d}| dkržd}qž|sð|t |jƒdkrl|j|jD]*} | |j|krü|j|  | ¡d}qüqlq^|sLq6qL|jS)NrsrmFrT) rÝrÜr rÛrØrrìr rrpr#) r röÚkÚdidaddr§rQÚBZfstZhasemptyrr r r Úcompute_followQs:      zGrammar.compute_followc CsÌ|jD]À}|}d}g}|t|ƒkr(d}ntt||ƒ}z|j|j|d|_Wnttfk rjg|_YnXz|j|d|_Wntk ršd|_YnX||_ |s¨qÀ|  |¡|}|d7}q||_ qdS©Nrrs) rØr#rÁrÂr rÃrÄrÅrÆrºrpr¹)r r§ZlastlrirQr¹Zlrir r r Ú build_lritemsŒs,       zGrammar.build_lritems)Nr‰r)N)N)rrrr rTrNrèrôr÷rûrÿrrrrrr r rr r r r rÖÁs $  T @#% ;rÖc@s eZdZdS)Ú VersionErrorNr!r r r r r°src@s,eZdZdd„Zdd„Zdd„Zdd„Zd S) ÚLRTablecCsd|_d|_d|_d|_dSr)rgrireÚ lr_methodr<r r r r ´szLRTable.__init__cCszt|tjƒr|}ntd|ƒtj|}|jtkr:tdƒ‚|j |_ |j |_ g|_ |jD]}|j  t|Ž¡qV|j|_|jS)Nú import %sú&yacc table file version is out of date)rKÚtypesÚ ModuleTypeÚexecr~ÚmodulesZ _tabversionÚ__tabversion__rZ _lr_actionrgZ_lr_gotorireZ_lr_productionsrprÍZ _lr_methodrZ _lr_signature)r Úmodulerr§r r r Ú read_tableºs     zLRTable.read_tablecCsÂz ddl}Wntk r(ddl}YnXtj |¡s:t‚t|dƒ}| |¡}|tkr^t dƒ‚| |¡|_ | |¡}| |¡|_ | |¡|_ | |¡}g|_ |D]}|j  t|Ž¡q | ¡|S)NrÚrbr)ÚcPickleÚ ImportErrorÚpickleÚosÚpathÚexistsÚopenÚloadrrrrgrirerprÍÚclose)r ÚfilenamerZin_fZ tabversionÚ signaturerfr§r r r Ú read_pickleÎs(         zLRTable.read_picklecCs|jD]}| |¡qdSr)rerË)r rÊr§r r r Úbind_callablesês zLRTable.bind_callablesN)rrrr rr(r)r r r r r³src CsLi}|D] }d||<qg}i}|D]$}||dkr"t|||||||ƒq"|Sr)Útraverse)ÚXÚRÚFPÚNrrCÚFr r r Údigraphs  r0c Csü| |¡t|ƒ}|||<||ƒ||<||ƒ}|D]f} || dkrVt| ||||||ƒt|||| ƒ||<| | g¡D]} | ||krx|| | ¡qxq2|||krøt||d<||||d<| ¡} | |krøt||d<||||d<| ¡} qÊdS)Nrr)rpr#r*Úminr•ÚMAXINTr”) rr.rCr/r+r,r-ÚdÚrelÚyÚaÚelementr r r r*s(       r*c@s eZdZdS)Ú LALRErrorNr!r r r r r8)sr8c@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)r8ÚgrammarrrÚlogrgrirØreÚ lr_goto_cacheÚ lr0_cidhashÚ _add_countZ sr_conflictZ rr_conflictÚ conflictsÚ sr_conflictsÚ rr_conflictsrr r Úlr_parse_table)r r:Úmethodr;r r r r 4s,    zLRGeneratedTable.__init__cCsn|jd7_|dd…}d}|rjd}|D]<}|jD]0}t|ddƒ|jkrLq4| |j¡|j|_d}q4q*q|S)NrsTFÚ lr0_addedr)r>rÃrWrprºrD)r ÚIÚJr rRrr r r Ú lr0_closureYs    zLRGeneratedTable.lr0_closurec CsÐ|j t|ƒ|f¡}|r|S|j |¡}|s:i}||j|<g}|D]H}|j}|rB|j|krB| t|ƒ¡}|s|i}||t|ƒ<| |¡|}qB| d¡}|sº|r²| |¡}||d<n||d<||jt|ƒ|f<|S)Nrm)r<r•r&rºrÆrprG) r rErÚgrEZgsr§rMÚs1r r r Úlr0_gotoss2       zLRGeneratedTable.lr0_gotoc CsÊ| |jjdjg¡g}d}|D]}||jt|ƒ<|d7}q d}|t|ƒkrÆ||}|d7}i}|D]}|jD] }d||<qnqd|D]@}| ||¡}|r‚t|ƒ|jkr¦q‚t|ƒ|jt|ƒ<|  |¡q‚q@|Sr) rGr:rØrºr=r&r#r¸rJrp) r ÚCrQrEZasymsÚiirErrHr r r Ú lr0_items–s(     zLRGeneratedTable.lr0_itemscCsxtƒ}d}|jjdd…D]@}|jdkr6| |j¡q|jD]}||kr<qq<| |j¡qt|ƒ|krjqtt|ƒ}q |Sr)rßr:rØr#rîrr )r ÚnullableZ num_nullabler§r¦r r r Úcompute_nullable_nonterminalsÎs     z.LRGeneratedTable.compute_nullable_nonterminalscCsjg}t|ƒD]X\}}|D]J}|j|jdkr||j|jdf}|d|jjkr||kr| |¡qq |Sr½)rìrÏr#r r:rÛrp)r rKÚtransZstatenorxr§r¦r r r Úfind_nonterminal_transitionsësz-LRGeneratedTable.find_nonterminal_transitionsc Cs”i}|\}}g}| |||¡}|D]B} | j| jdkr$| j| jd} | |jjkr$| |kr$| | ¡q$|dkr||jjdjdkr| d¡|S)Nrsrrm)rJrÏr#r r:rÚrprØ) r rKrPrNZdr_setrxr.ÚtermsrHr§r6r r r Ú dr_relationÿs   zLRGeneratedTable.dr_relationc Csrg}|\}}| |||¡}|j t|ƒd¡}|D]:} | j| jdkr2| j| jd} | |kr2| || f¡q2|S)Nrrs)rJr=r•r&rÏr#r rp) r rKrPÚemptyr4rxr.rHrRr§r6r r r Úreads_relation szLRGeneratedTable.reads_relationcCs²i}i}i}|D] }d||<q|D]„\}} g} g} ||D],} | j| krNq<| j} |}| | jdkrö| d} | j| }||f|krÒ| d}|| jkrÄ| j||jjkrªqÒ| j||krºqÒ|d}qŒ|  ||f¡| |||¡}|j  t |ƒd¡}qX||D]j}|j| jkrqþ|j| jkr"qþd}||jkrZ|j|| j|dkrNqþ|d}q&|  ||f¡qþq<| D]*}||kr†g||<|| || f¡qp| ||| f<q"||fS)Nrsrr) rrÏr#r r:rÚrprJr=r•r&)r rKrPrNZlookdictZ includedictZdtransr¦rxr.ZlookbZincludesr§rÏrRÚlirHr'rQr r r Úcompute_lookback_includesC sX          z*LRGeneratedTable.compute_lookback_includescs0‡‡‡fdd„}‡‡‡fdd„}t|||ƒ}|S)Ncsˆ ˆ|ˆ¡Sr)rS©r©rKrNr r r Ú” óz4LRGeneratedTable.compute_read_sets..csˆ ˆ|ˆ¡Sr)rUrXrYr r rZ• r[©r0)r rKÚntransrNr-r,r/r rYr Úcompute_read_sets“ s z"LRGeneratedTable.compute_read_setscs(‡fdd„}‡fdd„}t|||ƒ}|S)Ncsˆ|Srr rX)Úreadsetsr r rZª r[z6LRGeneratedTable.compute_follow_sets..cs ˆ |g¡Sr)r•rX)Úinclsetsr r rZ« r[r\)r r]r_r`r-r,r/r )r`r_r Úcompute_follow_sets© s   z$LRGeneratedTable.compute_follow_setsc Csl| ¡D]^\}}|D]P\}}||jkr0g|j|<| |g¡}|D]"}||j|kr@|j| |¡q@qqdSr)rurÐr•rp) r Z lookbacksZ followsetrPZlbrxr§rr6r r r Úadd_lookaheads» s    zLRGeneratedTable.add_lookaheadscCsP| ¡}| |¡}| |||¡}| |||¡\}}| |||¡}| ||¡dSr)rOrQr^rWrarb)r rKrNrPr_ZlookdZincludedZ followsetsr r r Úadd_lalr_lookaheadsÍ s  z$LRGeneratedTable.add_lalr_lookaheadsc$ Cs|jj}|jj}|j}|j}|j}i}| d|j¡| ¡}|jdkrP|  |¡d}|D]¦} g} i} i} i} | d¡| d|¡| d¡| D]}| d|j |¡q’| d¡| D]ì}|j |j dkr|j dkrìd| d <|| d <q¤|jdkr|j|}n|jj|j }|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_qq¶|j }|j|d}||jjkr¶| | |¡}|j t|ƒd¡}|dkr¶|  ||d|f¡|  |¡}|dk r”|dkr¢||kr’td|ƒ‚nð|dkr†| |d ¡\}}|| |j j\}}||ksî||kr<|dkr<|| |j jd8_|| |<|| |<|s„| d|¡|j ||df¡nH||krZ|dkrZd| |<n*|s’|s’| d |¡|j ||df¡n td|ƒ‚q¶|| |<|| |<q¶i}| D]>\}}}|| kr®|| |kr®| d||¡d|||f<q®| d¡d}| D]P\}}}|| kr|| |k r||f|kr| d||¡d}d|||f<q|rb| d¡i} | D]*}!|!jD]}"|"|jjkrtd| |"<qtqj| D]D}#| | |#¡}|j t|ƒd¡}|dkrš|| |#<| d|#|¡qš| ||<| ||<| ||<|d7}qXdS)NzParsing method: %srrr‰zstate %dz (%d) %srsrõrmzreduce using rule %d (%s)r®rã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) r:rØrÞrirgr;rrrMrcr³r#rÏrrÐrÝrpr•r·r@rÌr¶rAr8r rÚrJr=r&rr¸rÛ)$r rØrÞrjrhr;ZactionprKÚstrEZactlistZ st_actionZ st_actionpZst_gotor§Zlaheadsr6r'ZsprecZslevelZrprecZrlevelZoldpÚppZchosenpZrejectprQrHrRZ _actprintróZnot_usedZnkeysrLrErMr r r rBå s                           ÿ                    zLRGeneratedTable.lr_parse_tabler‰c Csšt|tjƒrtdƒ‚| d¡d}tj ||¡d}z8t|dƒ}|  dtj  |¡t |j |f¡d}|r`i}|j  ¡D]T\} } |  ¡D]B\} } | | ¡} | s°ggf} | || <| d | ¡| d | ¡qŠqz|  d ¡| ¡D]f\}} |  d |¡| dD]} |  d | ¡q|  d ¡| dD]} |  d | ¡q(|  d ¡qâ|  d¡|  d¡nF|  d¡|j  ¡D]&\}} |  d|d|d| f¡qt|  d¡|r¨i}|j ¡D]Z\} } |  ¡D]F\} } | | ¡} | sòggf} | || <| d | ¡| d | ¡qÊqº|  d¡| ¡D]h\}} |  d |¡| dD]} |  d | ¡qF|  d ¡| dD]} |  d | ¡qn|  d ¡q(|  d¡|  d¡nF|  d¡|j ¡D]&\}} |  d|d|d| f¡q¼|  d¡|  d¡|jD]Z}|jr:|  d|j|j|j|jtj  |j¡|jf¡n|  dt|ƒ|j|jf¡qþ|  d¡| ¡Wn&tk r”}z‚W5d}~XYnXdS)Nz"Won't overwrite existing tabmodulerÎrz.pyÚwzu # %s # This file is automatically generated. Do not edit. _tabversion = %r _lr_method = %r _lr_signature = %r rsrz _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] )rKrrÚIOErrorÚsplitr r!r–r#rÚbasenamerrrgrur•rprirer´r?rr#rµr¶r%)r Ú tabmoduleÚ outputdirr'Zbasemodulenamer&rZsmallerrurEZndrrOrQr r§Úer r r Ú write_table¦ s’  ø                       ÿ    zLRGeneratedTable.write_tablec Csþz ddl}Wntk r(ddl}YnXt|dƒÀ}| t|t¡| |j|t¡| ||t¡| |j|t¡| |j |t¡g}|j D]T}|j rÂ|  |j |j|j|j tj |j¡|jf¡qŒ|  t |ƒ|j|jdddf¡qŒ| ||t¡W5QRXdS)NrÚwb)rrrr#ÚdumprÚpickle_protocolrrgrirer´rpr?rr#r r!rkrµr¶)r r&r'rÚoutfZoutpr§r r r Ú pickle_table s    , zLRGeneratedTable.pickle_table)rN)r‰r‰)r‰)rrrr rGrJrMrOrQrSrUrWr^rarbrcrBrortr r r r r93s" %#8+PB zr9cCs0t |¡}|j ¡}|j|jkr,| |j¡|Sr)r~Ú _getframeÚ f_globalsÚcopyÚf_localsÚupdate)ÚlevelsrZldictr r r Úget_caller_module_dictC s     r{c Csg}| ¡}d}|}|D]â}|d7}| ¡}|s2qzˆ|ddkrf|sTtd||fƒ‚|} |dd…} n@|d} | }|dd…} |d} | dkr¦| dkr¦td||fƒ‚| ||| | f¡Wqtk rЂYqtk røtd ||| ¡fƒ‚YqXq|S) Nrsrú|z%s:%d: Misplaced '|'éú:z::=z!%s:%d: Syntax error. Expected ':'z%s:%d: Syntax error in rule %r)Ú splitlinesrjrbrpÚ ExceptionÚstrip) Údocrµr¶r:ZpstringsZlastpZdlineZpsr§rïrðZassignr r r Ú parse_grammarO 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ßrr:rrr~rr;)r rÊr;r r r r y szParserReflect.__init__cCs,| ¡| ¡| ¡| ¡| ¡dSr)Ú get_startÚget_error_funcÚ get_tokensÚget_precedenceÚget_pfunctionsr<r r r Úget_allˆ s zParserReflect.get_allcCs6| ¡| ¡| ¡| ¡| ¡| ¡|jSr)Úvalidate_startÚvalidate_error_funcÚvalidate_tokensÚvalidate_precedenceÚvalidate_pfunctionsÚvalidate_modulesrr<r r r Ú validate_all szParserReflect.validate_allc Csšg}zr|jr| |j¡|jr:| d dd„|jDƒ¡¡|jrR| d |j¡¡|jD]}|drX| |d¡qXWnttfk rŽYnXd |¡S)Nr‰cSsg|]}d |¡‘qS)r‰)r–)rIr§r r r rJ  sz+ParserReflect.signature..rŠr)rörpr·r–r†ÚpfuncsÚ TypeErrorÚ ValueError)r Úpartsrr r r r'š s  zParserReflect.signaturec Cs²t d¡}|jD]œ}zt |¡\}}Wntk r>YqYnXi}t|ƒD]^\}}|d7}| |¡}|rL| d¡}|  |¡} | sŒ|||<qLt  |¡} |j   d| ||| ¡qLqdS)Nz\s*def\s+(p_[a-zA-Z_0-9]*)\(rsz;%s:%d: Function %s redefined. Previously defined on line %d) ÚreÚcompilerÚinspectÚgetsourcelinesrirìrëÚgroupr•Ú getsourcefiler;r) r ZfrerÚlinesZlinenZ counthashr¶rórÚprevr&r r r r’µ s,        ÿzParserReflect.validate_modulescCs|j d¡|_dS)Nrö)rÊr•rör<r r r r‡Î szParserReflect.get_startcCs&|jdk r"t|jtƒs"|j d¡dS)Nz'start' must be a string)rörKÚ string_typesr;rr<r r r rÒ s  zParserReflect.validate_startcCs|j d¡|_dS)NÚp_error)rÊr•r…r<r r r rˆØ 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)Nrrsz2'p_error' defined, but is not a function or methodTz$%s:%d: p_error() requires 1 argument)r…rKrÚ FunctionTypeÚ MethodTyper;rÚ__code__Úco_firstlinenoÚ co_filenameršÚ getmodulerrîÚ co_argcount)r ÚismethodZelineZefilerZargcountr r r rŽÜ s      z!ParserReflect.validate_error_funccCsn|j d¡}|s&|j d¡d|_dSt|ttfƒsJ|j d¡d|_dS|sd|j d¡d|_dS||_dS)Nr†zNo token list is definedTztokens must be a list or tupleztokens is empty)rÊr•r;rrKrvr²r†)r r†r r r r‰ò s    zParserReflect.get_tokenscCsVd|jkr |j d¡d|_dStƒ}|jD]$}||krF|j d|¡| |¡q,dS)Nrz.Illegal token name 'error'. Is a reserved wordTzToken %r multiply defined)r†r;rrßrrî)r rÓrMr r r r s   zParserReflect.validate_tokenscCs|j d¡|_dS)Nr»)rÊr•r·r<r r r rŠ szParserReflect.get_precedencecCsg}|jrt|jttfƒs2|j d¡d|_dSt|jƒD]È\}}t|ttfƒsj|j d¡d|_dSt|ƒdkr|j d|¡d|_dS|d}t|tƒsº|j d¡d|_dS|dd…D]<}t|tƒsî|j d ¡d|_dS|  |||df¡qÆq<||_ dS) Nz"precedence must be a list or tupleTzBad precedence tabler}z?Malformed precedence entry %s. Must be (assoc, term, ..., term)rz)precedence associativity must be a stringrsz precedence items must be strings) r·rKrvr²r;rrìr#r rpÚpreclist)r rªrçr§rærâr r r r s6       z!ParserReflect.validate_precedencecCs†g}|j ¡D]\\}}| d¡r|dkr*qt|tjtjfƒrt|d|jj ƒ}t   |¡}|  ||||j f¡q|jdd„d||_dS)NÚp_r¡r¥cSs |dt|dƒ|d|dfS)Nrrsr}rr>)Z p_functionr r r rZD s  üz.ParserReflect.get_pfunctions..)Úkey)rÊruÚ startswithrKrr¢r£rWr¤r¥ršr§rpÚ__doc__Úsortr”)r Z p_functionsrÚitemr¶rr r r r‹7 s zParserReflect.get_pfunctionsc CsNg}t|jƒdkr(|j d¡d|_dS|jD]\}}}}t |¡}|j|}t|tj ƒrbd}nd}|j j |krŽ|j d|||j ¡d|_q.|j j |kr¶|j d|||j ¡d|_q.|j sÒ|j d|||j ¡q.z(t|||ƒ} | D]} | || f¡qäWn:tk r4} z|j t| ƒ¡d|_W5d} ~ XYnX|j |¡q.|j ¡D]ô\} } |  d ¡rzt| tjtj fƒrzqN|  d ¡rŠqN|  d ¡r®| d kr®|j d | ¡t| tjƒrÊ| j j dksèt| tj ƒrN| jj j dkrN| j rNz8| j  d ¡}|ddkr&|j d| j j| j j| ¡Wntk r>YnXqN||_dS)Nrz+no rules of the form p_rulename are definedTr}rsz%%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Šr~z9%s:%d: Possible grammar rule %r defined without p_ prefix)r#r”r;rršrrÊrKrr£r¤r¨rr®rrƒrprbr?rrîrur­r¢Ú__func__rjr¦r¥rÄr:)r r:r¶rrr‚rµr´ZreqargsZparsed_grHrnrMrOr r r r‘L sn      ÿ    ÿ ÿ ÿ z!ParserReflect.validate_pfunctions)N)rrrr rŒr“r'r’r‡rrˆrŽr‰rrŠrr‹r‘r r r r r„x s  r„c < s0 |dkr t}| rd}| dkr&ttjƒ} ˆrf‡fdd„tˆƒDƒ} t| ƒ}d|krntj|dj|d<ntdƒ}| dkrât |t j ƒrŠ|j}nLd|krœ|d}n:|  d¡}d  |dd…¡}td |ƒttj|dd ƒ}tj |¡} | d ¡}|rt |tƒrd|kr|d|}|dk r&||d <t|| d }| ¡|jrJtdƒ‚| ¡}zŽtƒ}| rl| | ¡}n | |¡}|s†||krÞz&| |j¡t||j ƒ}|j!a!|WWSt"k rÜ}z|  #d|¡W5d}~XYnXWnFt$k r}z|  #t|ƒ¡W5d}~XYnt%k r&YnX| dkrš|r”ztt&tj  | |¡dƒƒ} Wn<t'k r}z|  #d||f¡t(ƒ} W5d}~XYnXnt(ƒ} |  )dt*¡d}| +¡r¼tdƒ‚|j sÎ|  #d¡t,|j-ƒ}|j.D]P\}}}z| /|||¡Wn0t0k r*}z|  #d|¡W5d}~XYnXqÞ|j1D]b\}}|\} }!}"}#z| 2|"|#|| |!¡Wn4t0k r”}z|  d|¡d}W5d}~XYnXq6z&|dkr´| 3|j4¡n | 3|¡Wn6t0k rö}z|  t|ƒ¡d}W5d}~XYnX|rtdƒ‚| 5¡}$|$D]"\}%}&|  d|&j6|&j7|%¡d}q| 8¡}'|'r†|  )d ¡|  )d¡|  )d ¡|'D]}|  #d|¡|  )d|¡qf|rÎ|  )d ¡|  )d¡|  )d ¡t9|j:ƒD]\}(})|  )d|(|)¡q´| ;¡}*|*D]}&|  #d|&j6|&j7|&j<¡qÚt=|'ƒdkr|  #d¡t=|'ƒdkr.|  #d t=|'ƒ¡t=|*ƒdkrF|  #d!¡t=|*ƒdkrd|  #d"t=|*ƒ¡|r4|  )d ¡|  )d#¡|  )d ¡t>|j?ƒ}+|+ @¡|+D]*}|  )d$|d%  d&d„|j?|Dƒ¡¡qž|  )d ¡|  )d'¡|  )d ¡t>|jAƒ},|, @¡|,D]*}-|  )d$|-d%  d(d„|jA|-Dƒ¡¡qþ|  )d ¡|r~| B¡}.|.D]}/|  #d)|/¡qF| C¡}0|0D]}1|  d*|1¡d}qf| D¡}2|2D]\}}|  d+||¡d}qŠ|r¶tdƒ‚|rÈ|  Ed,|¡tF||| ƒ}|rFt=|jGƒ}3|3dkrú|  #d-¡n|3dkr|  #d.|3¡t=|jHƒ}4|4dkr0|  #d/¡n|4dkrF|  #d0|4¡|rp|jGs\|jHrp|  #d ¡|  #d1¡|  #d ¡|jGD]\}5}6}7|  #d2|6|5|7¡q€tIƒ}8|jHD]x\}5}9}:|5tJ|9ƒtJ|:ƒf|8krÐqª|  #d3|5|9¡|  #d4|:|5¡|  #d3|5|9¡|  #d4|:|5¡|8 K|5tJ|9ƒtJ|:ƒf¡qªg};|jHD]@\}5}9}:|:jLs.|:|;kr.|  #d5|:¡|  #d5|:¡|; M|:¡q.|rÀz| N|| |¡Wn6t'k r¾}z|  #d6||f¡W5d}~XYnX| rz| O| |¡Wn6t'k r }z|  #d6| |f¡W5d}~XYnX| |j¡t||j ƒ}|j!a!|S)7Nrcsg|]}|tˆ|ƒf‘qSr )rW)rIr ©rr r rJ¡ szyacc..Ú__file__rr}rÎrrr‰Ú __package__rö)r;zUnable to build parserz.There was a problem loading the table file: %rrhzCouldn'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 usedrszThere 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 r>rHr r r rJG sz*Nonterminals, with rules where they appearcSsg|] }t|ƒ‘qSr r>rHr r r rJO 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)PÚ tab_modulerr~rÚdirÚdictrr³r{rKrrrjr–rrWr r!Údirnamer•r?r„rŒrr r'rr(rr)rÊrcr…r†r€rrrr#rirrÚ __version__r“rÖr†rªrèrÕr:rôr÷rörrµr¶rrìrØrrr#rvrÚr¯rÛrûrÿrrr9r@rArßr&rîrÌrprort)>s    4m H.rT   ) þ