
    ^h;                         S SK r S SKJrJr  S SKJrJrJrJrJ	r	  S SK
JrJrJr  S SKJr  \	\S4   r " S S\R$                  5      r " S	 S
5      r " S S5      r " S S5      rSS\S\4S jjrg)    N)IteratorSequence)IOAnyNoReturnOptionalUnion)grammartokentokenize)	TokenInfozos.PathLike[str]c                       \ rS rSrSrg)PgenGrammar    N)__name__
__module____qualname____firstlineno____static_attributes__r       M/home/james-whalen/.local/lib/python3.13/site-packages/blib2to3/pgen2/pgen.pyr   r      s    r   r   c                      \ rS rSr% \\S'   \\   \S'   \\	   \S'   \
\\\
\\4      4   \S'   S'S\S\\\      SS4S jjrS\4S	 jrS
\S\S\
\\4   4S jrS
\S\S\4S jrS(S jrS\SS4S jrS\\
\\S   4   \4   4S jrSSSSS\S   4S jrS\SSSSSS4S jrS\S\S   SS4S jrS\S   SS4S jrS\S   4S jrS\S   4S jrS\S   4S jrS\S   4S jrS'S \S!\\    S\4S" jjr!S(S# jr"S$\S\#4S% jr$S&r%g))ParserGenerator   filenamestream	generatorfirstNreturnc                 4   S nUc  [        USS9nUR                  nXl        [        R                  " UR	                  5       5      U l        U R                  5         U R                  5       u  U l        U l	        Ub  U" 5         0 U l
        U R                  5         g )Nzutf-8)encoding)opencloser   r   readr   gettokenparsedfasstartsymbolr   addfirstsets)selfr   r   close_streams       r   __init__ParserGenerator.__init__   sz    >(W5F!<<L !**6;;=9&*jjl#	4##N
r   c           	         [        5       n[        U R                  R                  5       5      nUR	                  5         UR                  U R                  5        UR                  SU R                  5        U H7  nS[        UR                  5      -   nXAR                  U'   X1R                  U'   M9     U GH  nU R                  U   n/ nU H  n/ n[        UR                  R                  5       5       H6  u  pUR                  U R                  X5      UR!                  U
5      45        M8     UR"                  (       a"  UR                  SUR!                  U5      45        UR                  U5        M     UR$                  R                  U5        X`R'                  X5      4UR                  UR                  U   '   GM     UR                  U R                     Ul        U$ )Nr      )r   listr(   keyssortremover)   insertlensymbol2numbernumber2symbolsortedarcsitemsappend
make_labelindexisfinalstates
make_firststart)r+   cnamesnameidfar@   stater:   labelnexts              r   make_grammarParserGenerator.make_grammar&   sn   MTYY^^%&

T%%&Q(()Dc!//**A$%OOD!!%OOA  D))D/CF#)%***:*:*<#=KEKK!:CIIdO LM $>==KKCIIe$4 56d#  HHOOF#-3__Q5M,NAFF1??4()  //$"2"23r   rC   rE   c                     U R                   U   nUc   e0 n[        U5       H  nU R                  X5      nSXF'   M     U$ N   )r   r9   r=   )r+   rC   rE   rawfirstr   rI   ilabels          r   rA   ParserGenerator.make_first?   sL    ::d####H%E__Q.FEM & r   rI   c                 *   [        UR                  5      nUS   R                  5       (       a  X!R                  ;   aX  X!R                  ;   a  UR                  U   $ UR                  R                  UR                  U   S 45        X1R                  U'   U$ [        [        US 5      n[        U[        5      (       d   U5       eU[        R                  ;   d   U5       eXAR                  ;   a  UR                  U   $ UR                  R                  US 45        X1R                  U'   U$ US   S;   d   U5       e[        U5      nUS   R                  5       (       a\  US   S:X  a  UR                  nOUR                  nXV;   a  Xe   $ UR                  R                  [        R                  U45        X6U'   U$ [         R"                  U   nXAR                  ;   a  UR                  U   $ UR                  R                  US 45        X1R                  U'   U$ )Nr   )"'rT   )r6   labelsisalphar7   symbol2labelr<   getattrr   
isinstanceinttok_nametokensevalsoft_keywordskeywordsNAMEr
   opmap)r+   rC   rI   rQ   itokenvaluer`   s          r   r=   ParserGenerator.make_labelI   s   QXX8'NN*>>%00HHOOQ__U%;T$BC,2NN5)!M !t4!&#..55./66/XX%88F++HHOOVTN3'-HHV$!M 8z)050)KEQx!!8s? H zzH $#?*HHOOUZZ$78&,UO!M !u-XX%88F++HHOOVTN3'-HHV$!Mr   c                     [        U R                  R                  5       5      nUR                  5         U H%  nX R                  ;  d  M  U R                  U5        M'     g N)r1   r(   r2   r3   r   	calcfirst)r+   rD   rE   s      r   r*   ParserGenerator.addfirstsets|   s@    TYY^^%&

D::%t$ r   c                 ,   U R                   U   nS U R                  U'   US   n0 n0 nUR                   H  nX`R                   ;   am  X`R                  ;   a"  U R                  U   nUc  [        SU< 35      eO%U R	                  U5        U R                  U   nUc   eUR                  U5        XuU'   M  SXF'   US0XV'   M     0 nUR                  5        H0  u  piU	 H%  n
X;   a  [        SU SU
 SU SX    35      eXhU
'   M'     M2     X@R                  U'   g )Nr   zrecursion for rule rO   zrule z is ambiguous; z is in the first sets of z as well as )r(   r   r:   
ValueErrorrh   updater;   )r+   rE   rG   rH   totalsetoverlapcheckrI   fsetinverseitsfirstsymbols              r   rh   ParserGenerator.calcfirst   sB   iio

4A#%ZZE		!JJ&::e,D|(+>th)GHH $ NN5)::e,D+++%&*U#"#',aj#   #%+113OE"$$v_VH =!7,w.?A  #( #  4 $

4r   DFAStatec                 l   0 nS nU R                   [        R                  :w  Ga
  U R                   [        R                  :X  a0  U R	                  5         U R                   [        R                  :X  a  M0  U R                  [        R                  5      nU R                  [        R                  S5        U R                  5       u  pEU R                  [        R                  5        U R                  XE5      nU R                  U5        XaU'   Uc  UnU R                   [        R                  :w  a  GM
  Uc   eX4$ )N:)typer   	ENDMARKERNEWLINEr&   expectra   OP	parse_rhsmake_dfasimplify_dfa)r+   r(   r)   rE   azrG   s          r   r'   ParserGenerator.parse   s    %)ii5??*))u}}, ))u}}, ;;uzz*DKK#&>>#DAKK&--%C c"J""# ii5??*$ &&&  r   rB   NFAStatefinishc           
        ^ [        U[        5      (       d   e[        U[        5      (       d   eS[        S[        [        [        4   4U4S jjnS[        S[        [        [        4   SS 4U4S jjm[	        U" U5      U5      /nU H  n0 nUR
                   H5  nUR                   H"  u  pUc  M
  T" XR                  U0 5      5        M$     M7     [        UR                  5       5       HM  u  pU H  nUR
                  U
:X  d  M    O   [	        X5      nUR                  U5        UR                  X5        MO     M     U$ )NrH   r    c                    > 0 nT" X5        U$ rg   r   )rH   base
addclosures     r   closure)ParserGenerator.make_dfa.<locals>.closure   s    (*Du#Kr   r   c                    > [        U [        5      (       d   eX;   a  g SX'   U R                   H  u  p#Ub  M
  T" X15        M     g rN   )rZ   r   r:   )rH   r   rI   rJ   r   s       r   r   ,ParserGenerator.make_dfa.<locals>.addclosure   sB    eX....}DK$zz=t*  *r   )rZ   r   dictr[   rt   nfasetr:   
setdefaultr9   r;   r<   addarc)r+   rB   r   r   r@   rH   r:   nfastaterI   rJ   r   str   s               @r   r}   ParserGenerator.make_dfa   s"   
 %****&(++++	8 	Xs](; 	
	+h 	+d8S=.A 	+d 	+ 75>623E35D!LL#+==KE("4)CD $1 ) "(

!5 ByyF* ! "&1BMM"%R' "6  r   c                 b   [        SU5        U/n[        U5       H  u  pV[        SXVUL =(       a    S=(       d    S5        UR                   H\  u  pxX;   a  UR                  U5      n	O[	        U5      n	UR                  U5        Uc  [        SU	 35        MK  [        SU SU	 35        M^     M     g )NzDump of NFA for  State(final) z    ->      -> )print	enumerater:   r>   r6   r<   )
r+   rE   rB   r   todorF   rH   rI   rJ   js
             r   dump_nfaParserGenerator.dump_nfa   s    &w!$HA)Q =I CD$zz<

4(AD	AKK%=GA3-(DtA3/0  * (r   rG   c           
      ,   [        SU5        [        U5       Hy  u  p4[        SX4R                  =(       a    S=(       d    S5        [        UR                  R                  5       5       H%  u  pV[        SU SUR                  U5       35        M'     M{     g )NzDump of DFA forr   r   r   r   r   )r   r   r?   r9   r:   r;   r>   )r+   rE   rG   rF   rH   rI   rJ   s          r   dump_dfaParserGenerator.dump_dfa   sq    &!#HA)Q ;) ArB%ejj&6&6&89UG4		$'89:  : 'r   c                     SnU(       ai  Sn[        U5       HN  u  p4[        US-   [        U5      5       H-  nX   nXF:X  d  M  X	 U H  nUR                  Xd5        M     Sn  ML     MP     U(       a  Mh  g g )NTFrO   )r   ranger6   
unifystate)r+   rG   changesrF   state_ir   state_jrH   s           r   r~   ParserGenerator.simplify_dfa   ss     G'n
q1uc#h/A!fG)F%(E!,,W> &)"& 0 - gr   )r   r   c                    U R                  5       u  pU R                  S:w  a  X4$ [        5       n[        5       nUR                  U5        UR                  U5        U R                  S:X  aV  U R	                  5         U R                  5       u  pUR                  U5        UR                  U5        U R                  S:X  a  MV  X44$ )N|)	parse_altrd   r   r   r&   )r+   r   r   aazzs        r   r|   ParserGenerator.parse_rhs  s    ~~::4KBBIIaLHHRL**#~~'		!	 **#
 6Mr   c                 v   U R                  5       u  pU R                  S;   d.  U R                  [        R                  [        R
                  4;   ag  U R                  5       u  p4UR                  U5        UnU R                  S;   a  M7  U R                  [        R                  [        R
                  4;   a  Mg  X4$ )N)([)
parse_itemrd   rw   r   ra   STRINGr   )r+   r   brC   ds        r   r   ParserGenerator.parse_alt!  s     jjJ&$))

ELL7Q*Q??$DAHHQKA jjJ&$))

ELL7Q*Q tr   c                 v   U R                   S:X  aV  U R                  5         U R                  5       u  pU R                  [        R
                  S5        UR                  U5        X4$ U R                  5       u  pU R                   nUS;  a  X4$ U R                  5         UR                  U5        US:X  a  X4$ X4$ )Nr   ])+*r   )rd   r&   r|   rz   r   r{   r   
parse_atom)r+   r   r   rd   s       r   r   ParserGenerator.parse_item*  s    ::MMO>>#DAKK#&HHQK4K??$DAJJEJ&tMMOHHQK|ttr   c                    U R                   S:X  aE  U R                  5         U R                  5       u  pU R                  [        R
                  S5        X4$ U R                  [        R                  [        R                  4;   aB  [        5       n[        5       nUR                  X R                   5        U R                  5         X4$ U R                  SU R                   SU R                    35        g )Nr   )z&expected (...) or NAME or STRING, got /)rd   r&   r|   rz   r   r{   rw   ra   r   r   r   raise_error)r+   r   r   s      r   r   ParserGenerator.parse_atom>  s    ::MMO>>#DAKK#&4KYY5::u||44
A
AHHQ

#MMO4K81TZZLQr   rw   rd   c           
          U R                   U:w  d  UbA  U R                  U:w  a1  U R                  SU SU SU R                    SU R                   35        U R                  nU R                  5         U$ )Nz	expected r   z, got )rw   rd   r   r&   )r+   rw   rd   s      r   rz   ParserGenerator.expectP  sd    99!2tzzU7JyawfTYYKqUV

r   c                 :   [        U R                  5      nUS   [        R                  [        R                  4;   a>  [        U R                  5      nUS   [        R                  [        R                  4;   a  M>  Uu  U l        U l        U l        U l        U l	        g )Nr   )
rJ   r   r   COMMENTNLrw   rd   beginendline)r+   tups     r   r&   ParserGenerator.gettokenW  sp    4>>"!f))8;;77t~~&C !f))8;;77AD>	4:tz48TYr   msgc                     [        U[        U R                  5      U R                  S   U R                  S   U R                  45      e)Nr   rO   )SyntaxErrorstrr   r   r   )r+   r   s     r   r   ParserGenerator.raise_error^  s:    #dmm$dhhqk488A;		J
 	
r   )
r   r(   r   r   r   r   r   r)   rw   rd   rg   r    N)&r   r   r   r   Path__annotations__r   r   r   r   r   r   r[   r-   r   rK   rA   r=   r*   rh   tupler1   r'   r}   r   r   r   r~   r|   r   r   r   r   rz   r&   r   r   r   r   r   r   r   r      s   NsGO	""Xd38n--.. x3/@ D k 2K s tCH~ 1"K 1" 1" 1"f%$c $d $@!uT#tJ'7"78#=> !2%j %* %jAQ %N1S 1 1Z 1D 1 ;S ;x
'; ; ;Z 0 T *5!78 "5!78 E"89 (E"89 $3 x}  E
s 
x 
r   r   c                   `    \ rS rSr% \\\\   S 4      \S'   S
S jr	SSS S\\   SS4S jjr
S	rg)r   id  r:   r    Nc                     / U l         g rg   r:   )r+   s    r   r-   NFAState.__init__g  s	    	r   rJ   rI   c                     Ub  [        U[        5      (       d   e[        U[        5      (       d   eU R                  R	                  X!45        g rg   )rZ   r   r   r:   r<   r+   rJ   rI   s      r   r   NFAState.addarcj  s@    }
5# 6 666$))))		%'r   r   r   rg   )r   r   r   r   r1   r   r   r   r   r-   r   r   r   r   r   r   r   d  sC    
uXc]J./
00(: (hsm (t ( (r   r   c                       \ rS rSr% \\\4   \S'   \\S'   \\	S 4   \S'   S\\\4   S\SS4S jr
S	S S
\	SS4S jrSS jrS\S\4S jrSr\\S'   Srg)rt   ip  r   r?   r:   finalr    Nc                     [        U[        5      (       d   e[        [        [        U5      5      [        5      (       d   e[        U[        5      (       d   eXl        X!;   U l        0 U l        g rg   )rZ   r   rJ   iterr   r   r?   r:   )r+   r   r   s      r   r-   DFAState.__init__u  sY    &$''''$tF|,h7777%****	r   rJ   rI   c                     [        U[        5      (       d   eX R                  ;  d   e[        U[        5      (       d   eXR                  U'   g rg   )rZ   r   r:   rt   r   s      r   r   DFAState.addarc}  sD    %%%%%II%%%$))))		%r   c                 r    U R                   R                  5        H  u  p4XAL d  M  X R                   U'   M     g rg   )r:   r;   )r+   oldnewrI   rJ   s        r   r   DFAState.unifystate  s*    99??,KE{#&		%  -r   otherc                 F   [        U[        5      (       d   eU R                  UR                  :w  a  g[        U R                  5      [        UR                  5      :w  a  gU R                  R                  5        H$  u  p#X1R                  R                  U5      Ld  M$    g   g)NFT)rZ   rt   r?   r6   r:   r;   get)r+   r   rI   rJ   s       r   __eq__DFAState.__eq__  sw    %****<<5==( tyy>S_,99??,KE::>>%00 - r   __hash__)r:   r?   r   )r   rt   r   rt   r    N)r   r   r   r   r   r   r   r   boolr   r-   r   r   r   r   r   r   r   r   rt   rt   p  s    3M
sJ
tHcM2 8   :  c  d  '
C D  Hcr   rt   r   r    c                 8    [        U 5      nUR                  5       $ rg   )r   rK   )r   ps     r   generate_grammarr     s    !A>>r   )zGrammar.txt)oscollections.abcr   r   typingr   r   r   r   r	   blib2to3.pgen2r
   r   r   blib2to3.pgen2.tokenizer   r   r   Grammarr   r   r   rt   r   r   r   r   <module>r      sq    
 . 5 5 3 3 -S$$%	'// 	O
 O
d
	( 	(& &Rt  r   