PNG  IHDR;IDATxܻn0K )(pA 7LeG{ §㻢|ذaÆ 6lذaÆ 6lذaÆ 6lom$^yذag5bÆ 6lذaÆ 6lذa{ 6lذaÆ `}HFkm,mӪôô! x|'ܢ˟;E:9&ᶒ}{v]n&6 h_tڠ͵-ҫZ;Z$.Pkž)!o>}leQfJTu іچ\X=8Rن4`Vwl>nG^is"ms$ui?wbs[m6K4O.4%/bC%t Mז -lG6mrz2s%9s@-k9=)kB5\+͂Zsٲ Rn~GRC wIcIn7jJhۛNCS|j08yiHKֶۛkɈ+;SzL/F*\Ԕ#"5m2[S=gnaPeғL lذaÆ 6l^ḵaÆ 6lذaÆ 6lذa; _ذaÆ 6lذaÆ 6lذaÆ RIENDB` 3 Klfd @s ddlZddlZddlZddlZddlZddlZdZdZdZ dZ dZ dZ dZ d Zd ZdZejddkrleZneZejZGd d d eZGd ddeZGdddeZddZddZdadada dZ!ddZ"ddZ#ddZ$ddZ%GdddZ&Gd d!d!Z'Gd"d#d#Z(ej)d$Z*Gd%d&d&eZ+Gd'd(d(eZ,Gd)d*d*eZ-d+d,Z.Gd-d.d.eZ/Gd/d0d0eZ0Gd1d2d2eZ1Gd3d4d4eZ2d5d6Z3d7d8Z4Gd9d:d:eZ5Gd;d<dZ7d?d@Z8GdAdBdBeZ9de de ddd de ddddf dCdDZ:dS)ENz3.11z3.10Tz parser.outparsetabLALRF(c@s4eZdZddZddZeZddZddZeZd S) PlyLoggercCs ||_dS)N)f)selfrr /usr/lib/python3.6/yacc.py__init__mszPlyLogger.__init__cOs|jj||ddS)N )rwrite)rmsgargskwargsr r r debugpszPlyLogger.debugcOs|jjd||ddS)Nz WARNING: r )rr )rrrrr r r warninguszPlyLogger.warningcOs|jjd||ddS)NzERROR: r )rr )rrrrr r r errorxszPlyLogger.errorN) __name__ __module__ __qualname__r rinforrZcriticalr r r r rls rc@seZdZddZddZdS) NullLoggercCs|S)Nr )rnamer r r __getattribute__szNullLogger.__getattribute__cOs|S)Nr )rrrr r r __call__szNullLogger.__call__N)rrrrrr r r r r~src@s eZdZdS) YaccErrorN)rrrr r r r rsrcCsPt|}d|krt|}t|tkr4|dtd}dt|jt||f}|S)Nr z ...z<%s @ 0x%x> (%s))reprlen resultlimittyperid)rrepr_strresultr r r format_results r%cCsBt|}d|krt|}t|dkr(|Sdt|jt|fSdS)Nr z <%s @ 0x%x>)rrr rr!)r"r#r r r format_stack_entrys  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() cCstjttS)N)warningswarn_warnmsg_errokr r r r erroks r,cCstjttS)N)r(r)r*_restartr r r r restarts r.cCstjttS)N)r(r)r*_tokenr r r r tokens r0c Cs>|ja|ja|ja||}y bbbWntk r8YnX|S)N)r,r+r0r/r.r- NameError) errorfuncr0parserr"r r r call_errorfuncs r4c@seZdZddZddZdS) YaccSymbolcCs|jS)N)r )rr r r __str__szYaccSymbol.__str__cCst|S)N)str)rr r r __repr__szYaccSymbol.__repr__N)rrrr6r8r r r r r5sr5c@sneZdZdddZddZddZdd Zd d Zd d ZddZ ddZ ddZ ddZ ddZ ddZdS)YaccProductionNcCs||_||_d|_d|_dS)N)slicestacklexerr3)rsr;r r r r szYaccProduction.__init__cCsBt|trdd|j|DS|dkr2|j|jS|j|jSdS)NcSsg|] }|jqSr )value).0r=r r r sz.YaccProduction.__getitem__..r) isinstancer:r>r;)rnr r r __getitem__s   zYaccProduction.__getitem__cCs||j|_dS)N)r:r>)rrBvr r r __setitem__szYaccProduction.__setitem__cCsdd|j||DS)NcSsg|] }|jqSr )r>)r?r=r r r r@sz/YaccProduction.__getslice__..)r:)rijr r r __getslice__szYaccProduction.__getslice__cCs t|jS)N)rr:)rr r r __len__szYaccProduction.__len__cCst|j|ddS)Nlinenor)getattrr:)rrBr r r rJszYaccProduction.linenocCs||j|_dS)N)r:rJ)rrBrJr r r set_linenoszYaccProduction.set_linenocCs,t|j|dd}t|j|d|}||fS)NrJr endlineno)rKr:)rrB startlineZendliner r r linespanszYaccProduction.linespancCst|j|ddS)Nlexposr)rKr:)rrBr r r rP szYaccProduction.lexposcCs||j|_dS)N)r:rP)rrBrPr r r set_lexposszYaccProduction.set_lexposcCs,t|j|dd}t|j|d|}||fS)NrPr endlexpos)rKr:)rrBstartposendposr r r lexspanszYaccProduction.lexspancCstdS)N) SyntaxError)rr r r rszYaccProduction.error)N)rrrr rCrErHrIrJrLrOrPrQrUrr r r r r9s r9c@s\eZdZddZddZddZddZd d Zdd dZdddZ dddZ dddZ d S)LRParsercCs0|j|_|j|_|j|_||_|jd|_dS)NT) lr_productions productions lr_actionactionlr_gotogotor2set_defaulted_stateserrorok)rZlrtabZerrorfr r r r s zLRParser.__init__cCs d|_dS)NT)r_)rr r r r,(szLRParser.errokcCs@|jdd=|jdd=t}d|_|jj||jjddS)Nz$endr) statestacksymstackr5r append)rsymr r r r.+s    zLRParser.restartcCsTi|_xH|jjD]:\}}t|j}t|dkr|ddkr|d|j|<qWdS)Nr)defaulted_statesr[itemslistvaluesr)rstateactionsZrulesr r r r^;s  zLRParser.set_defaulted_statescCs i|_dS)N)re)rr r r disable_defaulted_statesBsz!LRParser.disable_defaulted_statesNFcCsZ|str.t|trttj}|j|||||S|rD|j|||||S|j|||||SdS)N) yaccdevelrAintrsysstderr parsedebugparseoptparseopt_notrack)rinputr<rtracking tokenfuncr r r parseEs  zLRParser.parsec Csd}g}|j}|j} |j} |j} td} d} |jd|sLddlm}|j}|| _|| _ |dk rj|j ||dkrz|j }n|}||_ g}||_ g}||_ || _d}|jdt}d|_|j|d}x|jd|jd||| kr.|s|s|}n|j}|st}d|_|j}||j|}n| |}|jd|| |jd d d jd d |Dddt|fj|dk r|dkr|j||}|jd||j|d}| r| d8} q|dkrN| | }|j}|j}t}||_d|_|rB|jd|jddjdd || dDd| |d%||n|jd|jg| |d&||r|| dd}||d<|r|d}|j|_|j|_|d'}t|d|j|_t|d|j|_|| _ yd|| d=||_!|j"| || d=|jdt#| d|j|| |d(|}|j|Wqt$k r|j||j%|dd)|j|d*}d|_d|_|}t&} d|_'YqXqn|r|j|_|j|_|g}|| _ yL||_!|j"| |jdt#| d|j|| |d+|}|j|Wqt$k rJ|j||j|d,}d|_d|_|}t&} d|_'YqXq|dkr|d-}t|dd}|jdt#||jd|S|dkr|j(dd d jdd |Dddt|fj| dks|j'rt&} d|_'|}|jdkrd}|j)rB|rt*|d r||_||_!t+|j)||}|j'r|}d}qn`|rt*|dr\|j}nd}|r~t,j-j.d ||jfnt,j-j.d!|jnt,j-j.d"dSnt&} t|dkr|jdkrd}d}d}|dd=q|jdkrdS|jdkr|d.}|jdkr6|r0t|d|j|_t|d#|j|_d}qt}d|_t*|dr\|j|_|_t*|d#rv|j|_|_||_|j||}q|j}|r|j|_|j|_|j|d/}qt/d$qWdS)0NrzPLY: PARSE DEBUG STARTrd)lexz$endz State : %sz#Defaulted state %s: Reduce using %dz Stack : %sz%s . %s cSsg|] }|jqSr )r )r?xxr r r r@sz'LRParser.parsedebug..z Action : Shift and goto state %sz3Action : Reduce rule [%s] with %s and goto state %d[,cSsg|]}t|jqSr )r'r>)r?Z_vr r r r@s]rMrRz Result : %srFr>zDone : Returning %szPLY: PARSE DEBUG ENDz Error : %scSsg|] }|jqSr )r )r?rzr r r r@Dsr<rJz(yacc: Syntax error at line %d, token=%s zyacc: Syntax error, token=%sz yacc: Parse error in input. EOF rPzyacc: internal parser error!!! r~r~r~r~r~r~r~r~r~r~)0r[r]rYrer9rrxrwr<r3rsr0r`rar;rbr5r rpopgetjoinr7lstriprrr>rJrPrKrMrRr:ricallabler%rVextend error_countr_rr2hasattrr4rnror RuntimeError) rrsr<rrtru lookaheadlookaheadstackrjr]prodrepslice errorcountrw get_tokenr`raerrtokenrcriltypetppnameplentargt1rBr$tokrJr r r rp^s~        .        $               .           zLRParser.parsedebugc Csvd}g}|j}|j} |j} |j} td} d} |sBddlm}|j}|| _|| _|dk r`|j ||dkrp|j }n|}||_ g}||_ g}||_ || _ d}|jdt}d|_|j|d}x|| kr|s|s|}n|j}|st}d|_|j}||j|}n| |}|dk rh|dkrN|j||}|j|d}| r| d8} q|dkrF| | }|j}|j}t}||_d|_|r|| dd}||d<|r|d}|j|_|j|_|d}t|d|j|_t|d|j|_|| _yP|| d=||_|j| || d=|j|| |d|}|j|Wqtk r|j||j|dd|j|d}d|_d|_|}t } d|_!YqXqn|r|j|_|j|_|g}|| _y8||_|j| |j|| |d|}|j|Wqtk rB|j||j|d}d|_d|_|}t } d|_!YqXq|dkrh|d}t|d d}|S|dkrf| dks|j!rNt } d|_!|}|jdkrd}|j"r|rt#|d  r||_||_t$|j"||}|j!rL|}d}qn`|rr<rJz(yacc: Syntax error at line %d, token=%s zyacc: Syntax error, token=%sz yacc: Parse error in input. EOF rPzyacc: internal parser error!!! r~r~r~r~r~r~r~r~r~))r[r]rYrer9rxrwr<r3rsr0r`rar;rbr5r rrrrr>rJrPrKrMrRr:rirrVrrr_r2rr4rnror r) rrsr<rrtrurrrjr]rrerrrwrr`rarrcrirrrrrrrrBr$rrJr r r rqsX                                  zLRParser.parseoptc Csd}g}|j}|j} |j} |j} td} d} |sBddlm}|j}|| _|| _|dk r`|j ||dkrp|j }n|}||_ g}||_ g}||_ || _ d}|jdt}d|_|j|d}x|| kr|s|s|}n|j}|st}d|_|j}||j|}n| |}|dk r |dkrN|j||}|j|d}| r| d8} q|dkr| | }|j}|j}t}||_d|_|rX|| dd}||d<|| _yP|| d=||_|j| || d=|j|| |d|}|j|Wqtk rR|j||j|dd|j|d}d|_d|_|}t} d|_YqXqn|g}|| _y8||_|j| |j|| |d|}|j|Wqtk r|j||j|d}d|_d|_|}t} d|_YqXq|dkr |d}t|dd}|S|dkr| dks(|jrt} d|_|}|jdkrFd}|jr|rht|d rh||_||_t |j||}|jr|}d}qn`|rt|d r|j!}nd}|rt"j#j$d ||jfnt"j#j$d |jnt"j#j$d dSnt} t|dkr(|jdkr(d}d}d}|dd=q|jdkr8dS|jdkr|d}|jdkr^d}qt}d|_t|d r|j!|_!|_%t|d r|j&|_&|_'||_|j||}q|j}|j|d}qt(dqWdS)Nrrd)rwz$endrFr>r<rJz(yacc: Syntax error at line %d, token=%s zyacc: Syntax error, token=%sz yacc: Parse error in input. EOF rPzyacc: internal parser error!!! r~r~r~r~r~r~r~r~))r[r]rYrer9rxrwr<r3rsr0r`rar;rbr5r rrrrr>r:rirrVrrr_rKr2rr4rJrnror rMrPrRr)rrsr<rrtrurrrjr]rrerrrwrr`rarrcrirrrrrrrBr$rrJr r r rrs8                                  zLRParser.parseopt_notrack)NNFFN)NNFFN)NNFFN)NNFFN) rrrr r,r.r^rkrvrprqrrr r r r rWs  ] 4rWz^[a-zA-Z0-9_-]+$c@sReZdZdZdddZddZd d Zd d Zd dZddZ ddZ ddZ dS) ProductionrrightNrxc Cs||_t||_||_||_d|_||_||_||_t |j|_ g|_ x$|jD]}||j krN|j j |qNWg|_ d|_ |jrd|jdj|jf|_n d|j|_dS)Nz%s -> %sryz %s -> )rtuplernumberfuncrfilelineprecrusymsrblr_itemslr_nextrr7) rrrr precedencerrrr=r r r r !s$    zProduction.__init__cCs|jS)N)r7)rr r r r6?szProduction.__str__cCsdt|dS)Nz Production())r7)rr r r r8BszProduction.__repr__cCs t|jS)N)rr)rr r r rIEszProduction.__len__cCsdS)Nrdr )rr r r __nonzero__HszProduction.__nonzero__cCs |j|S)N)r)rindexr r r rCKszProduction.__getitem__cCs|t|jkrdSt||}y|j|j|d|_Wnttfk rTg|_YnXy|j|d|_Wntk rd|_YnX|S)Nrd)rrLRItem Prodnameslr_after IndexErrorKeyError lr_before)rrBrr r r lr_itemOs   zProduction.lr_itemcCs|jr||j|_dS)N)rr)rpdictr r r bind_szProduction.bindrr)rNrxr) rrrreducedr r6r8rIrrCrrr r r r rs rc@s,eZdZddZddZddZddZd S) MiniProductioncCs.||_||_||_d|_||_||_||_dS)N)rrrrrrr7)rr7rrrrrr r r r hszMiniProduction.__init__cCs|jS)N)r7)rr r r r6qszMiniProduction.__str__cCs d|jS)NzMiniProduction(%s))r7)rr r r r8tszMiniProduction.__repr__cCs|jr||j|_dS)N)rr)rrr r r rxszMiniProduction.bindN)rrrr r6r8rr r r r rgs rc@s$eZdZddZddZddZdS)rcCsZ|j|_t|j|_|j|_||_i|_|jj|dt|j|_t|j|_|j |_ dS)N.) rrgrrlr_index lookaheadsinsertrrr)rrrBr r r r s   zLRItem.__init__cCs,|jrd|jdj|jf}n d|j}|S)Nz%s -> %sryz %s -> )rrr)rr=r r r r6s zLRItem.__str__cCsdt|dS)NzLRItem(r)r7)rr r r r8szLRItem.__repr__N)rrrr r6r8r r r r rs rcCs:t|d}x(|dkr4|||kr*||S|d8}qWdS)Nrdr)r)Zsymbols terminalsrFr r r rightmost_terminals     rc@s eZdZdS) GrammarErrorN)rrrr r r r rsrc@seZdZddZddZddZddZd$d d Zd%ddZddZ ddZ ddZ ddZ ddZ ddZddZddZd&d d!Zd"d#Zd S)'GrammarcCsfdg|_i|_i|_i|_x|D]}g|j|<q Wg|jd<i|_i|_i|_i|_t|_ d|_ dS)Nr) ProductionsrProdmap Terminals NonterminalsFirstFollow PrecedencesetUsedPrecedenceStart)rrtermr r r r s  zGrammar.__init__cCs t|jS)N)rr)rr r r rIszGrammar.__len__cCs |j|S)N)r)rrr r r rCszGrammar.__getitem__cCsL|jdgkstd||jkr*td||dkr:td||f|j|<dS)Nz2Must call set_precedence() before add_production()z,Precedence already specified for terminal %rleftrnonassocz:Associativity must be one of 'left','right', or 'nonassoc')rrr)rAssertionErrorrr)rrassoclevelr r r set_precedences   zGrammar.set_precedenceNrxrcCs||jkrtd|||f|dkr6td|||ftj|sRtd|||fxt|D]\}}|ddkryJt|}t|dkrtd||||f||jkrg|j|<|||<w\Wntk rYnXtj| r\|d kr\td ||||fq\Wd |kr|dd kr$td ||f|dd krBtd ||f|d} |jj | } | sptd||| fn |j j | |dd=nt ||j} |jj | d} d||f} | |j kr|j | } td||| fd| j| jft|j} ||jkrg|j|<xR|D]J}||jkr.|j|j| n&||jkrDg|j|<|j|j| q Wt| ||| |||}|jj|||j | <y|j|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'"rdzA%s:%d: Literal token %s in rule %r may only be a single characterz%precz!%s:%d: Illegal name %r in rule %rz+%s:%d: Syntax error. Nothing follows %%preczH%s:%d: Syntax error. %%prec can only appear at the end of a grammar rulez/%s:%d: Nothing known about the precedence of %rrz%s -> %sz%s:%d: Duplicate rule %s. zPrevious definition at %s:%dr~r~r)rr)rr_is_identifiermatch enumerateevalrrVrrraddrrrrrrrbrrr)rprodnamesymsrrrrBr=cZprecnameZprodprecmapmZpnumberrrr r r add_productionsp                        zGrammar.add_productioncCsT|s|jdj}||jkr&td|tdd|g|jd<|j|jd||_dS)Nrdzstart symbol %s undefinedrzS')rrrrrrbr)rstartr r r set_startcs   zGrammar.set_startcs>fddtjdjdfddjDS)NcsJ|kr dSj|x.jj|gD]}x|jD] }|q2Wq&WdS)N)rrrr)r=rr")mark_reachable_from reachablerr r rvs   z5Grammar.find_unreachable..mark_reachable_fromrcsg|]}|kr|qSr r )r?r=)rr r r@sz,Grammar.find_unreachable..)rrrr)rr )rrrr find_unreachablesszGrammar.find_unreachablec Csi}x|jD] }d||<q Wd|d<x|jD] }d||<q,Wxpd}x`|jjD]R\}}xH|D]@}x |jD]}||shd}PqhWd}|r\||sd||<d}Pq\WqNW|s>Pq>Wg} x@|jD]4\}} | s||jkr||jkr|dkrq| j|qW| S)NTz$endFr)rrrrfrrb) rZ terminatesrrB some_changeZplrr=Z p_terminatesinfiniterr r r infinite_cycless:       zGrammar.infinite_cyclescCsXg}xN|jD]D}|sq x8|jD].}||jkr||jkr|dkr|j||fqWq W|S)Nr)rrrrrb)rr$rr=r r r undefined_symbolss  zGrammar.undefined_symbolscCs8g}x.|jjD] \}}|dkr| r|j|qW|S)Nr)rrfrb)rZ unused_tokr=rDr r r unused_terminalss zGrammar.unused_terminalscCs<g}x2|jjD]$\}}|s|j|d}|j|qW|S)Nr)rrfrrb)rZ unused_prodr=rDrr r r unused_ruless zGrammar.unused_rulescCsDg}x:|jD]0}||jkp"||jks |j||j|dfq W|S)Nr)rrrrb)rZunusedZtermnamer r r unused_precedences  zGrammar.unused_precedencecCs`g}xV|D]D}d}x2|j|D]$}|dkr0d}q||kr|j|qW|rLq Pq W|jd|S)NFzT)rrb)rZbetar$xZx_produces_emptyrr r r _first s  zGrammar._firstcCs|jr |jSx|jD]}|g|j|<qWdg|jd<x|jD]}g|j|<qT) rrrrrrrrrrbr) rrkdidaddrrFBZfstZhasemptyrr r r compute_followSs<     zGrammar.compute_followcCsx|jD]}|}d}g}x|t|kr,d}ntt||}y|j|j|d|_Wnttfk rng|_YnXy|j|d|_Wntk rd|_YnX||_ |sP|j ||}|d7}qW||_ qWdS)Nrrd) rrrrrrrrrrrbr)rrZlastlrirFrZlrir r r build_lritemss.       zGrammar.build_lritems)Nrxr)N)N)rrrr rIrCrrrrrrrrrrrrrr r r r rs $  T @#% ;rc@s eZdZdS) VersionErrorN)rrrr r r r rsrc@s,eZdZddZddZddZddZd S) LRTablecCsd|_d|_d|_d|_dS)N)rZr\rX lr_method)rr r r r szLRTable.__init__cCs~t|tjr|}ntd|tj|}|jtkr:td|j |_ |j |_ g|_ x|jD]}|j jt|qXW|j|_|jS)Nz import %sz&yacc table file version is out of date)rAtypes ModuleTypeexecrnmodulesZ _tabversion__tabversion__rZ _lr_actionrZZ_lr_gotor\rXZ_lr_productionsrbrZ _lr_methodrZ _lr_signature)rmodulerrr r r read_tables     zLRTable.read_tablec Csy ddl}Wntk r(ddl}YnXtjj|s:tt|d}|j|}|tkr^t d|j||_ |j|}|j||_ |j||_ |j|}g|_ x|D]}|j jt|qW|j|S)Nrrbz&yacc table file version is out of date)cPickle ImportErrorpickleospathexistsopenloadrrrrZr\rXrbrclose)rfilenamerZin_fZ tabversion signaturerYrr r r read_pickles(          zLRTable.read_picklecCsx|jD]}|j|qWdS)N)rXr)rrrr r r bind_callabless zLRTable.bind_callablesN)rrrr rrrr r r r rsrc CsTi}x|D] }d||<q Wg}i}x,|D]$}||dkr(t|||||||q(W|S)Nr)traverse)XRFPNrr;Fr r r digraph s    r c Cs |j|t|}|||<||||<||}xr|D]j} || dkrXt| ||||||t|||| ||<x.|j| gD]} | ||kr|||j| q|Wq4W|||krt||d<||||d<|j} x2| |krt||d<||||d<|j} qWdS)Nrrdr~r~r~r~)rbrrminrMAXINTr) rrr;r rrrdrelyaelementr r r rs(        rc@s eZdZdS) LALRErrorN)rrrr r r r r+src@seZdZd$ddZddZddZd d Zd d Zd dZddZ ddZ ddZ ddZ ddZ ddZddZddZd%d d!Zd&d"d#ZdS)'LRGeneratedTablerNcCs|dkrtd|||_||_|s*t}||_i|_i|_|j|_i|_ i|_ d|_ d|_ d|_ g|_g|_g|_|jj|jj|jj|jdS)NSLRrzUnsupported method %sr)rr)rgrammarrrlogrZr\rrX lr_goto_cache lr0_cidhash _add_countZ sr_conflictZ rr_conflictZ conflicts sr_conflicts rr_conflictsrrrlr_parse_table)rrmethodrr r r r 6s,    zLRGeneratedTable.__init__cCsz|jd7_|dd}d}xV|rtd}xH|D]@}x:|jD]0}t|dd|jkrRq:|j|j|j|_d}q:Wq.Wq W|S)NrdTF lr0_addedr)rrrKrbrr)rIJrrGrr r r lr0_closure[s    zLRGeneratedTable.lr0_closurec Cs|jjt||f}|r|S|jj|}|s:i}||j|<g}xP|D]H}|j}|rD|j|krD|jt|}|s~i}||t|<|j||}qDW|jd}|s|r|j|}||d<n||d<||jt||f<|S)Nz$end)rrr!rrrbr!) rrrgr=ZgsrrBs1r r r lr0_gotous2        zLRGeneratedTable.lr0_gotoc Cs|j|jjdjgg}d}x"|D]}||jt|<|d7}q"Wd}x|t|kr||}|d7}i}x$|D]}x|jD] }d||<qxWqlWxJ|D]B}|j||}| st||jkrqt||jt|<|j |qWqFW|S)Nrrd) r!rrrrr!rrr$rb) rCrFrZasymsiir=rr"r r r lr0_itemss(      zLRGeneratedTable.lr0_itemscCst}d}xrxV|jjddD]B}|jdkr:|j|jqx$|jD]}||krBPqBW|j|jqWt||krrPt|}q W|S)Nrrd)rrrrrrr)rnullableZ num_nullablerrr r r compute_nullable_nonterminalss     z.LRGeneratedTable.compute_nullable_nonterminalscCsrg}xht|D]\\}}xR|D]J}|j|jdkr||j|jdf}|d|jjkr||kr|j|qWqW|S)Nrd)rrrrrrrb)rr%transZstatenorirrr r r find_nonterminal_transitionss z-LRGeneratedTable.find_nonterminal_transitionsc Cs|\}}g}|j|||}xJ|D]B}|j|jdkr"|j|jd} | |jjkr"| |kr"|j| q"W|dkr||jjdjdkr|jd|S)Nrdrz$end)r$rrrrrrbr) rr%r*r(rirtermsr"rrr r r dr_relation s   zLRGeneratedTable.dr_relationc Csvg}|\}}|j|||}|jjt|d}xB|D]:} | j| jdkr4| j| jd} | |kr4|j|| fq4W|S)Nrdr~)r$rrr!rrrrb) rr%r*emptyrrirr"rGrrr r r reads_relation s zLRGeneratedTable.reads_relationcCsi}i}i}x|D] }d||<qWx|D]\}} g} g} xR||D]D} | j| krZqH| j} |}x| | jdkr | d} | j| }||f|kr| d}xH|| jkr| j||jjkrP| j||krP|d}qW| j||f|j|||}|jj t |d}qfWx||D]t}|j| jkr,q|j| jkr>qd}xD||jkrx|j|| j|dkrlP|d}qDW| j||fqWqHWx2| D]*}||krg||<||j|| fqW| ||| f<q*W||fS)Nrdrr~) rrrrrrrbr$rrr!)rr%r*r(ZlookdictZ includedictZdtransrrirZlookbZincludesrrrGZlir"r"rFr r r compute_lookback_includesD sX         z*LRGeneratedTable.compute_lookback_includescs0fdd}fdd}t|||}|S)Ncsj|S)N)r-)r)r%r(rr r  sz4LRGeneratedTable.compute_read_sets..csj|S)N)r/)r)r%r(rr r r1 s)r )rr%ntransr(rrr r )r%r(rr compute_read_sets s z"LRGeneratedTable.compute_read_setscs(fdd}fdd}t|||}|S)Ncs|S)Nr )r)readsetsr r r1 sz6LRGeneratedTable.compute_follow_sets..cs j|gS)N)r)r)inclsetsr r r1 s)r )rr2r4r5rrr r )r5r4r compute_follow_sets s   z$LRGeneratedTable.compute_follow_setsc Csxxr|jD]f\}}x\|D]T\}}||jkr4g|j|<|j|g}x*|D]"}||j|krF|j|j|qFWqWq WdS)N)rfrrrb) rZ lookbacksZ followsetr*Zlbrirrrr r r add_lookaheads s    zLRGeneratedTable.add_lookaheadscCsP|j}|j|}|j|||}|j|||\}}|j|||}|j||dS)N)r)r+r3r0r6r7)rr%r(r*r4ZlookdZincludedZ followsetsr r r add_lalr_lookaheads s  z$LRGeneratedTable.add_lalr_lookaheadsc$ Cs8|jj}|jj}|j}|j}|j}i}|jd|j|j}|jdkrP|j |d}x|D]} g} i} i} i} |jd|jd||jdx| D]}|jd|j |qW|jdx| D]}|j |j dkr(|j dkrd| d <|| d <q|jdkr|j|}n|jj|j }x|D]}| j||d |j |ff| j|}|dk r|dkr>|j|d\}}||j j\}}||ks||kr|d kr|j | |<|| |<| r| r|jd ||jj||df||j jd7_nB||kr|dkrd| |<n$|s|jd||jj||dfn|dkr|| }||j }|j|jkr|j | |<|| |<||}}||j jd7_||j jd8_n ||}}|jj|||f|jd|| |j | |n td|n(|j | |<|| |<||j jd7_q&Wq|j }|j|d}||jjkr|j| |}|jjt|d}|dkr| j||d|f| j|}|dk r|dkr||krtd|n|dkr|j|d\}}|| |j j\}}||ks||krR|d krR|| |j jd8_|| |<|| |<|s|jd||jj||dfnL||krp|dkrpd| |<n.| r| r|jd ||jj||dfn td|q|| |<|| |<qWi}xF| D]>\}}}|| kr|| |kr|jd||d|||f<qW|jdd}xX| D]P\}}}|| kr"|| |k r"||f|kr"|jd||d}d|||f<q"W|r|jdi} x6| D].}!x&|!jD]}"|"|jjkrd| |"<qWqWxL| D]D}#|j| |#}|jjt|d}|dkr|| |#<|jd|#|qW| ||<| ||<| ||<|d7}q\WdS)NzParsing method: %srrrxzstate %dz (%d) %srdzS'z$endzreduce using rule %d (%s)rrz3 ! shift/reduce conflict for %s resolved as reducereducerz2 ! shift/reduce conflict for %s resolved as shiftZshiftz= ! reduce/reduce conflict for %s resolved using rule %d (%s)zUnknown conflict in state %dzshift and go to state %dz Shift/shift conflict in state %dz %-15s %sz ! %-15s [ %s ]z" %-30s shift and go to state %d)rrr~)rrr~) rrrr\rZrrrr'r8rrrrrrrbrrrrrrrrrr$rr!rrr)$rrrr]r[rZactionpr%strZactlistZ st_actionZ st_actionpZst_gotorZlaheadsrr"ZsprecZslevelZrprecZrlevelZoldpZppZchosenpZrejectprFr"rGZ _actprintrZnot_usedZnkeysr&r=rBr r r r s                                             zLRGeneratedTable.lr_parse_tablerxcCst|tjrtd|jdd}tjj||d}ylt|d}|j dtjj |t |j |fd}|rti}xf|j jD]X\} } xN| jD]B\} } |j| } | sggf} | || <| dj| | dj| qWq|W|j dxz|jD]n\}} |j d |x | dD]} |j d | q W|j d x | dD]} |j d | q8W|j d qW|j d |j dnJ|j dx4|j jD]&\}} |j d|d|d| fqW|j d |ri}xl|jjD]^\} } xR| jD]F\} } |j| } | sggf} | || <| dj| | dj| qWqW|j dx||jD]p\}} |j d |x | dD]} |j d | qjW|j d x | dD]} |j d | qW|j d qJW|j d |j dnJ|j dx4|jjD]&\}} |j d|d|d| fqW|j d |j dxd|jD]Z}|jrl|j d|j|j|j|jtjj |j|jfn|j dt||j|jfq0W|j d|jWn&tk r}zWYdd}~XnXdS)Nz"Won't overwrite existing tabmodulerrdz.pywz # %s # This file is automatically generated. Do not edit. # pylint: disable=W,C,R _tabversion = %r _lr_method = %r _lr_signature = %r rz _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] r~)rArrIOErrorsplitrrrrr basenamerrrZrfrrbr\rXrr7rrrrr)r tabmodule outputdirrZbasemodulenamerrZsmallerrfr=ZndrrDrFrrer r r write_table s        "      "   "  zLRGeneratedTable.write_tablecCsy ddl}Wntk r(ddl}YnXt|d}|jt|t|j|j|t|j||t|j|j|t|j|j |tg}x^|j D]T}|j r|j |j |j|j|j tjj|j|jfq|j t ||j|jdddfqW|j||tWdQRXdS)Nrwb)rrrrdumprpickle_protocolrrZr\rXrrbr7rrrrr>rr)rrrrZoutfZoutprr r r pickle_table" s    ,"zLRGeneratedTable.pickle_table)rN)rxrx)rx)rrrr r!r$r'r)r+r-r/r0r3r6r7r8rrBrFr r r r r5s" %#8+PB {rcCs0tj|}|jj}|j|jkr,|j|j|S)N)rn _getframe f_globalscopyf_localsupdate)ZlevelsrZldictr r r get_caller_module_dictE s     rLc Csg}|j}d}|}x|D]}|d7}|j}|s4qy|ddkrh|sVtd||f|} |dd} n@|d} | }|dd} |d} | dkr| dkrtd||f|j||| | fWqtk rYqtk rtd |||jfYqXqW|S) Nrdr|z%s:%d: Misplaced '|'r:z::=z!%s:%d: Syntax error. Expected ':'z%s:%d: Syntax error in rule %r) splitlinesr=rVrb Exceptionstrip) docrrrZpstringsZlastpZdlineZpsrrrZassignr r r parse_grammarQ s6    rSc@seZdZd ddZddZddZdd Zd d Zd d ZddZ ddZ ddZ ddZ ddZ ddZddZddZddZdS)! ParserReflectNcCsL||_d|_d|_d|_t|_g|_d|_|dkrBtt j |_ n||_ dS)NF) rr error_functokensrrrrrrnror)rrrr r r r { szParserReflect.__init__cCs,|j|j|j|j|jdS)N) get_startget_error_func get_tokensget_precedenceget_pfunctions)rr r r get_all s zParserReflect.get_allcCs6|j|j|j|j|j|j|jS)N)validate_startvalidate_error_funcvalidate_tokensvalidate_precedencevalidate_pfunctionsvalidate_modulesr)rr r r validate_all szParserReflect.validate_allc Csg}yv|jr|j|j|jr:|jdjdd|jD|jrR|jdj|jx$|jD]}|drZ|j|dqZWWnttfk rYnXdj|S)NrxcSsg|]}dj|qS)rx)r)r?rr r r r@ sz+ParserReflect.signature..ryr)rrbrrrVpfuncs TypeError ValueError)rpartsrr r r r s  zParserReflect.signaturec Cstjd}x|jD]}ytj|\}}Wntk r>wYnXi}xjt|D]^\}}|d7}|j|}|rN|jd}|j |} | s|||<qNtj |} |j j d| ||| qNWqWdS)Nz\s*def\s+(p_[a-zA-Z_0-9]*)\(rdz;%s:%d: Function %s redefined. Previously defined on line %d) recompilerinspectZgetsourcelinesr<rrgroupr getsourcefilerr) rZfrerlinesZlinenZ counthashrrrprevrr r r rb s$       zParserReflect.validate_modulescCs|jjd|_dS)Nr)rrr)rr r r rW szParserReflect.get_startcCs&|jdk r"t|jts"|jjddS)Nz'start' must be a string)rrA string_typesrr)rr r r r] s  zParserReflect.validate_startcCs|jjd|_dS)Np_error)rrrU)rr r r rX szParserReflect.get_error_funccCs|jrt|jtjrd}n*t|jtjr.d}n|jjdd|_dS|jjj}|jjj }t j |j}|j j ||jjj|}|dkr|jjd||d|_dS)Nrrdz2'p_error' defined, but is not a function or methodTz$%s:%d: p_error() requires 1 argument)rUrAr FunctionType MethodTyperr__code__co_firstlineno co_filenamerj getmodulerr co_argcount)rZismethodZelineZefilerZargcountr r r r^ s      z!ParserReflect.validate_error_funccCsr|jjd}|s&|jjdd|_dSt|ttfsJ|jjdd|_dS|sd|jjdd|_dSt||_dS)NrVzNo token list is definedTztokens must be a list or tupleztokens is empty) rrrrrArgrsortedrV)rrVr r r rY s    zParserReflect.get_tokenscCsZd|jkr |jjdd|_dSt}x.|jD]$}||krH|jjd||j|q.WdS)Nrz.Illegal token name 'error'. Is a reserved wordTzToken %r multiply defined)rVrrrrr)rrrBr r r r_ s   zParserReflect.validate_tokenscCs|jjd|_dS)Nr)rrr)rr r r rZ szParserReflect.get_precedencecCsg}|jrt|jttfs2|jjdd|_dSxt|jD]\}}t|ttfsj|jjdd|_dSt|dkr|jjd|d|_dS|d}t|ts|jjdd|_dSxH|ddD]8}t|ts|jjd d|_dS|j |||dfqWq>W||_ 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 stringrdz precedence items must be strings) rrArgrrrrrrorbpreclist)rryrrrrr r r r` s6       z!ParserReflect.validate_precedencecCsg}xl|jjD]^\}}|jd s|dkr.qt|tjtjfrt|d|jj }t j |}|j ||||j fqW|jddd||_dS)Np_rprtcSs |dt|d|d|dfS)Nrrdrr)r7)Z p_functionr r r r1F s z.ParserReflect.get_pfunctions..)key)rrf startswithrArrqrrrKrsrtrjrvrb__doc__sortrd)rZ p_functionsritemrrr r r r[9 s zParserReflect.get_pfunctionscCs^g}t|jdkr(|jjdd|_dSx"|jD]\}}}}tj|}|j|}t|tj rfd}nd}|j j |kr|jjd|||j d|_q2|j j |kr|jjd|||j d|_q2|j s|jjd|||j q2y,t|||} x| D]} |j|| fqWWn:tk r<} z|jjt| d|_WYdd} ~ XnX|jj|q2Wx|jjD]\} } | jd rt| tjtj frq\| jd rq\| jd r| d kr|jjd | t| tjr| j j dkst| tj r\| jj j dkr\| j r\y8| j jd }|ddkr4|jjd| j j| j j| Wntk rLYnXq\W||_dS)Nrz+no rules of the form p_rulename are definedTrrdz%%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)rzZt_rpz%r not defined as a functionryrNz9%s:%d: Possible grammar rule %r defined without p_ prefix)rrdrrrjrlrrArrrrsrwrr}rrSrbrVr7rrrfr|rq__func__r=rurtrr)rrrrrrRrrZreqargsZparsed_gr"rArBrDr r r raN s\            z!ParserReflect.validate_pfunctions)N)rrrr r\rcrrbrWr]rXr^rYr_rZr`r[rar r r r rTz s  rTc <Os |dkr t}| rd}| dkr&ttj} rfddtD} t| }d|krdtj|dj|d<d|krd|krttj|ddrtj|dj |d<nt d}| dkrt |t j r|j}nLd|kr|d}n:|jd}dj|dd6}td |ttj|dd }tjj|} |jd}|rNt |trNd|krN|d|}|dk r`||d <t|| d }|j|jrtd|j}yt}| r|j| }n |j|}|s||kry"|j|j t!||j"}|j#a#|St$k r}z| j%d|WYdd}~XnXWnFt&k rH}z| j%t|WYdd}~Xnt'k r\YnX| dkr|rytt(tjj| |d} Wn<t)k r}z| j%d||ft*} WYdd}~XnXnt*} | j+dt,d}|j-rtd|j"s| j%dt.|j/}xZ|j0D]P\}}}y|j1|||Wn0t2k rb}z| j%d|WYdd}~XnXqWxl|j3D]b\}}|\} }!}"}#y|j4|"|#|| |!Wn4t2k r}z| jd|d}WYdd}~XnXqrWy&|dkr|j5|j6n |j5|Wn6t2k r4}z| jt|d}WYdd}~XnX|rDtd|j7}$x*|$D]"\}%}&| jd|&j8|&j9|%d}qRW|j:}'|'r| j+d | j+d| j+d x&|'D]}| j%d|| j+d|qW|r| j+d | j+d| j+d x&t;|j<D]\}(})| j+d|(|)qW|j=}*x$|*D]}&| j%d|&j8|&j9|&j>q&Wt?|'d kr^| j%dt?|'d kr|| j%dt?|'t?|*d kr| j%d t?|*d kr| j%d!t?|*|r| j+d | j+d"| j+d t@|jA}+|+jBx2|+D]*}| j+d#|d$jd%d|jA|DqW| j+d | j+d&| j+d t@|jC},|,jBx2|,D]*}-| j+d#|-d$jd'd|jC|-DqRW| j+d |r|jD}.x|.D]}/| j%d(|/qW|jE}0x|0D]}1| jd)|1d}qW|jF}2x$|2D]\}}| jd*||d}qW|rtd|r*| jGd+|tH||| }|rt?|jI}3|3d kr\| j%d,n|3d krr| j%d-|3t?|jJ}4|4d kr| j%d.n|4d kr| j%d/|4|r|jIs|jJr| j%d | j%d0| j%d x&|jID]\}5}6}7| j%d1|6|5|7qWtK}8x|jJD]x\}5}9}:|5tL|9tL|:f|8kr8q| j%d2|5|9| j%d3|:|5| j%d2|5|9| j%d3|:|5|8jM|5tL|9tL|:fqWg};xL|jJD]B\}5}9}:|:jN r|:|;kr| j%d4|:| j%d4|:|;jO|:qW| rDy&|jP|| ||tjk r tj|=Wn6t)k rB}z| j%d5||fWYdd}~XnX| ry|jQ| |Wn6t)k r}z| j%d5| |fWYdd}~XnX|j|j t!||j"}|j#a#|S)7Nrcsg|]}|t|fqSr )rK)r?r)rr r r@ szyacc..__file__r __package__rrrdz import %srxr)rzUnable 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 %srz Rule %-5d %sz$%s:%d: Rule %r defined, but not usedzThere is 1 unused tokenzThere are %d unused tokenszThere is 1 unused rulezThere are %d unused rulesz'Terminals, with rules where they appearz %-20s : %srycSsg|] }t|qSr )r7)r?r=r r r r@M sz*Nonterminals, with rules where they appearcSsg|] }t|qSr )r7)r?r=r r r r@U 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. %sr~)R tab_modulerrnrodirdictrrrrrLrArrr=rrrKrrdirnamerr7rTr\rrrrrrrrrWrUrvrPrrrrr<rr __version__rcrrVryrrrrrrrrrrrrrrrrgrr~rrrrrrrrrr!rrrbrBrF)>s   7m H.rT   )