B ½9ã%Ëh²ã@sdddlmZmZmZGdd„dejƒZGdd„deƒZGdd„deƒZGdd „d eƒZ dd d „Z d S)é)ÚgrammarÚtokenÚtokenizec@s eZdZdS)Ú PgenGrammarN)Ú__name__Ú __module__Ú __qualname__©r r ú7/opt/alt/python37/lib64/python3.7/lib2to3/pgen2/pgen.pyrsrc@s eZdZd&dd„Zdd„Zdd„Zdd „Zd d „Zd d „Zdd„Z dd„Z dd„Z dd„Z dd„Z dd„Zdd„Zdd„Zdd„Zd'd d!„Zd"d#„Zd$d%„ZdS)(ÚParserGeneratorNcCsld}|dkrt|ƒ}|j}||_||_t |j¡|_| ¡|  ¡\|_ |_ |dk rZ|ƒi|_ |  ¡dS)N)ÚopenÚcloseÚfilenameÚstreamrÚgenerate_tokensÚreadlineÚ generatorÚgettokenÚparseÚdfasÚ startsymbolÚfirstÚ addfirstsets)ÚselfrrZ close_streamr r r Ú__init__ szParserGenerator.__init__c Cs*tƒ}t|j ¡ƒ}| ¡| |j¡| d|j¡x.|D]&}dt|j ƒ}||j |<||j |<qtj|}||j kr@|j |S|j |df¡||j |<|SdS)Nr)ú"ú')r"ÚlabelsÚisalphar#Z symbol2labelr'ÚgetattrrÚ isinstanceÚintÚAssertionErrorÚtok_nameÚtokensÚevalÚkeywordsÚNAMErZopmap)rr.r4r7ZitokenÚvaluer r r r(=s<                 zParserGenerator.make_labelcCs<t|j ¡ƒ}| ¡x |D]}||jkr| |¡qWdS)N)rrrrrÚ calcfirst)rr/r0r r r rks   zParserGenerator.addfirstsetsc Cs |j|}d|j|<|d}i}i}x†|j ¡D]x\}}||jkr”||jkrl|j|}|dkr€td|ƒ‚n| |¡|j|}| |¡|||<q0d||<|di||<q0Wi} xJ| ¡D]>\}} x4| D],} | | krìtd|| || | fƒ‚|| | <qÈWqºW||j|<dS)Nrzrecursion for rule %rrzArule %s is ambiguous; %s is in the first sets of %s as well as %s)rrr%r&Ú ValueErrorrFÚupdate) rr0r2r3ZtotalsetZ overlapcheckr4r5ÚfsetZinverseZitsfirstZsymbolr r r rFss2          zParserGenerator.calcfirstc Cs¨i}d}x–|jtjkržx|jtjkr.| ¡qW| tj¡}| tjd¡| ¡\}}| tj¡|  ||¡}t |ƒ}|  |¡t |ƒ}|||<|dkr |}q W||fS)Nú:) ÚtyperÚ ENDMARKERÚNEWLINErÚexpectrDÚOPÚ parse_rhsÚmake_dfar"Ú simplify_dfa) rrrr0ÚaÚzr2ZoldlenZnewlenr r r r‘s"      zParserGenerator.parsec sìt|tƒst‚t|tƒst‚‡fdd„}‡fdd„‰t||ƒ|ƒg}x¢|D]š}i}x<|jD]2}x,|jD]"\}} |dk rfˆ| | |i¡ƒqfWqZWxRt| ¡ƒD]B\}} x,|D]} | j| kr¬Pq¬Wt| |ƒ} |  | ¡|  | |¡qžWqJW|S)Ncsi}ˆ||ƒ|S)Nr )r3Úbase)Ú addclosurer r Úclosure°s z)ParserGenerator.make_dfa..closurecsLt|tƒst‚||krdSd||<x$|jD]\}}|dkr*ˆ||ƒq*WdS)Nr)r=ÚNFAStater?r%)r3rUr4r5)rVr r rV´sz,ParserGenerator.make_dfa..addclosure) r=rXr?ÚDFAStateÚnfasetr%Ú setdefaultr$r&r'Úaddarc) rr-ÚfinishrWr+r3r%Znfastater4r5rZÚstr )rVr rQ©s&        zParserGenerator.make_dfac Cs¢td|ƒ|g}xŒt|ƒD]€\}}td|||kr4dp6dƒx^|jD]T\}}||kr^| |¡} nt|ƒ} | |¡|dkr†td| ƒqBtd|| fƒqBWqWdS)NzDump of NFA forz Statez(final)Úz -> %dz %s -> %d)ÚprintÚ enumerater%r)r"r') rr0r-r]Ztodor1r3r4r5Újr r r Údump_nfaÍs   zParserGenerator.dump_nfacCsltd|ƒx\t|ƒD]P\}}td||jr,dp.dƒx0t|j ¡ƒD]\}}td|| |¡fƒqBWqWdS)NzDump of DFA forz Statez(final)r_z %s -> %d)r`rar*r$r%r&r))rr0r2r1r3r4r5r r r Údump_dfaÝs  zParserGenerator.dump_dfacCs~d}xt|rxd}xft|ƒD]Z\}}xPt|dt|ƒƒD]:}||}||kr4||=x|D]}| ||¡qTWd}Pq4WqWqWdS)NTFr)raÚranger"Ú unifystate)rr2Zchangesr1Zstate_irbZstate_jr3r r r rRäs zParserGenerator.simplify_dfacCs‚| ¡\}}|jdkr||fStƒ}tƒ}| |¡| |¡x6|jdkrt| ¡| ¡\}}| |¡| |¡q@W||fSdS)Nú|)Ú parse_altrErXr\r)rrSrTZaaZzzr r r rPùs       zParserGenerator.parse_rhscCsP| ¡\}}x:|jdks*|jtjtjfkrF| ¡\}}| |¡|}qW||fS)N)ú(ú[)Ú parse_itemrErKrrDÚSTRINGr\)rrSÚbr.Údr r r rh s    zParserGenerator.parse_altcCsŽ|jdkr>| ¡| ¡\}}| tjd¡| |¡||fS| ¡\}}|j}|dkr`||fS| ¡| |¡|dkr‚||fS||fSdS)Nrjú])ú+Ú*rp)rErrPrNrrOr\Ú parse_atom)rrSrTrEr r r rks     zParserGenerator.parse_itemcCs†|jdkr4| ¡| ¡\}}| tjd¡||fS|jtjtjfkrpt ƒ}t ƒ}|  ||j¡| ¡||fS|  d|j|j¡dS)Nriú)z+expected (...) or NAME or STRING, got %s/%s) rErrPrNrrOrKrDrlrXr\Ú raise_error)rrSrTr r r rr(s  zParserGenerator.parse_atomcCsD|j|ks|dk r2|j|kr2| d|||j|j¡|j}| ¡|S)Nzexpected %s/%s, got %s/%s)rKrErtr)rrKrEr r r rN9s zParserGenerator.expectcCsJt|jƒ}x"|dtjtjfkr,t|jƒ}q W|\|_|_|_|_|_ dS)Nr) r5rrÚCOMMENTÚNLrKrEZbeginÚendÚline)rÚtupr r r rAs zParserGenerator.gettokenc Gs^|r8y ||}Wn&d |gttt|ƒƒ¡}YnXt||j|jd|jd|jfƒ‚dS)Nú rr)ÚjoinrÚmapÚstrÚ SyntaxErrorrrwrx)rÚmsgÚargsr r r rtHs  zParserGenerator.raise_error)N)N)rrrrr6r,r(rrFrrQrcrdrRrPrhrkrrrNrrtr r r r r s$  .$  r c@seZdZdd„Zddd„ZdS)rXcCs g|_dS)N)r%)rr r r rSszNFAState.__init__NcCs8|dkst|tƒst‚t|tƒs$t‚|j ||f¡dS)N)r=r}r?rXr%r')rr5r4r r r r\VszNFAState.addarc)N)rrrrr\r r r r rXQsrXc@s0eZdZdd„Zdd„Zdd„Zdd„Zd Zd S) rYcCsLt|tƒst‚ttt|ƒƒtƒs$t‚t|tƒs2t‚||_||k|_i|_dS)N) r=Údictr?r5ÚiterrXrZr*r%)rrZÚfinalr r r r]s  zDFAState.__init__cCs8t|tƒst‚||jkst‚t|tƒs*t‚||j|<dS)N)r=r}r?r%rY)rr5r4r r r r\eszDFAState.addarccCs.x(|j ¡D]\}}||kr ||j|<q WdS)N)r%r&)rÚoldÚnewr4r5r r r rfkszDFAState.unifystatecCsft|tƒst‚|j|jkrdSt|jƒt|jƒkr6dSx*|j ¡D]\}}||j |¡k rBdSqBWdS)NFT)r=rYr?r*r"r%r&Úget)rÚotherr4r5r r r Ú__eq__ps zDFAState.__eq__N)rrrrr\rfrˆÚ__hash__r r r r rY[s rYú Grammar.txtcCst|ƒ}| ¡S)N)r r6)rÚpr r r Úgenerate_grammar€srŒN)rŠ) r_rrrZGrammarrÚobjectr rXrYrŒr r r r ÚsI %