a °…bkã @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-98j97qn4/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|vrt|ƒ}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|vrt|ƒ}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 bbbWnty6Yn0|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 Ú òóz.YaccProduction.__getitem__..r)Ú isinstancerBrGrC©r Únr r r Ú __getitem__ðs   zYaccProduction.__getitem__cCs||j|_dSr)rBrG)r rNÚvr r r Ú __setitem__øszYaccProduction.__setitem__cCsdd„|j||…DƒS)NcSsg|] }|j‘qSr rFrHr r r rJürKz/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©ÚgetattrrBrMr r r rVszYaccProduction.linenocCs||j|_dSr)rBrV)r rNrVr r r Ú set_linenoszYaccProduction.set_linenocCs,t|j|ddƒ}t|j|d|ƒ}||fS)NrVrÚ endlinenorW)r rNÚ startlineÚendliner r r ÚlinespanszYaccProduction.linespancCst|j|ddƒS)NÚlexposrrWrMr r r r^ szYaccProduction.lexposcCs,t|j|ddƒ}t|j|d|ƒ}||fS)Nr^rÚ endlexposrW)r rNÚstartposÚendposr r r ÚlexspanszYaccProduction.lexspancCst‚dSr)Ú SyntaxErrorr<r r r rszYaccProduction.error)N)rrrr rOrQrTrUrVrYr]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 rl9s  zLRParser.set_defaulted_statescCs i|_dSr)rur<r r r Údisable_defaulted_states@sz!LRParser.disable_defaulted_statesNFcCsZ|str.t|tƒrttjƒ}| |||||¡S|rD| |||||¡S| |||||¡SdSr) Ú yaccdevelrLÚ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}|| _|| _ |durj|  |¡|durz|j }n|}||_ g}||_ g}||_ || _d}| d¡tƒ}d|_| |¡d}| d¡| d|¡|| vr(|s|sø|ƒ}n| ¡}|stƒ}d|_|j}|| |¡}n| |}| d|| ¡| d d d  d d „|Dƒdd…¡t|ƒf ¡¡|dur€|dkr¾| |¡|}| d|¡| |¡d}| rÆ| d8} qÆ|dkrD| | }|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$y„| |¡| %|dd…¡| ¡|d}d|_d|_|}t&} d|_'YqÆ0qÆnº|r |j|_|j|_|g}|| _ zL||_!| "| ¡| dt#| dƒ¡| |¡| |d|}| |¡WqÆt$y@| |¡| ¡|d}d|_d|_|}t&} d|_'YqÆ0qÆ|dkr€|d}t|ddƒ}| dt#|ƒ¡| d¡|S|dur°| (dd d  dd „|Dƒdd…¡t|ƒf ¡¡| dksÐ|j'r˜t&} d|_'|}|jdkrîd}|j)r6|rt*|dƒs||_||_!t+|j)||ƒ}|j'r–|}d}qÆn`|r†t*|d ƒrP|j}nd}|rrt,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 ƒrP|j|_|_t*|d$ƒrj|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;©rIÚxxr r r rJ±rKz'LRParser.parsedebug..z Action : Shift and goto state %sz3Action : Reduce rule [%s] with %s and goto state %dú[ú,cSsg|]}t|jƒ‘qSr )r,rG)rIÚ_vr r r rJÔrKú]éÿÿÿÿrZr_z Result : %srFrGzDone : Returning %szPLY: PARSE DEBUG ENDz Error : %scSsg|] }|j‘qSr r;rŒr r r rJBrKrDrVú(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#rGrVr^rXrZr_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Út1rNr)ÚtokrVr r r r\s„        *ÿ        $þ ÿ              *ÿ          zLRParser.parsedebugc Csjd}g}|j}|j} |j} |j} tdƒ} d} |sBddlm}|j}|| _|| _|dur`|  |¡|durp|j }n|}||_ g}||_ g}||_ || _ d}| d¡tƒ}d|_| |¡d}|| vr|sî|sÖ|ƒ}n| ¡}|sîtƒ}d|_|j}|| |¡}n| |}|dur`|dkrJ| |¡|}| |¡d}| r¼| d8} q¼|dkr>| | }|j}|j}tƒ}||_d|_|r˜|| dd…}||d<|râ|d}|j|_|j|_|d}t|d|jƒ|_t|d|jƒ|_|| _zP|| d…=||_| | ¡|| d…=| |¡| |d|}| |¡Wq¼ty’| |¡| |dd…¡| ¡|d}d|_d|_|}t } d |_!Yq¼0q¼n¦|r®|j|_|j|_|g}|| _z8||_| | ¡| |¡| |d|}| |¡Wq¼ty:| |¡| ¡|d}d|_d|_|}t } d |_!Yq¼0q¼|dkr`|d}t|d dƒ}|S|dur\| dks||j!rDt } d |_!|}|jdkršd}|j"râ|rºt#|d ƒsº||_||_t$|j"||ƒ}|j!rB|}d}q¼n`|r2t#|d ƒrü|j}nd}|rt%j& 'd ||jf¡nt%j& 'd|j¡nt%j& 'd¡dSnt } t|ƒdkrz|jdkrzd}d}d}|dd…=q¼|jdkrŠdS|jdkr,|d}|jdkrÖ|rÐt|d |jƒ|_t|d|jƒ|_d}q¼tƒ}d|_t#|d ƒrü|j|_|_t#|dƒr|j|_|_||_| |¡|}q¼| ¡}|rJ|j|_|j|_| ¡|d}q¼t(dƒ‚q¼dS)Nrrtrˆrnr’rZr_rFrGrDrVr“r”r•r^r–))rirkrgrurArŠr‰rDr8r„r5rorprCrqr:r%r—r˜rr#rGrVr^rXrZr_rBryr›rcrœrrmr7ržr9rr€rrŸr r r r r‚·sV                                  zLRParser.parseoptcCsÒd}g}|j}|j} |j} |j} tdƒ} d} |sBddlm}|j}|| _|| _|dur`|  |¡|durp|j }n|}||_ g}||_ g}||_ || _ d}| d¡tƒ}d|_| |¡d}|| vr|sî|sÖ|ƒ}n| ¡}|sîtƒ}d|_|j}|| |¡}n| |}|dur|dkrJ| |¡|}| |¡d}| r¼| d8} q¼|dkrâ| | }|j}|j}tƒ}||_d|_|rR|| dd…}||d<|| _zP|| d…=||_| | ¡|| d…=| |¡| |d|}| |¡Wq¼tyL| |¡| |dd…¡| ¡|d}d|_d|_|}t} d|_Yq¼0q¼n|g}|| _z8||_| | ¡| |¡| |d|}| |¡Wq¼tyÞ| |¡| ¡|d}d|_d|_|}t} d|_Yq¼0q¼|dkr|d}t|ddƒ}|S|durÄ| dks |jrèt} d|_|}|jdkr>d}|jr†|r^t|d ƒs^||_||_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|jdkrd}d}d}|dd…=q¼|jdkr.dS|jdkrª|d}|jdkrTd}q¼tƒ}d|_t|d ƒrz|j!|_!|_%t|dƒr”|j&|_&|_'||_| |¡|}q¼| ¡}| ¡|d}q¼t(dƒ‚q¼dS)Nrrtrˆrnr’rFrGrDrVr“r”r•r^r–))rirkrgrurArŠr‰rDr8r„r5rorprCrqr:r%r—r˜rr#rGrBryr›rcrœrrmrXr7ržr9rVrr€rrZr^r_rŸ)r r„rDrr…r†r¡r¢rzrkr£rur¤r¥r‰r¦rorpr§rrryr¨r©rªr«r¬r­rNr)r¯rVr 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 vrL|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@@szProduction.__repr__cCs t|jƒSr)r#r£r<r r r rUCszProduction.__len__cCsdS©Nrtr r<r r r Ú __nonzero__FszProduction.__nonzero__cCs |j|Sr)r£©r Úindexr r r rOIszProduction.__getitem__c Cs„|t|jƒkrdSt||ƒ}zt|j|d|_WnttfyPg|_Yn0z|j|d|_Wnty~d|_Yn0|SrÀ)r#r£ÚLRItemÚ ProdnamesÚlr_afterÚ IndexErrorÚKeyErrorÚ lr_before)r rNrª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@rUrÁrOrÊ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Ú.) rrwr£r¶Úlr_indexÚ lookaheadsÚinsertrµr#r»)r rªrNr 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|||vr(||S|d8}q dSrs)r#)ÚsymbolsÚ terminalsrRr 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 rUæszGrammar.__len__cCs |j|Sr)rÛrÂr r r rOészGrammar.__getitem__cCsL|jdgksJdƒ‚||jvr*td|ƒ‚|dvr: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ÛrárØ)r råÚassocÚlevelr r r Úset_precedenceôs   zGrammar.set_precedenceNrŠrc Cs´||jvrtd|||fƒ‚|dkr6td|||fƒ‚t |¡sRtd|||fƒ‚t|ƒD]š\}}|ddvrÎzLt|ƒ}t|ƒdkr˜td||||fƒ‚||jvr¬g|j|<|||<WqZWntyÌYn0t |¡sZ|d krZtd ||||fƒ‚qZd |vr‚|d d krtd ||fƒ‚|d d kr‡‡‡fdd„‰tƒ‰ˆˆjdjdƒ‡fdd„ˆjDƒS)NcsB|ˆvr 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|]}|ˆvr|‘qSr r rH)rür r rJ~rKz,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¦||jvrÐ||jvrÐ|dkrÐq¦|  |¡q¦| S)NTrnFr)rÝrÞrÅrvr£rq) r Z terminatesr©rNÚ some_changeÚplrªrEZ p_terminatesÚinfiniterår r r Úinfinite_cyclesˆs8      zGrammar.infinite_cyclescCsPg}|jD]@}|sq |jD].}||jvr||jvr|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_tokrErPr r r Úunused_terminalsÙs   zGrammar.unused_terminalscCs8g}|j ¡D]$\}}|s|j|d}| |¡q|S©Nr)rÞrvrÅrq)r Z unused_prodrErPrªr r r Ú unused_rulesès  zGrammar.unused_rulescCs@g}|jD]0}||jvs ||jvs | ||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||vr| |¡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|vrn|j| |¡d}qnq^qP|sFq¢qF|jS)NrnFT)rßrÝrÞrÅr r£rq)r r©rNrþ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]¼\}}||jvrl| |j|dd…¡}d}|D]:} | dkrÌ| |j|vrÌ|j|  | ¡d}| dkržd}qž|sð|t |jƒdkrl|j|jD]*} | |j|vrü|j|  | ¡d}qüqlq^|sLq6qL|jS)NrtrnFrT) ràrßr rÞrÛrrîr£r rqr#) r røÚkÚdidaddrªrRÚBZfstZhasemptyrr r r Úcompute_followQs:      zGrammar.compute_followc CsÈ|jD]¼}|}d}g}|t|ƒkr(d}npt||ƒ}z|j|j|d|_Wnttfyhg|_Yn0z|j|d|_Wnty–d|_Yn0||_ |s¤q¼|  |¡|}|d7}q||_ qdS©Nrrt) rÛr#rÄrÅr£rÆrÇrÈrÉr½rqr¼)r rªZlastlrirRr¼Zlrir r r Ú build_lritemsŒs,        zGrammar.build_lritems)NrŠr)N)N)rrrr rUrOrê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)rLÚ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}Wnty&ddl}Yn0tj |¡s8t‚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ÚNr rCÚFr r r Údigraphs  r2c Csü| |¡t|ƒ}|||<||ƒ||<||ƒ}|D]f} || dkrVt| ||||||ƒt|||| ƒ||<| | g¡D]} | ||vrx|| | ¡qxq2|||krøt||d<||||d<| ¡} | |krøt||d<||||d<| ¡} qÊdS)Nrr’)rqr#r,Úminr˜ÚMAXINTr—) r r0rCr1r-r.r/ÚdÚrelÚyÚaÚelementr r r r,s(       r,c@s eZdZdS)Ú LALRErrorNr!r r r r r:)sr:c@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ž|dvrtd|ƒ‚||_||_|s*tƒ}||_i|_i|_|j|_i|_ i|_ d|_ d|_ d|_ g|_g|_g|_|j ¡|j ¡|j ¡| ¡dS)N)ZSLRrzUnsupported method %sr)r:Ú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 4s,    zLRGeneratedTable.__init__cCsn|jd7_|dd…}d}|rjd}|D]<}|jD]0}t|ddƒ|jkrLq4| |j¡|j|_d}q4q*q|S)NrtTFÚ lr0_addedr)r@rÆrXrqr½rF)r ÚIÚJr rSr r 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)Nrn)r>r˜r&r½rÉrqrI) r rGr ÚgrEÚgsrªrNÚ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|ƒ|jvr¦q‚t|ƒ|jt|ƒ<|  |¡q‚q@|Sr) rIr<rÛr½r?r&r#r»rMrq) r ÚCrRrGZasymsÚiirEr rJr r r Ú lr0_items–s(     zLRGeneratedTable.lr0_itemscCsxtƒ}d}|jjdd…D]@}|jdkr6| |j¡q|jD]}||vr<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|jjvr||vr| |¡qq |SrÀ)rîrÒr#r£r<rÞrq)r rNÚtransZstatenoryrªr©r r r Úfind_nonterminal_transitionsësz-LRGeneratedTable.find_nonterminal_transitionsc Cs”i}|\}}g}| |||¡}|D]B} | j| jdkr$| j| jd} | |jjvr$| |vr$| | ¡q$|dkr||jjdjdkr| d¡|S)Nrtrrn)rMrÒr#r£r<rÝrqrÛ) r rNrSrQZdr_setryr0ÚtermsrJrªr8r r r Ú dr_relationÿs   zLRGeneratedTable.dr_relationc Csrg}|\}}| |||¡}|j t|ƒd¡}|D]:} | j| jdkr2| j| jd} | |vr2| || f¡q2|S)Nr’rt)rMr?r˜r&rÒr#r£rq) r rNrSÚemptyr6ryr0rJrSrªr8r r r Úreads_relation szLRGeneratedTable.reads_relationcCs²i}i}i}|D] }d||<q|D]„\}} g} g} ||D],} | j| krNq<| j} |}| | jdkrö| d} | j| }||f|vrÒ| d}|| jkrÄ| j||jjvrªqÒ| j||vrº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]*}||vr†g||<|| || f¡qp| ||| f<q"||fS)Nrtr’r) rrÒr#r£r<rÝrqrMr?r˜r&)r rNrSrQZlookdictZ includedictZdtransr©ryr0ZlookbZincludesrªrÒrSÚlirJr'rRr r r Úcompute_lookback_includesC sX          z*LRGeneratedTable.compute_lookback_includescs0‡‡‡fdd„}‡‡‡fdd„}t|||ƒ}|S)Ncsˆ ˆ|ˆ¡Sr)rV©r ©rNrQr r r Ú” rKz4LRGeneratedTable.compute_read_sets..csˆ ˆ|ˆ¡Sr)rXr[r\r r r]• rK©r2)r rNÚntransrQr/r.r1r r\r Úcompute_read_sets“ s z"LRGeneratedTable.compute_read_setscs(‡fdd„}‡fdd„}t|||ƒ}|S)Ncsˆ|Srr r[)Úreadsetsr r r]ª rKz6LRGeneratedTable.compute_follow_sets..cs ˆ |g¡Sr)r˜r[)Úinclsetsr r r]« rKr^)r r_rarbr/r.r1r )rbrar Úcompute_follow_sets© s   z$LRGeneratedTable.compute_follow_setsc Csl| ¡D]^\}}|D]P\}}||jvr0g|j|<| |g¡}|D]"}||j|vr@|j| |¡q@qqdSr)rvrÓr˜rq) r Z lookbacksZ followsetrSZlbryrªrr8r r r Úadd_lookaheads» s    zLRGeneratedTable.add_lookaheadscCsP| ¡}| |¡}| |||¡}| |||¡\}}| |||¡}| ||¡dSr)rRrTr`rZrcrd)r rNrQrSraZlookdZincludedZ 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¡|  |¡}|durä|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}||jjvr¶| | |¡}|j t|ƒd¡}|dkr¶|  ||d|f¡|  |¡}|dur”|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]>\}}}|| vr®|| |ur®| d||¡d|||f<q®| d¡d}| D]P\}}}|| vr|| |ur||f|vr| d||¡d}d|||f<q|rb| d¡i} | D]*}!|!jD]}"|"|jjvrtd| |"<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 %dr’zshift 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=rrrPrer¶r#rÒrrÓràrqr˜rºrBrÏr¹rCr:r£rÝrMr?r&rr»rÞ)$r rÛrárkrir=ZactionprNÚstrGZactlistZ st_actionZ st_actionpZst_gotorªZlaheadsr8r'ZsprecZslevelZrprecZrlevelZoldpÚppZchosenpZrejectprRrJrSZ _actprintrõZnot_usedZnkeysrOrErNr r r rDå 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(ty–}z‚WYd}~n d}~00dS)Nz"Won't overwrite existing tabmodulerÑr’z.pyÚwzu # %s # This file is automatically generated. Do not edit. _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] )rLrrÚIOErrorÚsplitr"r#r™r%rÚbasenamerrrhrvr˜rqrjrfr·r?rr#r¸r¹r')r Ú tabmoduleÚ outputdirr)Zbasemodulenamer(rZsmallerrvrEÚndrrPrRr rªÚer r r Ú write_table¦ sŽ  ø                      ÿ    zLRGeneratedTable.write_tablec Csz ddl}Wnty&ddl}Yn0t|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¡Wdƒn1s0YdS)NrÚwb)rr r!r%ÚdumprÚpickle_protocolrrhrjrfr·rqr?rr#r"r#rmr¸r¹)r r(r)r!ÚoutfZoutprªr r r Ú pickle_table s     , zLRGeneratedTable.pickle_table)rN)rŠrŠ)rŠ)rrrr rIrMrPrRrTrVrXrZr`rcrdrerDrrrwr r r r r;3s" %#8+PB zr;cCs0t |¡}|j ¡}|j|jkr,| |j¡|Sr)rÚ _getframeÚ f_globalsÚcopyÚf_localsÚupdate)ZlevelsrZldictr r r Úget_caller_module_dictC s     r}c Csüg}| ¡}d}|}|D]Þ}|d7}| ¡}|s2qzˆ|ddkrf|sTtd||fƒ‚|} |dd…} n@|d} | }|dd…} |d} | dkr¦| dkr¦td||fƒ‚| ||| | f¡Wqty΂Yqtyôtd ||| ¡fƒ‚Yq0q|S) Nrtrú|z%s:%d: Misplaced '|'éú:z::=z!%s:%d: Syntax error. Expected ':'z%s:%d: Syntax error in rule %r)Ú splitlinesrlrcrqÚ 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|_|durBtt j ƒ|_ n||_ dS)NF) rÍrøÚ error_funcÚtokensrârr<rrrr€r=)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¡qXWnttfyŒYn0d |¡S)NrŠcSsg|]}d |¡‘qS)rŠ)r™)rIrªr r r rJ  rKz+ParserReflect.signature..r‹r)rørqrºr™rˆÚpfuncsÚ TypeErrorÚ ValueError)r Úpartsrr r r r)š s  zParserReflect.signaturec Cs°t d¡}|jD]š}zt |¡\}}Wnty<YqYn0i}t|ƒD]^\}}|d7}| |¡}|rJ| d¡}|  |¡} | sŠ|||<qJt  |¡} |j   d| ||| ¡qJqdS)Nz\s*def\s+(p_[a-zA-Z_0-9]*)\(rtz;%s:%d: Function %s redefined. Previously defined on line %d) ÚreÚcompilerÚinspectÚgetsourcelinesrkrî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&|jdur"t|jtƒs"|j d¡dS)Nz'start' must be a string)rørLÚ 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‡rLrÚ 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=rrLrwrµrˆ)r rˆr r r r‹ò s    zParserReflect.get_tokenscCsVd|jvr |j d¡d|_dStƒ}|jD]$}||vrF|j d|¡| |¡q,dS)Nrz.Illegal token name 'error'. Is a reserved wordTzToken %r multiply defined)rˆr=rrârrð)r rÖrNr 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 tablerz?Malformed precedence entry %s. Must be (assoc, term, ..., term)rz)precedence associativity must be a stringrtz precedence items must be strings) rºrLrwrµ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)Nrrtrrr>)Z p_functionr r r r]D s  üz.ParserReflect.get_pfunctions..)Úkey)rÍrvÚ startswithrLrr¤r¥rXr¦r§rœr©rqÚ__doc__Úsortr–)r Z p_functionsrÚitemr¹rr r r r7 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<ty6} z"|j t| ƒ¡d|_WYd} ~ n d} ~ 00|j |¡q.|j ¡D]ò\} } |  d ¡r|t| tjtj fƒr|qP|  d ¡rŒqP|  d ¡r°| d kr°|j d | ¡t| tjƒrÌ| j j dksêt| tj ƒrP| jj j dkrP| j rPz8| j  d ¡}|ddkr(|j d| j j| j j| ¡Wnty>Yn0qP||_dS)Nrz+no rules of the form p_rulename are definedTrrtz%%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œrŸrÍrLrr¥r¦rªrr°rr…rqrcr?rrðrvr¯r¤Ú__func__rlr¨r§rÇr<)r r<r¹rrr„r¸r·ZreqargsZparsed_grJrqrNrPr r r r“L sf      ÿ    ÿ ÿ ÿ z!ParserReflect.validate_pfunctions)N)rrrr rŽr•r)r”r‰rrŠrr‹r‘rŒr’rr“r r r r r†x s  r†c < s> |dur t}| rd}| dur&ttjƒ} ˆrf‡fdd„tˆƒDƒ} t| ƒ}d|vrntj|dj|d<ntdƒ}| durât |t j ƒrŠ|j}nLd|vrœ|d}n:|  d¡}d  |dd…¡}td |ƒttj|dd ƒ}tj |¡} | d ¡}|rt |tƒrd|vr|d|}|dur&||d <t|| d }| ¡|jrJtdƒ‚| ¡}ztƒ}| rl| | ¡}n | |¡}|s†||kràz&| |j¡t||j ƒ}|j!a!|WWSt"yÞ}z|  #d|¡WYd}~n d}~00WnFt$y}z|  #t|ƒ¡WYd}~nd}~0t%y(Yn0| durž|r˜ztt&tj  | |¡dƒƒ} Wn>t'y”}z$|  #d||f¡t(ƒ} WYd}~n d}~00nt(ƒ} |  )dt*¡d}| +¡rÀtdƒ‚|j sÒ|  #d¡t,|j-ƒ}|j.D]R\}}}z| /|||¡Wn2t0y0}z|  #d|¡WYd}~n d}~00qâ|j1D]d\}}|\} }!}"}#z| 2|"|#|| |!¡Wn6t0yœ}z|  d|¡d}WYd}~n d}~00q|  )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)|/¡qP| C¡}0|0D]}1|  d*|1¡d}qp| D¡}2|2D]\}}|  d+||¡d}q”|rÀtdƒ‚|rÒ|  Ed,|¡tF||| ƒ}|rPt=|jGƒ}3|3dkr|  #d-¡n|3dkr|  #d.|3¡t=|jHƒ}4|4dkr:|  #d/¡n|4dkrP|  #d0|4¡|rz|jGsf|jHrz|  #d ¡|  #d1¡|  #d ¡|jGD]\}5}6}7|  #d2|6|5|7¡qŠtIƒ}8|jHD]x\}5}9}:|5tJ|9ƒtJ|:ƒf|8vrÚq´|  #d3|5|9¡|  #d4|:|5¡|  #d3|5|9¡|  #d4|:|5¡|8 K|5tJ|9ƒtJ|:ƒf¡q´g};|jHD]@\}5}9}:|:jLs8|:|;vr8|  #d5|:¡|  #d5|:¡|; M|:¡q8|rÌz| N|| |¡Wn8t'yÊ}z|  #d6||f¡WYd}~n d}~00| rz| O| |¡Wn8t' y}z|  #d6| |f¡WYd}~n d}~00| |j¡t||j ƒ}|j!a!|S)7Nrcsg|]}|tˆ|ƒf‘qSr )rX)rIr ©rr r rJ¡ rKzyacc..Ú__file__rrrÑr’rrŠÚ __package__rø)r=zUnable to build parserz.There was a problem loading the table file: %rrjzCouldn'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 rJG rKz*Nonterminals, with rules where they appearcSsg|] }t|ƒ‘qSr r>rHr r r rJO rKzSymbol %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_modulerrr€ÚdirÚdictrrµr}rLrrrlr™rrXr"r#Údirnamer˜r?r†rŽrr r)rr*rr+rÍrdr‡r‡r‚rrr r%rkrrÚ __version__r•rÙrˆr¬rêrØr<rörùrørr¸r¹rrîrÛrrr#rwrÝr±rÞrýrrrr;rBrCrâr&rðrÏrqrrrw)>s”   4m H.rT   ) þ