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-g1zfoz1i/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 rrr r r ÚwarninguszPlyLogger.warningcOs|j d||d¡dS)NzERROR: r rrr r r ÚerrorxszPlyLogger.errorN) Ú__name__Ú __module__Ú __qualname__r rÚinforrÚcriticalr r r r rls 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 r~src@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@sneZdZddd„Zdd„Zdd„Zdd „Zd d „Zd d „Zdd„Z dd„Z dd„Z dd„Z dd„Z dd„ZdS)Ú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||j|_dSr)rBr])r rMr]r r r Ú set_lexposszYaccProduction.set_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]r^rbrr 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|_dSre)rmr<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_statesriÚitemsÚlistÚvaluesr#)r ÚstateÚactionsÚrulesr r r rl;s  zLRParser.set_defaulted_statescCs i|_dSr)rur<r r r Údisable_defaulted_statesBsz!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 Ú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}| 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 STARTrt©ÚlexrnÚ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 rJDsrDrUú(yacc: Syntax error at line %d, token=%s úyacc: Syntax error, token=%sú yacc: Parse error in input. EOF r]úyacc: internal parser error!!! )0rirkrgrurArrŠr‰rDr8r„r5rorprCrqr:r%rÚpopÚgetÚjoinr?Úlstriprr#rGrUr]rWrYr_rBryÚcallabler*rcÚextendÚ error_countrmrr7Úhasattrr9rr€rÚ RuntimeError© r r„rDrr…r†Ú lookaheadÚlookaheadstackrzrkÚprodruÚpsliceÚ errorcountr‰Ú get_tokenrorpÚerrtokenrrryÚ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)NrrtrˆrnrrYr_rFrGrDrUr‘r’r“r]r”))rirkrgrurArŠr‰rDr8r„r5rorprCrqr:r%r•r–rr#rGrUr]rWrYr_rBryr™rcršr›rmr7rœr9rr€rrržr 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)NrrtrˆrnrrFrGrDrUr‘r’r“r]r”))rirkrgrurArŠr‰rDr8r„r5rorprCrqr:r%r•r–rr#rGrBryr™rcršr›rmrWr7rœr9rUrr€rrYr]r_r)r r„rDrr…r†rŸr rzrkr¡rur¢r£r‰r¤rorpr¥rrryr¦r§r¨r©rªr«rMr)r­rUr r r rƒës6                                  zLRParser.parseopt_notrack)NNFFN)NNFFN)NNFFN)NNFFN) rrrr r1r3rlr|r‡rr‚rƒr r r r rds  ] 4rdz^[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#ÚusymsrqÚ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@BszProduction.__repr__cCs t|jƒSr)r#r¡r<r r r rTEszProduction.__len__cCsdS©Nrtr r<r r r Ú __nonzero__HszProduction.__nonzero__cCs |j|Sr)r¡©r Úindexr r r rNKszProduction.__getitem__c CsŠ|t|jƒkrdSt||ƒ}z|j|j|d|_Wnttfk rTg|_YnXz|j|d|_Wntk r„d|_YnX|Sr¾)r#r¡ÚLRItemÚ ProdnamesÚlr_afterÚ IndexErrorÚKeyErrorÚ lr_before)r rMr¨r r r Úlr_itemOs   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 hszMiniProduction.__init__cCs|jSrr>r<r r r r=qszMiniProduction.__str__cCs d|jS)NzMiniProduction(%s)r>r<r r r r@tszMiniProduction.__repr__cCs|jr||j|_dSrrÉrÊr r r rÌxszMiniProduction.bindN)rrrr r=r@rÌ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Ú.) rrwr¡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 dSrs)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'"rtzA%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#rcrßr–ráÚaddrÕrÚr¶r·rÙrÜrqr®rÃrÆ)r ÚprodnameÚsymsrµr¶r·rMrEÚcZprecnameZprodprecÚmapÚmZpnumberr§r¨r r r Úadd_productionsv     ÿ   ÿ       ÿ        zGrammar.add_productioncCsT|s|jdj}||jkr&td|ƒ‚tdd|gƒ|jd<|j| d¡||_dS)Nrtzstart symbol %s undefinedrúS')rÙrrÜrÖr®rqrâ)r Ústartr r r Ú set_startcs   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úvs   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_unreachablesszGrammar.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)NTrnFr)rÛrÜrÃrvr¡rq) 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Ûrq)r r)r¨rEr r r Úundefined_symbolsÊs  zGrammar.undefined_symbolscCs2g}|j ¡D]\}}|dkr|s| |¡q|SrØ)rÛrvrq)r Z unused_tokrErOr r r Úunused_terminalsÛs   zGrammar.unused_terminalscCs8g}|j ¡D]$\}}|s|j|d}| |¡q|S©Nr)rÜrvrÃrq)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árq)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Ýrq)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)NrnFT)rÝrÛrÜrÃr r¡rq)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)NrtrnFrT) rÞrÝr rÜrÙrrír¡r rqr#) r r÷ÚkÚdidaddr¨rQÚBZfstZhasemptyrr r r Úcompute_followSs:      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©Nrrt) rÙr#rÂrÃr¡rÄrÅrÆrÇr»rqrº)r r¨ZlastlrirQrºZlrir r r Ú build_lritemsŽs,       zGrammar.build_lritems)NrŠr)N)N)rrrr rTrNrérõrørürrrrrr r rrr 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)rhrjrfÚ 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_actionrhZ_lr_gotorjrfZ_lr_productionsrqrÎ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ÚloadrrrrhrjrfrqrÎÚclose)r Úfilenamer Zin_fZ tabversionÚ signaturergr¨r r r Ú read_pickleÐs(         zLRTable.read_picklecCs|jD]}| |¡qdSr)rfrÌ)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 Údigraph s  r1c Csü| |¡t|ƒ}|||<||ƒ||<||ƒ}|D]f} || dkrVt| ||||||ƒt|||| ƒ||<| | g¡D]} | ||krx|| | ¡qxq2|||krøt||d<||||d<| ¡} | |krøt||d<||||d<| ¡} qÊdS)Nrr)rqr#r+Úminr–ÚMAXINTr•) rr/rCr0r,r-r.ÚdÚrelÚyÚaÚelementr r r r+s(       r+c@s eZdZdS)Ú LALRErrorNr!r r r r r9+sr9c@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)r9ÚgrammarrrÚlogrhrjrÙrfÚ 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 6s,    zLRGeneratedTable.__init__cCsn|jd7_|dd…}d}|rjd}|D]<}|jD]0}t|ddƒ|jkrLq4| |j¡|j|_d}q4q*q|S)NrtTFÚ lr0_addedr)r?rÄrWrqr»rE)r ÚIÚJr rRrr r r Ú lr0_closure[s    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)Nrn)r=r–r&r»rÇrqrH) r rFrÚgrEZgsr¨rMÚs1r r r Úlr0_gotous2       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) rHr;rÙr»r>r&r#r¹rKrq) r ÚCrQrFZasymsÚiirErrIr 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Ürq)r rLÚtransZstatenoryr¨r§r r r Úfind_nonterminal_transitionsísz-LRGeneratedTable.find_nonterminal_transitionsc Cs|\}}g}| |||¡}|D]B}|j|jdkr |j|jd} | |jjkr | |kr | | ¡q |dkrŒ||jjdjdkrŒ| d¡|S)Nrtrrn)rKrÐr#r¡r;rÛrqrÙ) r rLrQrOryr/ÚtermsrIr¨r7r r r Ú dr_relation s   zLRGeneratedTable.dr_relationc Csrg}|\}}| |||¡}|j t|ƒd¡}|D]:} | j| jdkr2| j| jd} | |kr2| || f¡q2|S)Nrrt)rKr>r–r&rÐr#r¡rq) r rLrQÚemptyr5ryr/rIrRr¨r7r 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)Nrtrr) rrÐr#r¡r;rÛrqrKr>r–r&)r rLrQrOZlookdictZ includedictZdtransr§ryr/ZlookbZincludesr¨rÐrRÚlirIr'rQr r r Úcompute_lookback_includesD sX          z*LRGeneratedTable.compute_lookback_includescs0‡‡‡fdd„}‡‡‡fdd„}t|||ƒ}|S)Ncsˆ ˆ|ˆ¡Sr)rT©r©rLrOr r r Ú• óz4LRGeneratedTable.compute_read_sets..csˆ ˆ|ˆ¡Sr)rVrYrZr r r[– r\©r1)r rLÚntransrOr.r-r0r rZr Úcompute_read_sets” s z"LRGeneratedTable.compute_read_setscs(‡fdd„}‡fdd„}t|||ƒ}|S)Ncsˆ|Srr rY)Úreadsetsr r r[« r\z6LRGeneratedTable.compute_follow_sets..cs ˆ |g¡Sr)r–rY)Úinclsetsr r r[¬ r\r])r r^r`rar.r-r0r )rar`r Úcompute_follow_setsª s   z$LRGeneratedTable.compute_follow_setsc Csl| ¡D]^\}}|D]P\}}||jkr0g|j|<| |g¡}|D]"}||j|kr@|j| |¡q@qqdSr)rvrÑr–rq) r Z lookbacksZ followsetrQZlbryr¨rr7r r r Úadd_lookaheads¼ s    zLRGeneratedTable.add_lookaheadscCsP| ¡}| |¡}| |||¡}| |||¡\}}| |||¡}| ||¡dSr)rPrRr_rXrbrc)r rLrOrQr`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) %srtrörnzreduce 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ßrjrhr<rrrNrdr´r#rÐrrÑrÞrqr–r¸rArÍr·rBr9r¡rÛrKr>r&rr¹rÜ)$r rÙrßrkrir<ZactionprLÚstrFZactlistZ st_actionZ st_actionpZst_gotor¨Zlaheadsr7r'ZsprecZslevelZrprecZrlevelZoldpÚppZchosenpZrejectprQrIrRZ _actprintrôZnot_usedZnkeysrMrErMr r r rCæ 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Úwz # %s # This file is automatically generated. Do not edit. # pylint: disable=W,C,R _tabversion = %r _lr_method = %r _lr_signature = %r rtrz _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Úbasenamerrrhrvr–rqrjrfrµr?rr#r¶r·r&)r Ú tabmoduleÚ outputdirr(Zbasemodulenamer'rZsmallerrvrEZndrrOrQr 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)rrr r$ÚdumprÚpickle_protocolrrhrjrfrµrqr?rr#r!r"rlr¶r·)r r'r(r ÚoutfZoutpr¨r r r Ú pickle_table" s    , zLRGeneratedTable.pickle_table)rN)rŠrŠ)rŠ)rrrr rHrKrNrPrRrTrVrXr_rbrcrdrCrprur r r r r:5s" %#8+PB {r:cCs0t |¡}|j ¡}|j|jkr,| |j¡|Sr)rÚ _getframeÚ f_globalsÚcopyÚf_localsÚupdate)ZlevelsrZldictr r r Úget_caller_module_dictE 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) Nrtrú|z%s:%d: Misplaced '|'éú:z::=z!%s:%d: Syntax error. Expected ':'z%s:%d: Syntax error in rule %r)Ú splitlinesrkrcrqÚ ExceptionÚstrip) Údocr¶r·r;ZpstringsZlastpZdlineZpsr¨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àrr;rrrr€r<)r rËr<r r r r { 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÷rqr¸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]*)\(rtz;%s:%d: Function %s redefined. Previously defined on line %d) ÚreÚcompilerÚinspectÚgetsourcelinesrjrí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)Nrrtz2'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_funccCsr|j d¡}|s&|j d¡d|_dSt|ttfƒsJ|j d¡d|_dS|sd|j d¡d|_dSt|ƒ|_dS)Nr†zNo token list is definedTztokens must be a list or tupleztokens is empty) rËr–r<rrKrwr³Úsortedr†)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 stringrtz precedence items must be strings) r¸rKrwr³r<rrír#r rqÚ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)Nrrtr}rr>)Z p_functionr r r r[F s  üz.ParserReflect.get_pfunctions..)Úkey)rËrvÚ startswithrKrr¢r£rWr¤r¥ršr§rqÚ__doc__Úsortr”)r Z p_functionsrÚitemr·rr r r r‹9 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}rtz%%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ƒrqrcr?rrïrvr®r¢Ú__func__rkr¦r¥rÅr;)r r;r·rrr‚r¶rµZreqargsZparsed_grIrorMrOr r r r‘N sn      ÿ    ÿ ÿ ÿ z!ParserReflect.validate_pfunctions)N)rrrr rŒr“r(r’r‡rrˆrŽr‰rrŠrr‹r‘r 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ƒ‚| ¡}zŽtƒ}| r¦| | ¡}n | |¡}|sÀ||krz&| |j ¡t!||j"ƒ}|j#a#|WWSt$k r}z|  %d|¡W5d}~XYnXWnFt&k rL}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/ƒ}|j0D]P\}}}z| 1|||¡Wn0t2k rd}z|  %d|¡W5d}~XYnXq|j3D]b\}}|\} }!}"}#z| 4|"|#|| |!¡Wn4t2k rÎ}z|  d|¡d}W5d}~XYnXqpz&|dkrî| 5|j6¡n | 5|¡Wn6t2k r0}z|  t|ƒ¡d}W5d}~XYnX|r@tdƒ‚| 7¡}$|$D]"\}%}&|  d|&j8|&j9|%¡d}qL| :¡}'|'rÀ|  +d ¡|  +d¡|  +d ¡|'D]}|  %d|¡|  +d|¡q |r|  +d ¡|  +d¡|  +d ¡t;|j<ƒD]\}(})|  +d|(|)¡qî| =¡}*|*D]}&|  %d|&j8|&j9|&j>¡qt?|'ƒdkrJ|  %d¡t?|'ƒdkrh|  %d t?|'ƒ¡t?|*ƒdkr€|  %d!¡t?|*ƒdkrž|  %d"t?|*ƒ¡|rn|  +d ¡|  +d#¡|  +d ¡t@|jAƒ}+|+ B¡|+D]*}|  +d$|d% d&d„|jA|Dƒ¡¡qØ|  +d ¡|  +d'¡|  +d ¡t@|jCƒ},|, B¡|,D]*}-|  +d$|-d% d(d„|jC|-Dƒ¡¡q8|  +d ¡|r¸| D¡}.|.D]}/|  %d)|/¡q€| E¡}0|0D]}1|  d*|1¡d}q | F¡}2|2D]\}}|  d+||¡d}qÄ|rðtdƒ‚|r|  Gd,|¡tH||| ƒ}|r€t?|jIƒ}3|3dkr4|  %d-¡n|3dkrJ|  %d.|3¡t?|jJƒ}4|4dkrj|  %d/¡n|4dkr€|  %d0|4¡|rª|jIs–|jJrª|  %d ¡|  %d1¡|  %d ¡|jID]\}5}6}7|  %d2|6|5|7¡qºtKƒ}8|jJD]x\}5}9}:|5tL|9ƒtL|:ƒf|8kr qä|  %d3|5|9¡|  %d4|:|5¡|  %d3|5|9¡|  %d4|:|5¡|8 M|5tL|9ƒtL|:ƒf¡qäg};|jJD]@\}5}9}:|:jNsh|:|;krh|  %d5|:¡|  %d5|:¡|; O|:¡qh| rz&| P|| |¡|tjkrÔtj|=Wn6t)k r }z|  %d6||f¡W5d}~XYnX| r\z| Q| |¡Wn6t)k rZ}z|  %d6| |f¡W5d}~XYnX| |j ¡t!||j"ƒ}|j#a#|S)7Nrcsg|]}|tˆ|ƒf‘qSr )rW)rIr ©rr r rJ£ szyacc..Ú__file__rÚ __package__r}rÏrrrŠr÷)r<zUnable to build parserz.There was a problem loading the table file: %rrizCouldn'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 usedrtzThere 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 rJM sz*Nonterminals, with rules where they appearcSsg|] }t|ƒ‘qSr r>rHr r r rJU 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_modulerrr€ÚdirÚdictrr´rœrµr{rKrrrkr—rrWr!r"Údirnamer–r?r„rŒrr r(rr)rr*rËrdr…r‡r€rrrr$rjrrÚ __version__r“r×r†r«rérÖr;rõrør÷rr¶r·rrírÙrrr#rwrÛr°rÜrürrrr:rArBràr&rïrÍrqrpru)>sž   7m H.rT   ) þ