ó rgdSc@s‡ddlmZmZmZdejfd„ƒYZdefd„ƒYZdefd„ƒYZdefd „ƒYZ d d „Z d S( iÿÿÿÿ(tgrammarttokenttokenizet PgenGrammarcBseZRS((t__name__t __module__(((ssphinx/pycode/pgen2/pgen.pyRstParserGeneratorcBs°eZdd„Zd„Zd„Zd„Zd„Zd„Zd„Z d„Z d„Z d „Z d „Z d „Zd „Zd „Zd„Zdd„Zd„Zd„ZRS(cCs d}|dkr*t|ƒ}|j}n||_||_tj|jƒ|_|j ƒ|j ƒ\|_ |_ |dk r‰|ƒni|_ |jƒdS(N(tNonetopentclosetfilenametstreamRtgenerate_tokenstreadlinet generatortgettokentparsetdfast startsymboltfirstt addfirstsets(tselfR R t close_stream((ssphinx/pycode/pgen2/pgen.pyt__init__ s         c Csˆtƒ}|jjƒ}|jƒ|j|jƒ|jd|jƒx;|D]3}dt|jƒ}||j|<||j |t|tƒst‚t|tƒs*t‚‡fd†}‡fd†‰t||ƒ|ƒg}x×|D]Ï}i}xS|jD]H}x?|jD]4\}} |dk rˆ| |j|iƒƒqqWq}Wxj|jƒD]\\}} x=|D]} | j| kréPqéqéWt| |ƒ} |j | ƒ|j | |ƒqÖWqgW|S(Ncsi}ˆ||ƒ|S(N((R-tbase(t addclosure(ssphinx/pycode/pgen2/pgen.pytclosure°s csit|tƒst‚||kr%dSd|| %ds %s -> %d(t enumerateRR#RR!R( RR*R'R`ttodoR+R-R.R/tj((ssphinx/pycode/pgen2/pgen.pytdump_nfaÍs       cCs~dG|GHxnt|ƒD]`\}}dG|G|jr9dp<dGHx5|jjƒD]$\}}d||j|ƒfGHqNWqWdS(NsDump of DFA fors States(final)Rcs %s -> %d(RdR$RR R#(RR*R,R+R-R.R/((ssphinx/pycode/pgen2/pgen.pytdump_dfaÝs  cCs¦t}x™|r¡t}x†t|ƒD]x\}}xit|dt|ƒƒD]N}||}||krH||=x|D]}|j||ƒqrWt}PqHqHWq"Wq WdS(Ni(tTruetFalseRdtrangeRt unifystate(RR,tchangesR+tstate_iRftstate_jR-((ssphinx/pycode/pgen2/pgen.pyRUäs     cCs±|jƒ\}}|jdkr+||fStƒ}tƒ}|j|ƒ|j|ƒxI|jdkr¢|jƒ|jƒ\}}|j|ƒ|j|ƒqZW||fSdS(Nt|(t parse_altRCR[R_R(RRVRWtaatzz((ssphinx/pycode/pgen2/pgen.pyRSùs       cCsr|jƒ\}}xS|jdks?|jtjtjfkrg|jƒ\}}|j|ƒ|}qW||fS(Nt(t[(RtRu(t parse_itemRCRNRR@tSTRINGR_(RRVtbR(td((ssphinx/pycode/pgen2/pgen.pyRq s  cCsÁ|jdkrU|jƒ|jƒ\}}|jtjdƒ|j|ƒ||fS|jƒ\}}|j}|dkr†||fS|jƒ|j|ƒ|dkr³||fS||fSdS(NRut]t+t*(R{R|(RCRRSRQRRRR_t parse_atom(RRVRWRC((ssphinx/pycode/pgen2/pgen.pyRvs          cCs¹|jdkrH|jƒ|jƒ\}}|jtjdƒ||fS|jtjtjfkrœt ƒ}t ƒ}|j ||jƒ|jƒ||fS|j d|j|jƒdS(NRtt)s+expected (...) or NAME or STRING, got %s/%s( RCRRSRQRRRRNR@RwR[R_t raise_error(RRVRW((ssphinx/pycode/pgen2/pgen.pyR}(s       cCsc|j|ks*|dk rL|j|krL|jd|||j|jƒn|j}|jƒ|S(Nsexpected %s/%s, got %s/%s(RNRRCRR(RRNRC((ssphinx/pycode/pgen2/pgen.pyRQ9s *   cCsi|jjƒ}x/|dtjtjfkr@|jjƒ}qW|\|_|_|_|_|_ dS(Ni( RR/RtCOMMENTtNLRNRCtbegintendtline(Rttup((ssphinx/pycode/pgen2/pgen.pyRAscGss|r@y||}Wq@dj|gtt|ƒƒ}q@Xnt||j|jd|jd|jfƒ‚dS(Nt ii(tjointmaptstrt SyntaxErrorR RƒR„(Rtmsgtargs((ssphinx/pycode/pgen2/pgen.pyRHs&N(RRRRR0R&R"RRDRRTRgRhRURSRqRvR}RQRR(((ssphinx/pycode/pgen2/pgen.pyR s$   .    $        R[cBseZd„Zdd„ZRS(cCs g|_dS(N(R(R((ssphinx/pycode/pgen2/pgen.pyRSscCsP|dks!t|tƒs!t‚t|tƒs6t‚|jj||fƒdS(N(RR9R‰R;R[RR!(RR/R.((ssphinx/pycode/pgen2/pgen.pyR_Vs!N(RRRRR_(((ssphinx/pycode/pgen2/pgen.pyR[Qs R\cBs,eZd„Zd„Zd„Zd„ZRS(cCspt|tƒst‚tt|ƒjƒtƒs6t‚t|tƒsKt‚||_||k|_i|_dS(N( R9tdictR;titerR/R[R]R$R(RR]tfinal((ssphinx/pycode/pgen2/pgen.pyR]s ! cCsPt|tƒst‚||jks*t‚t|tƒs?t‚||j|s ÿH #