a ‰ÄÏhdã @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 ú1/usr/lib/python3.9/site-packages/sepolgen/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ÚinforrZcriticalr 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†srcCsPt|ƒ}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 r0cCst t¡tƒSr)r,r-r.Ú_restartr r r r Úrestart²s r2cCst t¡tƒSr)r,r-r.Ú_tokenr r r r Útoken¶s r4cCs<|ja|ja|ja||ƒ}z bbbWnty6Yn0|Sr)r0r/r4r3r2r1Ú NameError)Ú errorfuncr4Úparserr&r r r Úcall_errorfunc»s  r8c@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 r9Øsr9c@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Úlexerr7)r ÚsrBr r r r észYaccProduction.__init__cCsBt|tƒrdd„|j|DƒS|dkr2|j|jS|j|jSdS)NcSsg|] }|j‘qSr ©Úvalue©Ú.0rDr r r Ú ñóz.YaccProduction.__getitem__..r)Ú isinstancerArFrB©r Únr r r Ú __getitem__ïs   zYaccProduction.__getitem__cCs||j|_dSr)rArF)r rMÚvr r r Ú __setitem__÷szYaccProduction.__setitem__cCsdd„|j||…DƒS)NcSsg|] }|j‘qSr rErGr r r rIûrJz/YaccProduction.__getslice__..)rA)r ÚiÚjr r r Ú __getslice__úszYaccProduction.__getslice__cCs t|jƒSr)r"rAr;r r r Ú__len__ýszYaccProduction.__len__cCst|j|ddƒS)NÚlinenor©ÚgetattrrArLr r r rUszYaccProduction.linenocCs||j|_dSr)rArU)r rMrUr r r Ú set_linenoszYaccProduction.set_linenocCs,t|j|ddƒ}t|j|d|ƒ}||fS)NrUrÚ endlinenorV)r rMÚ startlineZendliner r r ÚlinespanszYaccProduction.linespancCst|j|ddƒS)NÚlexposrrVrLr r r r\ szYaccProduction.lexposcCs||j|_dSr)rAr\)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]rarr 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Úgotor6Úset_defaulted_statesÚerrorok)r ZlrtabZerrorfr r r r s zLRParser.__init__cCs d|_dSrd)rlr;r r r r0(szLRParser.errokcCs@|jdd…=|jdd…=tƒ}d|_|j |¡|j d¡dS)Nú$endr)Ú statestackÚsymstackr9r$Úappend)r Úsymr r r r2+s    zLRParser.restartcCsPi|_|j ¡D]:\}}t| ¡ƒ}t|ƒdkr|ddkr|d|j|<qdS©Nér)Údefaulted_statesrhÚitemsÚlistÚvaluesr")r ÚstateÚactionsZrulesr r r rk;s  zLRParser.set_defaulted_statescCs i|_dSr)rtr;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 ÚinputrCrÚtrackingÚ tokenfuncr r r ÚparseEs  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 STARTrs©ÚlexrmÚz State : %sz#Defaulted state %s: Reduce using %dz Stack : %sz%s . %sú cSsg|] }|j‘qSr r:©rHÚxxr r r rI³rJz'LRParser.parsedebug..z Action : Shift and goto state %sz3Action : Reduce rule [%s] with %s and goto state %dú[ú,cSsg|]}t|jƒ‘qSr )r+rF)rHZ_vr r r rIÖrJú]éÿÿÿÿrYr^z Result : %srFrFzDone : Returning %szPLY: PARSE DEBUG ENDz Error : %scSsg|] }|j‘qSr r:rŠr r r rIDrJrCrUú(yacc: Syntax error at line %d, token=%s úyacc: Syntax error, token=%sú yacc: Parse error in input. EOF r\úyacc: internal parser error!!! )0rhrjrfrtr@rrˆr‡rCr7r‚r4rnrorBrpr9r$rÚpopÚgetÚjoinr>Úlstriprr"rFrUr\rWrYr^rArxÚcallabler)rbÚextendÚ error_countrlrr6Úhasattrr8r}r~rÚ RuntimeError© r r‚rCrrƒr„Ú lookaheadÚlookaheadstackryrjÚprodrtÚpsliceÚ errorcountr‡Ú get_tokenrnroÚerrtokenrqrxÚltypeÚtÚpÚpnameÚplenÚtargÚt1rMr(ÚtokrUr 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)Nrrsr†rmrrYr^rFrFrCrUrr‘r’r\r“))rhrjrfrtr@rˆr‡rCr7r‚r4rnrorBrpr9r$r”r•rr"rFrUr\rWrYr^rArxr˜rbr™ršrlr6r›r8r}r~rrœrr 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)Nrrsr†rmrrFrFrCrUrr‘r’r\r“))rhrjrfrtr@rˆr‡rCr7r‚r4rnrorBrpr9r$r”r•rr"rFrArxr˜rbr™ršrlrWr6r›r8rUr}r~rrYr\r^rœ)r r‚rCrrƒ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 r0r2rkrzr…rr€rr 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 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"ÚusymsrpÚlr_itemsÚlr_nextr–r>) r r³rr Ú precedencer´rµr¶rDr 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©Nrsr 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|_WnttfyRg|_Yn0z|j|d|_Wnty€d|_Yn0|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Ú.) 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 rDr 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 dSrr)r")ZsymbolsÚ 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__cCs8||jvrtd|ƒ‚|dvr&tdƒ‚||f|j|<dS)Nz,Precedence already specified for terminal %r)Úleftr¯Únonassocz:Associativity must be one of 'left','right', or 'nonassoc')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 )rDr§r&©Úmark_reachable_fromÚ reachabler r r r÷vs   z5Grammar.find_unreachable..mark_reachable_fromrcsg|]}|ˆvr|‘qSr r rG)rør r rI€rJz,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¦||jvrÐ||jvrÐ|dkrÐq¦|  |¡q¦| S)NTrmFr)rÙrÚrÂrur rp) r Z terminatesr¦rMÚ some_changeÚplr§rDZ 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Ùrp)r r(r§rDr r r Úundefined_symbolsÊs  zGrammar.undefined_symbolscCs2g}|j ¡D]\}}|dkr|s| |¡q|SrÖ)rÙrurp)r Z unused_tokrDrOr r r Úunused_terminalsÛs   zGrammar.unused_terminalscCs8g}|j ¡D]$\}}|s|j|d}| |¡q|S©Nr)rÚrurÂrp)r Z unused_prodrDrOr§r r r Ú unused_rulesês  zGrammar.unused_rulescCs@g}|jD]0}||jvs ||jvs | ||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||vr| |¡q|rFqqVq| d¡|S)NFúT)rÛrp)r Zbetar(Ú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)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]¼\}}||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)NrsrmFrT) rÜrÛrrÚr×rrêr rrpr") r rôÚkÚdidaddr§rQÚBZfstZhasemptyrr r r Úcompute_followSs:      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©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ýrþrÿrrrrr r r r r r rÕÃs $  T @#% ;rÕc@s eZdZdS)Ú VersionErrorNr r r r r r ²sr c@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__r Z _lr_actionrgZ_lr_gotorireZ_lr_productionsrprÍ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Úloadrr rrgrirerprÍÚ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ÚNrrBÚFr r r Údigraph s  r-c Csü| |¡t|ƒ}|||<||ƒ||<||ƒ}|D]f} || dkrVt| ||||||ƒt|||| ƒ||<| | g¡D]} | ||vrx|| | ¡qxq2|||krøt||d<||||d<| ¡} | |krøt||d<||||d<| ¡} qÊdS)Nrr)rpr"r'Úminr•ÚMAXINTr”) rr+rBr,r(r)r*ÚdÚrelÚyÚaÚelementr r r r's(       r'c@s eZdZdS)Ú LALRErrorNr r r r r r5+sr5c@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)r5ÚgrammarrrÚlogrgrir×reÚ lr_goto_cacheÚ lr0_cidhashÚ _add_countZ sr_conflictZ rr_conflictÚ conflictsÚ sr_conflictsÚ rr_conflictsr rr Úlr_parse_table)r r7Úmethodr8r r r r 6s,    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ºrA)r ÚIÚJrrRrr 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)Nrm)r9r•r%rºrÆrprD) r rBrÚgrDZgsr§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|ƒ|jvr¦q‚t|ƒ|jt|ƒ<|  |¡q‚q@|Sr ) rDr7r×rºr:r%r"r¸rGrp) r ÚCrQrBZasymsÚiirDrrEr r r Ú lr0_items˜s(     zLRGeneratedTable.lr0_itemscCsxtƒ}d}|jjdd…D]@}|jdkr6| |j¡q|jD]}||vr<qq<| |j¡qt|ƒ|krjqtt|ƒ}q |Sr )rÞr7r×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 r7rÚrp)r rHÚtransZstatenorxr§r¦r r r Úfind_nonterminal_transitionsísz-LRGeneratedTable.find_nonterminal_transitionsc Cs|\}}g}| |||¡}|D]B}|j|jdkr |j|jd} | |jjvr | |vr | | ¡q |dkrŒ||jjdjdkrŒ| d¡|S)Nrsrrm)rGrÏr"r r7rÙrpr×) r rHrMrKrxr+ÚtermsrEr§r3r r r Ú dr_relation s   zLRGeneratedTable.dr_relationc Csrg}|\}}| |||¡}|j t|ƒd¡}|D]:} | j| jdkr2| j| jd} | |vr2| || f¡q2|S)Nrrs)rGr:r•r%rÏr"r rp) r rHrMÚemptyr1rxr+rErRr§r3r 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)Nrsrr) rrÏr"r r7rÙrprGr:r•r%)r rHrMrKZlookdictZ includedictZdtransr¦rxr+ZlookbZincludesr§rÏrRZlirEr&rQr r r Úcompute_lookback_includesD sX          z*LRGeneratedTable.compute_lookback_includescs0‡‡‡fdd„}‡‡‡fdd„}t|||ƒ}|S)Ncsˆ ˆ|ˆ¡Sr)rP©r©rHrKr r r Ú• rJz4LRGeneratedTable.compute_read_sets..csˆ ˆ|ˆ¡Sr)rRrTrUr r rV– rJ©r-)r rHÚntransrKr*r)r,r rUr Úcompute_read_sets” s z"LRGeneratedTable.compute_read_setscs(‡fdd„}‡fdd„}t|||ƒ}|S)Ncsˆ|Srr rT)Úreadsetsr r rV« rJz6LRGeneratedTable.compute_follow_sets..cs ˆ |g¡Sr)r•rT)Úinclsetsr r rV¬ rJrW)r rXrZr[r*r)r,r )r[rZr Úcompute_follow_setsª s   z$LRGeneratedTable.compute_follow_setsc Csl| ¡D]^\}}|D]P\}}||jvr0g|j|<| |g¡}|D]"}||j|vr@|j| |¡q@qqdSr)rurÐr•rp) r Z lookbacksZ followsetrMZlbrxr§rr3r r r Úadd_lookaheads¼ s    zLRGeneratedTable.add_lookaheadscCsP| ¡}| |¡}| |||¡}| |||¡\}}| |||¡}| ||¡dSr)rLrNrYrSr\r])r rHrKrMrZZlookdZincludedZ 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) %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) r7r×rÝrirgr8rrrJr^r³r"rÏrrÐrÜrpr•r·r=rÌr¶r>r5r rÙrGr:r%rr¸rÚ)$r r×rÝrjrhr8ZactionprHÚstrBZactlistZ st_actionZ st_actionpZst_gotor§Zlaheadsr3r&ZsprecZslevelZrprecZrlevelZoldpÚppZchosenpZrejectprQrErRZ _actprintrñZnot_usedZnkeysrIrDrMr r r r?æ 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Î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 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Úsplitrrr–r rÚbasenamerrrgrur•rprirer´r>rr"rµr¶r")r Ú tabmoduleÚ outputdirr$Zbasemodulenamer#rZsmallerrurDZndrrOrQrr§Ú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)rrrr ÚdumprÚpickle_protocolrrgrirer´rpr>rr"rrrfrµr¶)r r#r$rZoutfZoutpr§r r r Ú pickle_table" s     , zLRGeneratedTable.pickle_table)rN)rˆrˆ)rˆ)rrrr rDrGrJrLrNrPrRrSrYr\r]r^r?rjrnr r r r r65s" %#8+PB {r6cCs0t |¡}|j ¡}|j|jkr,| |j¡|Sr)r}Ú _getframeÚ f_globalsÚcopyÚf_localsÚupdate)ZlevelsrZldictr r r Úget_caller_module_dictE s     rtc 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) Nrsrú|z%s:%d: Misplaced '|'éú:z::=z!%s:%d: Syntax error. Expected ':'z%s:%d: Syntax error in rule %r)Ú splitlinesrerbrpÚ ExceptionÚstrip) Údocrµr¶r7ZpstringsZlastpZdlineZpsr§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|_|durBtt j ƒ|_ n||_ dS)NF) rÊrôÚ error_funcÚtokensrÞrr7rrr}r~r8)r rÊr8r 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¡qXWnttfyŒYn0d |¡S)NrˆcSsg|]}d |¡‘qS)rˆ)r–)rHr§r r r rI¢ rJz+ParserReflect.signature..r‰r)rôrpr·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]*)\(rsz;%s:%d: Function %s redefined. Previously defined on line %d) ÚreÚcompilerÚinspectZgetsourcelinesrdrêréÚgroupr•Ú getsourcefiler8r) 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ôrKÚ string_typesr8rr;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Ú MethodTyper8rÚ__code__Úco_firstlinenoÚ co_filenamer“Ú getmodulerrìÚ co_argcount)r ZismethodZelineZefilerZargcountr 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)NrzNo token list is definedTztokens must be a list or tupleztokens is empty) rÊr•r8rrKrvr²Úsortedr)r rr 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)rr8rrÞ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 tablervz?Malformed precedence entry %s. Must be (assoc, term, ..., term)rz)precedence associativity must be a stringrsz precedence items must be strings) r·rKrvr²r8rrê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™rcSs |dt|dƒ|d|dfS)Nrrsrvrr=)Z p_functionr r r rVF s  üz.ParserReflect.get_pfunctions..)Úkey)rÊruÚ startswithrKrršr›rWrœrr“rŸrpÚ__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<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 definedTrvrsz%%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‰rwz9%s:%d: Possible grammar rule %r defined without p_ prefix)r"rr8rr“r•rÊrKrr›rœr rr¦rr|rprbr>rrìrur¥ršÚ__func__reržrrÄr7)r r7r¶rrr{rµr´ZreqargsZparsed_grErirMrOr r r rŠN sf      ÿ    ÿ ÿ ÿ z!ParserReflect.validate_pfunctions)N)rrrr r…rŒr$r‹r€r†rr‡r‚rˆrƒr‰r„rŠr r r r r}z s  r}c < sŒ |dur t}| rd}| dur&ttjƒ} ˆrž‡fdd„tˆƒDƒ} t| ƒ}d|vrdtj|dj|d<d|vr¦d|vr¦ttj|ddƒr¦tj|dj |d<nt dƒ}| durt |t j ƒrÄ|j}nLd|vrÖ|d}n:| d¡}d |dd …¡}td |ƒttj|dd ƒ}tj |¡} | d¡}|rNt |tƒrNd|vrN|d|}|dur`||d <t|| d }| ¡|jr„tdƒ‚| ¡}ztƒ}| r¦| | ¡}n | |¡}|sÀ||krz&| |j ¡t!||j"ƒ}|j#a#|WWSt$y}z|  %d|¡WYd}~n d}~00WnFt&yP}z|  %t|ƒ¡WYd}~nd}~0t'ybYn0| 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/ƒ}|j0D]R\}}}z| 1|||¡Wn2t2yj}z|  %d|¡WYd}~n d}~00q|j3D]d\}}|\} }!}"}#z| 4|"|#|| |!¡Wn6t2yÖ}z|  d|¡d}WYd}~n d}~00qvz&|durö| 5|j6¡n | 5|¡Wn8t2y:}z|  t|ƒ¡d}WYd}~n d}~00|rJtdƒ‚| 7¡}$|$D]"\}%}&|  d|&j8|&j9|%¡d}qV| :¡}'|'rÊ|  +d ¡|  +d¡|  +d ¡|'D]}|  %d|¡|  +d|¡qª|r|  +d ¡|  +d¡|  +d ¡t;|j<ƒD]\}(})|  +d|(|)¡qø| =¡}*|*D]}&|  %d|&j8|&j9|&j>¡qt?|'ƒdkrT|  %d¡t?|'ƒdkrr|  %d t?|'ƒ¡t?|*ƒdkrŠ|  %d!¡t?|*ƒdkr¨|  %d"t?|*ƒ¡|rx|  +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ƒ¡¡qB|  +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|3dkr>|  %d-¡n|3dkrT|  %d.|3¡t?|jJƒ}4|4dkrt|  %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|8vrqî|  %d3|5|9¡|  %d4|:|5¡|  %d3|5|9¡|  %d4|:|5¡|8 M|5tL|9ƒtL|:ƒf¡qîg};|jJD]@\}5}9}:|:jNsr|:|;vrr|  %d5|:¡|  %d5|:¡|; O|:¡qr| rz&| P|| |¡|tjvrÞtj|=Wn8t) y}z|  %d6||f¡WYd}~n d}~00| rjz| Q| |¡Wn8t) yh}z|  %d6| |f¡WYd}~n d}~00| |j ¡t!||j"ƒ}|j#a#|S)7Nrcsg|]}|tˆ|ƒf‘qSr )rW)rHr©rr r rI£ rJzyacc..Ú__file__rÚ __package__rvrÎrrrˆrô)r8zUnable to build parserz.There was a problem loading the table file: %rrczCouldn'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=rGr r r rIM rJz*Nonterminals, with rules where they appearcSsg|] }t|ƒ‘qSr r=rGr r r rIU rJzSymbol %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_modulerr}r~ÚdirÚdictrr«r›r¬rtrKrrrer–rrWrrÚdirnamer•r>r}r…rrr$rr%rr&rÊrcr~r…ryrr rr rdrrÚ __version__rŒrÕrr¢rærÔr7ròrõrôrþrµr¶rÿrêr×rrr"rvrÙr§rÚrùrýrrr6r=r>rÞr%rìrÌrprjrn)Úmaxsizer/Úobjectrrryrr)r+r/r3r1r.r0r2r4r8r9r@rcr’rèr­rÍrÁrÓrÔrÕr rr-r'r5r6rtr|r}r¸r r r r Ú>s’   7m H.rT   ) þ