U ×ÄV}ã @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.8Tz parser.outÚparsetabÚLALRéFé(c@s4eZdZdd„Zdd„ZeZdd„Zdd„ZeZd S) Ú PlyLoggercCs ||_dS©N)Úf)Úselfr©r ú9/opt/alt/python38/lib/python3.8/site-packages/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ÚinforrZcriticalr 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‡srcCsPt|ƒ}d|krt|ƒ}t|ƒtkr4|dt…d}dt|ƒjt|ƒ|f}|S)Nr z ...z<%s @ 0x%x> (%s))ÚreprÚlenÚ resultlimitÚtyperÚid)ÚrÚrepr_strÚresultr r r Ú format_result‹s r)cCsBt|ƒ}d|krt|ƒ}t|ƒdkr(|Sdt|ƒjt|ƒfSdS)Nr éz <%s @ 0x%x>)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 bbbWntk r8YnX|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@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Ú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 Ú òsz.YaccProduction.__getitem__..r)Ú isinstancerArFrB©r Únr r r Ú __getitem__ðs   zYaccProduction.__getitem__cCs||j|_dSr)rArF)r rLÚvr r r Ú __setitem__øszYaccProduction.__setitem__cCsdd„|j||…DƒS)NcSsg|] }|j‘qSr rErGr r r rIüsz/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©ÚgetattrrArKr r r rTszYaccProduction.linenocCs||j|_dSr)rArT)r rLrTr r r Ú set_linenoszYaccProduction.set_linenocCs,t|j|ddƒ}t|j|d|ƒ}||fS)NrTrÚ endlinenorU)r rLÚ startlineZendliner r r ÚlinespanszYaccProduction.linespancCst|j|ddƒS)NÚlexposrrUrKr r r r[ szYaccProduction.lexposcCs,t|j|ddƒ}t|j|d|ƒ}||fS)Nr[rÚ endlexposrU)r rLÚstartposÚendposr r r ÚlexspanszYaccProduction.lexspancCst‚dSr)Ú SyntaxErrorr;r r r rszYaccProduction.error)N)rrrr rMrOrRrSrTrWrZr[r_rr 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|_dSrb)rjr;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_statesrfÚitemsÚlistÚvaluesr")r ÚstateÚactionsZrulesr r r ri9s  zLRParser.set_defaulted_statescCs i|_dSr)rrr;r r r Údisable_defaulted_states@sz!LRParser.disable_defaulted_statesNFcCsZ|str.t|tƒrttjƒ}| |||||¡S|rD| |||||¡S| |||||¡SdSr) Ú yaccdevelrJÚintrÚsysÚstderrÚ parsedebugÚparseoptÚparseopt_notrack)r ÚinputrCrÚ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 rj|dkr¾| |¡|}| d|¡| |¡d}| rÆ| d8} qÆ|dkr.| | }|j}|j}tƒ}||_d|_|r<| d|jdd dd „|| d…Dƒ¡d| |d||¡n| d|jg| |d|¡|rv|| dd…}||d<|rÀ|d}|j|_|j|_|d}t|d|jƒ|_t|d|jƒ|_|| _ z^|| d…=|| d…=| !| ¡| dt"| dƒ¡| |¡| |d|}| |¡WqÆt#k rp| |¡| ¡| ¡|d}d|_|}t$} d|_%YqÆXqÆn¸|rŒ|j|_|j|_|g}|| _ zF| !| ¡| dt"| dƒ¡| |¡| |d|}| |¡WqÆt#k r*| |¡| ¡| ¡|d}d|_|}t$} d|_%YqÆXqÆ|dkrj|d}t|ddƒ}| dt"|ƒ¡| d¡|S|dkr”| &dd d  dd „|Dƒdd…¡t|ƒf ¡¡| dksº|j%r|t$} d|_%|}|jdkrØd}|j'r|røt(|dƒsø||_t)|j'||ƒ}|j%rz|}d}qÆn`|rjt(|d ƒr4|j}nd}|rVt*j+ ,d!||jf¡nt*j+ ,d"|j¡nt*j+ ,d#¡dSnt$} t|ƒdkr²|jdkr²d}d}d}|dd…=qÆ|jdkrÂdS|jdkrd|d}|jdkr|rt|d |jƒ|_t|d$|jƒ|_d}qÆtƒ}d|_t(|d ƒr4|j|_|_t(|d$ƒrN|j|_|_||_| |¡|}qÆ| ¡}|r‚|j|_|j|_| ¡|d}qÆt-d%ƒ‚qÆdS)&NrzPLY: PARSE DEBUG STARTrq©ÚlexrkÚz State : %sz#Defaulted state %s: Reduce using %dz Stack : %sz%s . %sú cSsg|] }|j‘qSr r:©rHZxxr r r rI±sz'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Ôsú]éÿÿÿÿrXr\z Result : %srFrFzDone : Returning %szPLY: PARSE DEBUG ENDz Error : %scSsg|] }|j‘qSr r:rˆr r r rI=srCrTú(yacc: Syntax error at line %d, token=%s úyacc: Syntax error, token=%sú yacc: Parse error in input. EOF r[úyacc: internal parser error!!! ).rfrhrdrrr@rr†r…rCr7r€r4rlrmrBrnr9r$rÚpopÚgetÚjoinr>Úlstriprr"rFrTr[rVrXr\rAÚcallabler)r`Ú error_countrjrr6Úhasattrr8r{r|rÚ RuntimeError© r r€rCrrr‚Ú lookaheadÚlookaheadstackrwrhÚprodrrÚpsliceÚ errorcountr…Ú get_tokenrlrmÚerrtokenrorvÚltypeÚtÚpÚpnameÚplenÚtargÚt1rLr(ÚtokrTr 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 rJ|dkrJ| |¡|}| |¡d}| r¼| d8} q¼|dkr(| | }|j}|j}tƒ}||_d|_|r„|| dd…}||d<|râ|d}|j|_|j|_|d}t|d|jƒ|_t|d|jƒ|_|| _zJ|| d…=|| d…=| | ¡| |¡| |d|}| |¡Wq¼tk r~| |¡| ¡| ¡|d}d|_|}t} d |_Yq¼Xq¼n¤|rš|j|_|j|_|g}|| _z2| | ¡| |¡| |d|}| |¡Wq¼tk r$| |¡| ¡| ¡|d}d|_|}t} d |_Yq¼Xq¼|dkrJ|d}t|d dƒ}|S|dkr@| dksf|jr(t} d |_|}|jdkr„d}|j rÆ|r¤t!|d ƒs¤||_t"|j ||ƒ}|jr&|}d}q¼n`|rt!|d ƒrà|j}nd}|rt#j$ %d ||jf¡nt#j$ %d|j¡nt#j$ %d¡dSnt} t|ƒdkr^|jdkr^d}d}d}|dd…=q¼|jdkrndS|jdkr|d}|jdkrº|r´t|d |jƒ|_t|d|jƒ|_d}q¼tƒ}d|_t!|d ƒrà|j|_|_t!|dƒrú|j|_|_||_| |¡|}q¼| ¡}|r.|j|_|j|_| ¡|d}q¼t&dƒ‚q¼dS)Nrrqr„rkrŒrXr\rFrFrCrTrrŽrr[r)'rfrhrdrrr@r†r…rCr7r€r4rlrmrBrnr9r$r‘r’rr"rFrTr[rVrXr\rAr•r`r–rjr6r—r8r{r|rr˜r™r r r r~±sN                                  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|_|r>|| dd…}||d<|| _zJ|| d…=|| d…=| | ¡| |¡| |d|}| |¡Wq¼tk r8| |¡| ¡| ¡|d}d|_|}t} d|_Yq¼Xq¼nŽ|g}|| _z2| | ¡| |¡| |d|}| |¡Wq¼tk rÈ| |¡| ¡| ¡|d}d|_|}t} d|_Yq¼Xq¼|dkrî|d}t|ddƒ}|S|dkr¨| dks |jrÌt} d|_|}|jdkr(d}|jrj|rHt|d ƒsH||_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¼|jdkrdS|jdkrŽ|d}|jdkr8d}q¼tƒ}d|_t|d ƒr^|j|_|_#t|dƒrx|j$|_$|_%||_| |¡|}q¼| ¡}| ¡|d}q¼t&dƒ‚q¼dS)Nrrqr„rkrŒrFrFrCrTrrŽrr[r)'rfrhrdrrr@r†r…rCr7r€r4rlrmrBrnr9r$r‘r’rr"rFrAr•r`r–rjrVr6r—r8rTr{r|rrXr[r\r˜)r r€rCrrr‚ršr›rwrhrœrrrržr…rŸrlrmr rorvr¡r¢r£r¤r¥r¦rLr(r¨rTr r r rÝs.                                  zLRParser.parseopt_notrack)NNFFN)NNFFN)NNFFN)NNFFN) rrrr r0r2rirxrƒr}r~rr r r r ras  W .raz^[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"ÚusymsrnÚ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?.szProduction.__repr__cCs t|jƒSr)r"rœr;r r r rS1szProduction.__len__cCsdS©Nrqr r;r r r Ú __nonzero__4szProduction.__nonzero__cCs |j|Sr)rœ©r Úindexr r r rM7szProduction.__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 rLr£r r r Úlr_item;s   zProduction.lr_itemcCs|jr||j|_dSr©r°r•©r Úpdictr r r ÚbindKszProduction.bind)rªNr†r) rrrÚreducedr r<r?rSrºrMrÃ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 TszMiniProduction.__init__cCs|jSrr=r;r r r r<]szMiniProduction.__str__cCs d|jS)NzMiniProduction(%s)r=r;r r r r?`szMiniProduction.__repr__cCs|jr||j|_dSrrÄrÅr r r rÇdszMiniProduction.bindN)rrrr r<r?rÇr r r r rÉSs rÉc@s$eZdZdd„Zdd„Zdd„ZdS)r½cCsZ|j|_t|jƒ|_|j|_||_i|_|j |d¡t|jƒ|_t|jƒ|_|j |_ dS)NÚ.) rrtrœr¯Úlr_indexÚ lookaheadsÚinsertr®r"r´)r r£rLr 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|||kr(||S|d8}q dSrp)r")ZsymbolsÚ terminalsrPr 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 rSÔszGrammar.__len__cCs |j|Sr)rÓr»r r r rM×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'"rqzA%s:%d: Literal token %s in rule %r may only be a single characterz%precz!%s:%d: Illegal name %r in rule %rrŒz+%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"r`rÙr’rÛÚaddrÏrÔr±r²rÓrÖrnr©r¾rÁ)r ÚprodnameÚsymsr°r±r²rLrDÚcZprecnameZprodprecÚmapÚmZpnumberr¢r£r r r Úadd_productionûsv     ÿ   ÿ       ÿ        zGrammar.add_productioncCsT|s|jdj}||jkr&td|ƒ‚tdd|gƒ|jd<|j| d¡||_dS)Nrqzstart symbol %s undefinedrúS')rÓrrÖrÐr©rnrÜ)r Ústartr r r Ú set_startOs   zGrammar.set_startcs>‡‡‡fdd„‰tƒ‰ˆˆjdjdƒ‡fdd„ˆjDƒS)NcsB|ˆkr dSˆ |¡ˆj |g¡D]}|jD] }ˆ|ƒq.q$dSr)rér¾r’rœ)rDr£r&©Úmark_reachable_fromÚ reachabler r r rôbs   z5Grammar.find_unreachable..mark_reachable_fromrcsg|]}|ˆkr|‘qSr r rG)rõr r rIlsz,Grammar.find_unreachable..)rÚrÓrœrÖr;r rór Úfind_unreachable_szGrammar.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)NTrkFr)rÕrÖr¾rsrœrn) r Z terminatesr¢rLÚ some_changeZplr£rDZ p_terminatesÚinfiniterÝr r r Úinfinite_cyclesvs8      zGrammar.infinite_cyclescCsPg}|jD]@}|sq |jD].}||jkr||jkr|dkr| ||f¡qq |SrÒ)rÓrœr¾rÕrn)r r(r£rDr r r Úundefined_symbols¶s  zGrammar.undefined_symbolscCs2g}|j ¡D]\}}|dkr|s| |¡q|SrÒ)rÕrsrn)r Z unused_tokrDrNr r r Úunused_terminalsÇs   zGrammar.unused_terminalscCs8g}|j ¡D]$\}}|s|j|d}| |¡q|S©Nr)rÖrsr¾rn)r Z unused_prodrDrNr£r r r Ú unused_rulesÖs  zGrammar.unused_rulescCs@g}|jD]0}||jks ||jks | ||j|df¡q |Srü)rÙrÕrÛrn)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×rn)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|krn|j| |¡d}qnq^qP|sFq¢qF|jS)NrkFT)r×rÕrÖr¾rrœrn)r r¢rLr÷r£rr r r Ú compute_firsts"      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)NrqrkFrÿT) rØr×rrÖrÓrrçrœrrnr") r rñÚkÚdidaddr£rPÚBZfstZhasemptyrr r r Úcompute_follow?s:      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©Nrrq) rÓr"r½r¾rœr¿rÀrÁrÂr¶rnrµ)r r£ZlastlrirPrµZlrir r r Ú build_lritemszs,       zGrammar.build_lritems)Nr†r)N)N)rrrr rSrMrãrïròrörùrúrûrýrþrrrrr 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)rergrcÚ 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)rJÚtypesÚ ModuleTypeÚexecr{ÚmodulesZ _tabversionÚ__tabversion__r Z _lr_actionreZ_lr_gotorgrcZ_lr_productionsrnrÉZ _lr_methodr Z _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Úloadrr r rergrcrnrÉÚclose)r ÚfilenamerZin_fZ tabversionÚ signaturerdr£r r r Ú read_pickle¼s(         zLRTable.read_picklecCs|jD]}| |¡qdSr)rcrÇ)r rÆr£r r r Úbind_callablesØs zLRTable.bind_callablesN)rrrr rr!r"r r r r r ¡sr c 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]} | ||krx|| | ¡qxq2|||krøt||d<||||d<| ¡} | |krøt||d<||||d<| ¡} qÊdS)NrrŒ)rnr"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 r1sr1c@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)r1Úgrammarr rÚlogrergrÓrcÚ lr_goto_cacheÚ lr0_cidhashÚ _add_countZ sr_conflictZ rr_conflictZ conflictsÚ sr_conflictsÚ rr_conflictsrrrÚlr_parse_table)r r3Úmethodr4r r r r "s,    zLRGeneratedTable.__init__cCsn|jd7_|dd…}d}|rjd}|D]<}|jD]0}t|ddƒ|jkrLq4| |j¡|j|_d}q4q*q|S)NrqTFÚ lr0_addedr)r7r¿rVrnr¶r<)r ÚIÚJrrQrr r r Ú lr0_closureGs    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)Nrk)r5r’r%r¶rÂrnr?) r r=rÚgrDZgsr£rLÚs1r r r Úlr0_gotoas2       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) r?r3rÓr¶r6r%r"r´rBrn) r ÚCrPr=ZasymsÚiirDrr@r r r Ú lr0_items„s(     zLRGeneratedTable.lr0_itemscCsxtƒ}d}|jjdd…D]@}|jdkr6| |j¡q|jD]}||kr<qq<| |j¡qt|ƒ|krjqtt|ƒ}q |Sr)rÚr3rÓ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œr3rÖrn)r rCÚtransZstatenorvr£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)Nrqrrk)rBrËr"rœr3rÕrnrÓ) r rCrHrFZdr_setrvr'Útermsr@r£r/r r r Ú dr_relationís   zLRGeneratedTable.dr_relationc Csrg}|\}}| |||¡}|j t|ƒd¡}|D]:} | j| jdkr2| j| jd} | |kr2| || f¡q2|S)NrŒrq)rBr6r’r%rËr"rœrn) r rCrHÚemptyr-rvr'r@rQr£r/r 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)NrqrŒr) rrËr"rœr3rÕrnrBr6r’r%)r rCrHrFZlookdictZ includedictZdtransr¢rvr'ZlookbZincludesr£rËrQZlir@r&rPr r r Úcompute_lookback_includes1 sX          z*LRGeneratedTable.compute_lookback_includescs0‡‡‡fdd„}‡‡‡fdd„}t|||ƒ}|S)Ncsˆ ˆ|ˆ¡Sr)rK©r©rCrFr r r Ú‚ óz4LRGeneratedTable.compute_read_sets..csˆ ˆ|ˆ¡Sr)rMrOrPr r rQƒ rR©r))r rCÚntransrFr&r%r(r rPr Úcompute_read_sets s z"LRGeneratedTable.compute_read_setscs(‡fdd„}‡fdd„}t|||ƒ}|S)Ncsˆ|Srr rO)Úreadsetsr r rQ˜ rRz6LRGeneratedTable.compute_follow_sets..cs ˆ |g¡Sr)r’rO)Úinclsetsr r rQ™ rRrS)r rTrVrWr&r%r(r )rWrVr Úcompute_follow_sets— s   z$LRGeneratedTable.compute_follow_setsc Csl| ¡D]^\}}|D]P\}}||jkr0g|j|<| |g¡}|D]"}||j|kr@|j| |¡q@qqdSr)rsrÌr’rn) r Z lookbacksZ followsetrHZlbrvr£rr/r r r Úadd_lookaheads© s    zLRGeneratedTable.add_lookaheadscCsP| ¡}| |¡}| |||¡}| |||¡\}}| |||¡}| ||¡dSr)rGrIrUrNrXrY)r rCrFrHrVZlookdZincludedZ 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.|| |j j\}}| |d ¡\}}||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Š|| |j j\}}| |d ¡\}}||ksò||kr@|dkr@|| |j jd8_|| |<|| |<|sˆ| d|¡|j ||df¡nH||kr^|dkr^d| |<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|rf| d¡i} | D]*}!|!jD]}"|"|jjkrxd| |"<qxqn| D]D}#| | |#¡}|j t|ƒd¡}|dkrž|| |#<| d|#|¡qž| ||<| ||<| ||<|d7}qXdS)NzParsing method: %srrr†zstate %dz (%d) %srqrðrkzreduce 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) r3rÓrÙrgrer4rr rErZr¯r"rËrrÌrØrnr’r³r8rÈr²r9r1rœrÕrBr6r%rr´rÖ)$r rÓrÙrhrfr4ZactionprCÚstr=ZactlistZ st_actionZ st_actionpZst_gotor£Zlaheadsr/r&ZsprecZslevelZrprecZrlevelZoldpZppZchosenpZrejectprPr@rQZ _actprintrîZnot_usedZnkeysrDrDrLr 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&tk r”}z‚W5d}~XYnXdS)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 rqrz _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] )rJrrÚIOErrorÚsplitrrr“rrÚbasenamerr rersr’rnrgrcr°r>rr"r±r²r)r Ú tabmoduleÚ outputdirr ZbasemodulenamerrZsmallerrsrDZndrrNrPrr£Ú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_protocolr rergrcr°rnr>rr"rrrar±r²)r rr rZoutfZoutpr£r r r Ú pickle_table s    , zLRGeneratedTable.pickle_table)rN)r†r†)r†)rrrr r?rBrErGrIrKrMrNrUrXrYrZr:rerir r r r r2!s" %#8+P8 zr2cCs0t |¡}|j ¡}|j|jkr,| |j¡|Sr)r{Ú _getframeÚ f_globalsÚcopyÚf_localsÚupdate)ZlevelsrZldictr r r Úget_caller_module_dict' s     roc 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) Nrqrú|z%s:%d: Misplaced '|'éú:z::=z!%s:%d: Syntax error. Expected ':'z%s:%d: Syntax error in rule %r)Ú splitlinesr`r`rnÚ ExceptionÚstrip) Údocr±r²r3ZpstringsZlastpZdlineZpsr£rêrëZassignr r r Ú parse_grammar3 s6  rwc@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Úrr3rrr{r|r4)r rÆr4r r r r ] szParserReflect.__init__cCs,| ¡| ¡| ¡| ¡| ¡dSr)Ú get_startÚget_error_funcÚ get_tokensÚget_precedenceÚget_pfunctionsr;r r r Úget_alll s zParserReflect.get_allcCs6| ¡| ¡| ¡| ¡| ¡| ¡|jSr)Úvalidate_startÚvalidate_error_funcÚvalidate_tokensÚvalidate_precedenceÚvalidate_pfunctionsÚvalidate_modulesrr;r r r Ú validate_allt szParserReflect.validate_allc Cszddlm}Wn tk r0ddlm}YnXz|ƒ}|jrR| |j d¡¡|jrz| d dd„|jDƒ¡ d¡¡|jr˜| d |j¡ d¡¡|j D] }|drž| |d d¡¡qžWnt t fk rÚYnXt   | ¡¡}tjddkr| d¡}|S) Nr)Úmd5zlatin-1r†cSsg|]}d |¡‘qS)r†)r“)rHr£r r r rIˆ sz+ParserReflect.signature..r‡r)ZhashlibrˆrrñrnÚencoder³r“rzÚpfuncsÚ TypeErrorÚ ValueErrorÚbase64Z b16encodeÚdigestr{Ú version_infoÚdecode)r rˆÚsigrrŽr r r r ~ s*"  zParserReflect.signaturec Cs”t d¡}|jD]~}t |¡\}}i}t|ƒD]^\}}|d7}| |¡}|r.| d¡}| |¡} | sn|||<q.t  |¡} |j   d| ||| ¡q.qdS)Nz\s*def\s+(p_[a-zA-Z_0-9]*)\(rqz;%s:%d: Function %s redefined. Previously defined on line %d) ÚreÚcompilerÚinspectZgetsourcelinesrçræÚgroupr’Ú getsourcefiler4r) r ZfrerÚlinesZlinenZ counthashr²rîrÚprevrr 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ñrJÚ string_typesr4rr;r r r r» s  zParserReflect.validate_startcCs|j d¡|_dS)NÚp_error)rÆr’ryr;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)Nrrqz2'p_error' defined, but is not a function or methodTz$%s:%d: p_error() requires 1 argument)ryrJrÚ FunctionTypeÚ MethodTyper4rÚ__code__Úco_firstlinenoÚ co_filenamer”Ú getmodulerréÚ co_argcount)r ZismethodZelineZefilerZargcountr 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)NrzzNo token list is definedTztokens must be a list or tupleztokens is empty)rÆr’r4rrJrtr®rz)r rzr 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)rzr4rrÚrré)r rÎrLr 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 tablerqz?Malformed precedence entry %s. Must be (assoc, term, ..., term)rz)precedence associativity must be a stringrqz precedence items must be strings) r³rJrtr®r4rrçr"r™rnÚpreclist)r r¢râr£rárÝr r r r„ s6       z!ParserReflect.validate_precedencecCs~g}|j ¡D]T\}}| d¡r|dkr*qt|tjtjfƒr|jj}t   |¡}|  ||||j f¡q|j dd„d||_dS)NÚp_ršcSs |dt|dƒ|d|dfS)Nrrqrqrr=)Z p_functionr r r rQ- s  üz.ParserReflect.get_pfunctions..)Úkey)rÆrsÚ startswithrJrr›rœrržr”r rnÚ__doc__ÚsortrŠ)r Z p_functionsrÚitemr²rr r r r 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 definedTrqrqz%%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‡rrz9%s:%d: Possible grammar rule %r defined without p_ prefix)r"rŠr4rr”r–rÆrJrrœrr¡rr¦rrwrnr`r>rrérsr¥r›Ú__func__r`rŸržrÀr3)r r3r²rrrvr±r°ZreqargsZparsed_gr@rdrLrNr r r r…5 sn      ÿ    ÿ ÿ ÿ z!ParserReflect.validate_pfunctions)N)rrrr r€r‡r r†r{rr|r‚r}rƒr~r„rr…r r r r rx\ s  #rxc < 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 )rV)rHr©rr r rIŠ szyacc..Ú__file__rrqrÊrŒr r†Ú __package__rñ)r4zUnable to build parserz.There was a problem loading the table file: %rr^zCouldn'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 usedrqzThere 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 rI0 sz*Nonterminals, with rules where they appearcSsg|] }t|ƒ‘qSr r=rGr r r rI8 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«rorJrrr`r“rrVrrÚdirnamer’r>rxr€rrr r r!rr"rÆraryrƒrtrr rrr_rrÚ __version__r‡rÑrzr¢rãrÐr3rïròrñrúr±r²rûrçrÓrýrr"rtrÕr§rÖrörùrþrr2r8r9rÚr%rérÈrnreri)Úmaxsizer+Úobjectrrrtrr)r+r/r3r1r.r0r2r4r8r9r@rar“rår©rÉr½rÏrÐrÑr r r)r#r1r2rorwrxr¸r r r r Ú>s    4[ H.rT    ) þ