o ?Og6ã@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 ú9/opt/alt/python310/lib64/python3.10/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)'ÚParserGeneratorNcCspd}|durt|dd}|j}||_||_t |j¡|_| ¡|  ¡\|_ |_ |dur/|ƒi|_ |  ¡dS)Nzutf-8)Úencoding)ÚopenÚcloseÚfilenameÚstreamrÚgenerate_tokensÚreadlineÚ generatorÚgettokenÚparseÚdfasÚ startsymbolÚfirstÚ addfirstsets)ÚselfrrZ close_streamr r r Ú__init__ s  zParserGenerator.__init__c Cstƒ}t|j ¡ƒ}| ¡| |j¡| d|j¡|D]}dt|j ƒ}||j |<||j |<q|D]P}|j|}g}|D]0}g}t |j   ¡ƒD]\} } | | || ¡| | ¡f¡qI|jri| d| |¡f¡| |¡q>|j |¡|| ||¡f|j|j |<q3|j |j|_|S)Néé)rÚlistrÚkeysÚsortÚremoverÚinsertÚlenÚ symbol2numberZ number2symbolÚsortedÚarcsÚitemsÚappendÚ make_labelÚindexÚisfinalÚstatesÚ make_firstÚstart) rÚcÚnamesÚnameÚiÚdfar,Ústater&ÚlabelÚnextr r r Ú make_grammars.      zParserGenerator.make_grammarcCs4|j|}i}t|ƒD] }| ||¡}d||<q |S©Nr)rr%r))rr/r1Zrawfirstrr5Úilabelr r r r-4s    zParserGenerator.make_firstcCst|jƒ}|d ¡rK||jvr,||jvr|j|S|j |j|df¡||j|<|Stt|dƒ}||jvr<|j|S|j |df¡||j|<|St |ƒ}|d ¡ro||j vr_|j |S|j tj |f¡||j |<|St j |}||jvr~|j|S|j |df¡||j|<|S©Nr)r#ÚlabelsÚisalphar$Z symbol2labelr(ÚgetattrrÚtokensÚevalÚkeywordsÚNAMErZopmap)rr/r5r9ZitokenÚvaluer r r r)=s6                  zParserGenerator.make_labelcCs8t|j ¡ƒ}| ¡|D] }||jvr| |¡q dS©N)rrrr rÚ calcfirst)rr0r1r r r rks  €þzParserGenerator.addfirstsetsc Csþ|j|}d|j|<|d}i}i}|j ¡D]<\}}||jvrI||jvr5|j|}|dur4td|ƒ‚n | |¡|j|}| |¡|||<qd||<|di||<qi} | ¡D]\}} | D]} | | vrrtd|| || | fƒ‚|| | <q`qZ||j|<dS)Nrzrecursion for rule %rrzArule %s is ambiguous; %s is in the first sets of %s as well as %s)rrr&r'Ú ValueErrorrDÚupdate) rr1r3r4ZtotalsetZ overlapcheckr5r6ÚfsetZinverseZitsfirstZsymbolr r r rDss8      ÿ    þ ûzParserGenerator.calcfirstc Cs´i}d}|jtjkrV|jtjkr| ¡|jtjks| tj¡}| tjd¡| ¡\}}| tj¡|  ||¡}t |ƒ}|  |¡t |ƒ}|||<|durP|}|jtjks ||fS)Nú:) ÚtyperÚ ENDMARKERÚNEWLINErÚexpectrAÚOPÚ parse_rhsÚmake_dfar#Ú simplify_dfa) rrrr1ÚaÚzr3ZoldlenZnewlenr r r r‘s&   ÿ      ïzParserGenerator.parsec s¾‡fdd„}‡fdd„‰t||ƒ|ƒg}|D]F}i}|jD]}|jD]\}} |dur3ˆ| | |i¡ƒq"qt| ¡ƒD] \}} |D] } | j| krJn qAt| |ƒ} | | ¡| | |¡q;q|S)Ncsi}ˆ||ƒ|SrCr )r4Úbase©Ú addclosurer r Úclosure°s z)ParserGenerator.make_dfa..closurecs:||vrdSd||<|jD] \}}|durˆ||ƒq dSr8©r&)r4rSr5r6rTr r rU´s €þz,ParserGenerator.make_dfa..addclosure)ÚDFAStateÚnfasetr&Ú setdefaultr%r'r(Úaddarc) rr.ÚfinishrVr,r4r&Znfastater5r6rYÚstr rTr rO©s*   €þ ÿ  ùzParserGenerator.make_dfac Csštd|ƒ|g}t|ƒD]>\}}td|||urdpdƒ|jD]*\}}||vr-| |¡} n t|ƒ} | |¡|durAtd| ƒqtd|| fƒqq dS)NzDump of NFA forú Stateú(final)Úz -> %dú %s -> %d)ÚprintÚ enumerater&r*r#r() rr1r.r\Ztodor2r4r5r6Újr r r Údump_nfaÍs   ÷þzParserGenerator.dump_nfacCsdtd|ƒt|ƒD]&\}}td||jrdpdƒt|j ¡ƒD]\}}td|| |¡fƒqq dS)NzDump of DFA forr^r_r`ra)rbrcr+r%r&r'r*)rr1r3r2r4r5r6r r r Údump_dfaÝs ÿþzParserGenerator.dump_dfacCsvd}|r9d}t|ƒD]*\}}t|dt|ƒƒD]}||}||kr3||=|D]}| ||¡q&d}nqq |sdSdS)NTFr)rcÚranger#Ú unifystate)rr3Zchangesr2Zstate_irdZstate_jr4r r r rPäsú€ ûzParserGenerator.simplify_dfacCs‚| ¡\}}|jdkr||fStƒ}tƒ}| |¡| |¡|jdkr=| ¡| ¡\}}| |¡| |¡|jdks$||fS)Nú|)Ú parse_altrBÚNFAStater[r)rrQrRZaaZzzr r r rNùs         üzParserGenerator.parse_rhscCsf| ¡\}}|jdvs|jtjtjfvr/| ¡\}}| |¡|}|jdvs|jtjtjfvs||fS)N)ú(ú[)Ú parse_itemrBrIrrAÚSTRINGr[)rrQÚbr/Údr r r rj s     üzParserGenerator.parse_altcCsŠ|jdkr| ¡| ¡\}}| tjd¡| |¡||fS| ¡\}}|j}|dvr0||fS| ¡| |¡|dkrA||fS||fS)Nrmú])ú+Ú*rs)rBrrNrLrrMr[Ú parse_atom)rrQrRrBr r r rns     zParserGenerator.parse_itemcCs†|jdkr| ¡| ¡\}}| tjd¡||fS|jtjtjfvr8t ƒ}t ƒ}|  ||j¡| ¡||fS|  d|j|j¡dS)Nrlú)z+expected (...) or NAME or STRING, got %s/%s) rBrrNrLrrMrIrArorkr[Ú raise_error)rrQrRr r r ru(s  ÿzParserGenerator.parse_atomcCsD|j|ks|dur|j|kr| d|||j|j¡|j}| ¡|S)Nzexpected %s/%s, got %s/%s)rIrBrwr)rrIrBr r r rL9s ÿzParserGenerator.expectcCsXt|jƒ}|dtjtjfvrt|jƒ}|dtjtjfvs|\|_|_|_|_|_ dSr:) r6rrÚCOMMENTÚNLrIrBZbeginÚendÚline)rÚtupr r r rAs  ÿzParserGenerator.gettokenc GsV|rz||}Wnd |gttt|ƒƒ¡}Yt||j|jd|jd|jfƒ‚)Nú rr)ÚjoinrÚmapÚstrÚ SyntaxErrorrrzr{)rÚmsgÚargsr r r rwHs  ÿzParserGenerator.raise_errorrC)rrrrr7r-r)rrDrrOrerfrPrNrjrnrurLrrwr r r r r s&  .$   r c@seZdZdd„Zddd„ZdS)rkcCs g|_dSrCrW)rr r r rSs zNFAState.__init__NcCs|j ||f¡dSrC)r&r(©rr6r5r r r r[VszNFAState.addarcrC)rrrrr[r r r r rkQsrkc@s0eZdZdd„Zdd„Zdd„Zdd„Zd Zd S) rXcCs||_||v|_i|_dSrC)rYr+r&)rrYÚfinalr r r r]s  zDFAState.__init__cCs||j|<dSrCrWr„r r r r[eszDFAState.addarccCs*|j ¡D] \}}||ur||j|<qdSrC)r&r')rÚoldÚnewr5r6r r r rhks  €þzDFAState.unifystatecCsV|j|jkrdSt|jƒt|jƒkrdS|j ¡D]\}}||j |¡ur(dSqdS)NFT)r+r#r&r'Úget)rÚotherr5r6r r r Ú__eq__ps ÿzDFAState.__eq__N)rrrrr[rhrŠÚ__hash__r r r r rX[s rXú Grammar.txtcCst|ƒ}| ¡SrC)r r7)rÚpr r r Úgenerate_grammar€srŽN)rŒ) r`rrrZGrammarrÚobjectr rkrXrŽr r r r ÚsI %