U ,a5@sdddlmZmZmZGdddejZGdddeZGdddeZGdd d eZ dd d Z d S))grammartokentokenizec@s eZdZdS) PgenGrammarN)__name__ __module__ __qualname__r r 7/opt/alt/python38/lib64/python3.8/lib2to3/pgen2/pgen.pyrsrc@seZdZd&ddZddZddZdd Zd d Zd d ZddZ ddZ ddZ ddZ ddZ ddZddZddZddZd'd d!Zd"d#Zd$d%ZdS)(ParserGeneratorNcCsld}|dkrt|}|j}||_||_t|j|_|| \|_ |_ |dk rZ|i|_ | dSN)openclosefilenamestreamrgenerate_tokensreadline generatorgettokenparsedfas startsymbolfirst addfirstsets)selfrrZ close_streamr r r __init__ szParserGenerator.__init__c Cst}t|j}|||j|d|j|D]&}dt|j }||j |<||j |<q:|D]}|j|}g}|D]`}g}t |j D]$\} } |||| || fq|jr|d||f||q||j|||||f|j|j |<qf|j |j|_|S)N)rlistrkeyssortremoverinsertlen symbol2numberZ number2symbolsortedarcsitemsappend make_labelindexisfinalstates make_firststart) rcnamesnameidfar,stater&labelnextr r r make_grammars.      zParserGenerator.make_grammarcCs4|j|}i}t|D]}|||}d||<q|SNr)rr%r))rr/r1Zrawfirstrr5ilabelr r r r-4s     zParserGenerator.make_firstcCsbt|j}|dr||jkrZ||jkr4|j|S|j|j|df||j|<|Snbtt|d}t|t sxt ||tj kst |||j kr|j |S|j|df||j |<|Sn|ddkst |t |}|dr ||jkr|j|S|jtj|f||j|<|Sn>tj|}||j kr@|j |S|j|df||j |<|SdS)Nr)"')r#labelsisalphar$Z symbol2labelr(getattrr isinstanceintAssertionErrortok_nametokensevalkeywordsNAMErZopmap)rr/r5r9Zitokenvaluer r r r)=s<                 zParserGenerator.make_labelcCs8t|j}||D]}||jkr||qdSr )rrrr r calcfirst)rr0r1r r r rks  zParserGenerator.addfirstsetsc Cs|j|}d|j|<|d}i}i}|jD]x\}}||jkr||jkrj|j|}|dkr~td|n|||j|}|||||<q.d||<|di||<q.i} |D]:\}} | D],} | | krtd|| || | f|| | <qq||j|<dS)Nrzrecursion for rule %rrzArule %s is ambiguous; %s is in the first sets of %s as well as %s)rrr&r' ValueErrorrHupdate) rr1r3r4ZtotalsetZ overlapcheckr5r6fsetZinverseZitsfirstZsymbolr r r rHss4          zParserGenerator.calcfirstc Csi}d}|jtjkr|jtjkr*|q|tj}|tjd|\}}|tj| ||}t |}| |t |}|||<|dkr|}q||fS)N:) typer ENDMARKERNEWLINErexpectrFOP parse_rhsmake_dfar# simplify_dfa) rrrr1azr3ZoldlenZnewlenr r r rs"        zParserGenerator.parsec st|tstt|tstfdd}fddt|||g}|D]}i}|jD].}|jD]"\}} |dk r`| ||iq`qVt|D]@\}} |D]} | j| krqqt| |} | | | | |qqH|S)Ncsi}|||Sr r )r4base addclosurer r closures z)ParserGenerator.make_dfa..closurecsHt|tst||krdSd||<|jD]\}}|dkr(||q(dSr8)r?NFAStaterAr&)r4rWr5r6rXr r rYsz,ParserGenerator.make_dfa..addclosure) r?r[rADFAStatenfasetr& setdefaultr%r'r(addarc) rr.finishrZr,r4r&Znfastater5r6r]str rXr rSs&      zParserGenerator.make_dfac Cstd||g}t|D]|\}}td|||kr2dp4d|jD]T\}}||krZ||} nt|} |||dkrtd| q>td|| fq>qdS)NzDump of NFA for State(final)z -> %d %s -> %d)print enumerater&r*r#r() rr1r.r`Ztodor2r4r5r6jr r r dump_nfas   zParserGenerator.dump_nfacCsdtd|t|D]L\}}td||jr*dp,dt|jD]\}}td|||fq>qdS)NzDump of DFA forrbrcrdre)rfrgr+r%r&r'r*)rr1r3r2r4r5r6r r r dump_dfas  zParserGenerator.dump_dfacCspd}|rld}t|D]T\}}t|dt|D]8}||}||kr.||=|D]}|||qLd}qq.qqdS)NTFr)rgranger# unifystate)rr3Zchangesr2Zstate_irhZstate_jr4r r r rTszParserGenerator.simplify_dfacCs~|\}}|jdkr||fSt}t}|||||jdkrr||\}}||||q>||fSdS)N|) parse_altrGr[r_r)rrUrVZaaZzzr r r rRs        zParserGenerator.parse_rhscCsL|\}}|jdks(|jtjtjfkrD|\}}|||}q ||fS)N)([) parse_itemrGrMrrFSTRINGr_)rrUbr/dr r r rn s    zParserGenerator.parse_altcCs|jdkr>||\}}|tjd||||fS|\}}|j}|dkr`||fS||||dkr||fS||fSdS)Nrp])+*rv)rGrrRrPrrQr_ parse_atom)rrUrVrGr r r rqs     zParserGenerator.parse_itemcCs|jdkr4||\}}|tjd||fS|jtjtjfkrpt }t }| ||j|||fS| d|j|jdS)Nro)z+expected (...) or NAME or STRING, got %s/%s) rGrrRrPrrQrMrFrrr[r_ raise_error)rrUrVr r r rx(s  zParserGenerator.parse_atomcCsD|j|ks|dk r2|j|kr2|d|||j|j|j}||S)Nzexpected %s/%s, got %s/%s)rMrGrzr)rrMrGr r r rP9szParserGenerator.expectcCsFt|j}|dtjtjfkr*t|j}q |\|_|_|_|_|_ dS)Nr) r6rrCOMMENTNLrMrGZbeginendline)rtupr r r rAs  zParserGenerator.gettokenc Gs^|r8z ||}Wn&d|gttt|}YnXt||j|jd|jd|jfdS)N rr)joinrmapstr SyntaxErrorrr}r~)rmsgargsr r r rzHs  zParserGenerator.raise_error)N)N)rrrrr7r-r)rrHrrSrirjrTrRrnrqrxrPrrzr r r r r s$  .$  r c@seZdZddZdddZdS)r[cCs g|_dSr )r&)rr r r rSszNFAState.__init__NcCs8|dkst|tstt|ts$t|j||fdSr )r?rrAr[r&r(rr6r5r r r r_VszNFAState.addarc)N)rrrrr_r r r r r[Qsr[c@s0eZdZddZddZddZddZd Zd S) r\cCsLt|tstttt|ts$tt|ts2t||_||k|_i|_dSr ) r?dictrAr6iterr[r]r+r&)rr]finalr r r r]s  zDFAState.__init__cCs8t|tst||jkstt|ts*t||j|<dSr )r?rrAr&r\rr r r r_eszDFAState.addarccCs*|jD]\}}||kr ||j|<q dSr )r&r')roldnewr5r6r r r rlkszDFAState.unifystatecCsdt|tst|j|jkrdSt|jt|jkr6dS|jD]\}}||j|k r@dSq@dS)NFT)r?r\rAr+r#r&r'get)rotherr5r6r r r __eq__ps zDFAState.__eq__N)rrrrr_rlr__hash__r r r r r\[s r\ Grammar.txtcCst|}|Sr )r r7)rpr r r generate_grammarsrN)r) rdrrrZGrammarrobjectr r[r\rr r r r sI %