
    !.d<                        d dl mZmZmZ ddlmZmZmZmZm	Z	m
Z
mZmZmZmZmZ ddlmZ ddlmZ ddlZeedf         Z G d d	ej                  Z G d
 de          Z G d de          Z G d de          ZddedefdZdS )   )grammartokentokenize    )AnyDictIOIteratorListOptionalTextTupleUnionSequenceNoReturn)r   )GoodTokenInfoNzos.PathLike[str]c                       e Zd ZdS )PgenGrammarN)__name__
__module____qualname__     3lib/python3.11/site-packages/blib2to3/pgen2/pgen.pyr   r      s        Dr   r   c                   P   e Zd ZU eed<   ee         ed<   ee         ed<   e	ee
e	eef                  f         ed<   d&dede
ee                  ddfdZdefdZd	ed
ede	eef         fdZd	ededefdZd'dZd
eddfdZdee	eed         f         ef         fdZddddded         fdZd
eddddddfdZd
eded         ddfdZded         ddfdZded         fdZded         fdZded         fdZded         fdZd&ded e
e         defd!Z d'd"Z!d#e"d$ede#fd%Z$dS )(ParserGeneratorfilenamestream	generatorfirstNreturnc                 J   d }|t          |          }|j        }|| _        || _        t	          j        |j                  | _        |                                  | 	                                \  | _
        | _        |
 |             i | _        |                                  d S N)opencloser   r   r   generate_tokensreadliner   gettokenparsedfasstartsymbolr    addfirstsets)selfr   r   close_streams       r   __init__zParserGenerator.__init__'   s    >(^^F!<L !1&/BB&*jjll#	4##LNNN
r   c           	         t                      }t          | j                                                  }|                                 |                    | j                   |                    d| j                   |D ]-}dt          |j	                  z   }||j	        |<   ||j
        |<   .|D ]}| j        |         }g }|D ]}g }t          |j                                                  D ]C\  }	}
|                    |                     ||	          |                    |
          f           D|j        r*|                    d|                    |          f           |                    |           |j                            |           ||                     ||          f|j        |j	        |         <   |j	        | j                 |_        |S )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dfarA   stater;   labelnexts              r   make_grammarzParserGenerator.make_grammar6   s   MMTY^^%%&&

T%&&&Q())) 	& 	&Dc!/***A$%AOD!!%AOA 	O 	OD)D/CF $ $#)%**:*:*<*<#=#= N NKE4KKE!:!:CIIdOO LMMMM= 7KKCIIe$4$4 5666d####HOOF###-3T__Q5M5M,NAF1?4())/$"23r   rD   rF   c                     | j         |         }|J i }t          |          D ]}|                     ||          }d||<   |S Nr   )r    r:   r>   )r-   rD   rF   rawfirstr    rJ   ilabels          r   rB   zParserGenerator.make_firstO   sY    :d####H%% 	 	E__Q..FE&MMr   rJ   c                    t          |j                  }|d                                         r||j        v rI||j        v r|j        |         S |j                            |j        |         d f           ||j        |<   |S t          t          |d           }t          |t                    s
J |            |t          j
        v s
J |            ||j        v r|j        |         S |j                            |d f           ||j        |<   |S |d         dv s
J |            t          |          }|d                                         rT|d         dk    r|j        }n|j        }||v r||         S |j                            t          j        |f           |||<   |S t           j        |         }||j        v r|j        |         S |j                            |d f           ||j        |<   |S )Nr   )"'rR   )r7   labelsisalphar8   symbol2labelr=   getattrr   
isinstanceinttok_nametokensevalsoft_keywordskeywordsNAMEr   opmap)r-   rD   rJ   rP   itokenvaluer^   s          r   r>   zParserGenerator.make_labelY   s   QX8 .	"''AN**>%00HOOQ_U%;T$BCCC,2AN5)!M !t44!&#..55555//////QX%%8F++HOOVTN333'-AHV$!M 8z)))5)))KKEQx!! "8s?? HH zH H$$#E?*HOOUZ$7888&,HUO!M !u-QX%%8F++HOOVTN333'-AHV$!Mr   c                     t          | j                                                  }|                                 |D ] }|| j        vr|                     |           !d S r#   )r2   r*   r3   r4   r    	calcfirst)r-   rE   rF   s      r   r,   zParserGenerator.addfirstsets   sa    TY^^%%&&

 	% 	%D4:%%t$$$	% 	%r   c                 6   | j         |         }d | j        |<   |d         }i }i }|j                                        D ]\  }}|| j         v rl|| j        v r"| j        |         }|t	          d|z            n&|                     |           | j        |         }|J |                    |           |||<   zd||<   |di||<   i }	|                                D ]4\  }}
|
D ],}||	v r!t	          d|d|d|d|	|                   ||	|<   -5|| j        |<   d S )Nr   zrecursion for rule %rr   zrule z is ambiguous; z is in the first sets of z as well as )r*   r    r;   r<   
ValueErrorrd   update)r-   rF   rH   rI   totalsetoverlapcheckrJ   rK   fsetinverseitsfirstsymbols               r   rd   zParserGenerator.calcfirst   s   io
4A#% :++-- 	1 	1KE4	!!DJ&&:e,D|()@4)GHHH $ NN5))):e,D+++%%%&*U##"#',ajU##"$+1133 	( 	(OE8" ( (W$$$*$(DD&&&%%%J   #(( $
4r   DFAStatec                 |   i }d }| j         t          j        k    r| j         t          j        k    r)|                                  | j         t          j        k    )|                     t          j                  }|                     t          j        d           |                                 \  }}|                     t          j                   | 	                    ||          }t          |          }|                     |           t          |          }|||<   ||}| j         t          j        k    |J ||fS )N:)typer   	ENDMARKERNEWLINEr(   expectr_   OP	parse_rhsmake_dfar7   simplify_dfa)	r-   r*   r+   rF   azrH   oldlennewlens	            r   r)   zParserGenerator.parse   s   %)i5?**)u},, )u},, ;;uz**DKK#&&&>>##DAqKK&&&--1%%CXXFc"""XXFDJ""# i5?**$ &&&[  r   rC   NFAStatefinishc           
         t          |t                    sJ t          |t                    sJ dt          dt          t          t          f         ffd}dt          dt          t          t          f         dd ffdt	           ||          |          g}|D ]}i }|j        D ]1}|j        D ]'\  }}	|  |	|                    |i                      (2t          |	                                          D ]R\  }}
|D ]}|j        |
k    r n&t	          |
|          }|
                    |           |                    ||           S|S )NrI   r!   c                 $    i } | |           |S r#   r   )rI   base
addclosures     r   closurez)ParserGenerator.make_dfa.<locals>.closure   s    (*DJud###Kr   r   c                     t          | t                    sJ | |v rd S d|| <   | j        D ]\  }}| ||           d S rN   )rX   r}   r;   )rI   r   rJ   rK   r   s       r   r   z,ParserGenerator.make_dfa.<locals>.addclosure   sg    eX.....}}DK$z + +t=JtT***+ +r   )rX   r}   r   rY   rn   nfasetr;   
setdefaultr:   r<   r=   addarc)r-   rC   r~   r   rA   rI   r;   nfastaterJ   rK   r   str   s               @r   rw   zParserGenerator.make_dfa   s   
 %*****&(+++++	8 	Xs](; 	 	 	 	 	 	
	+h 	+d8S=.A 	+d 	+ 	+ 	+ 	+ 	+ 	+ 775>>6223 	( 	(E35D!L E E#+= E EKE4("
4)C)CDDDE "(

!5!5 ( (v  & &ByF** + "&&11BMM"%%%R''''( r   c                 l   t          d|           |g}t          |          D ]\  }}t          d|||u rdpd           |j        D ]l\  }}||v r|                    |          }	n$t	          |          }	|                    |           |t          d|	z             Xt          d||	fz             md S )NzDump of NFA for  State(final) z	    -> %d    %s -> %d)print	enumerater;   r?   r7   r=   )
r-   rF   rC   r~   todorG   rI   rJ   rK   js
             r   dump_nfazParserGenerator.dump_nfa   s    &&&w!$ 	7 	7HAu)Q =I CDDD$z 	7 	7t4<<

4((AAD		AKK%%%=+/****.E1:56666	7	7 	7r   rH   c           	      *   t          d|           t          |          D ]r\  }}t          d||j        rdpd           t          |j                                                  D ],\  }}t          d||                    |          fz             -sd S )NzDump of DFA forr   r   r   r   )r   r   r@   r:   r;   r<   r?   )r-   rF   rH   rG   rI   rJ   rK   s          r   dump_dfazParserGenerator.dump_dfa  s    &&&!# 	A 	AHAu)Q ;) ArBBB%ej&6&6&8&899 A Atnsyy'??@@@@A	A 	Ar   c                     d}|rnd}t          |          D ]X\  }}t          |dz   t          |                    D ]2}||         }||k    r"||= |D ]}|                    ||           d} n3Y|ld S d S )NTFr   )r   ranger7   
unifystate)r-   rH   changesrG   state_ir   state_jrI   s           r   rx   zParserGenerator.simplify_dfa  s      	G'nn 	 	
7q1uc#hh//  A!!fG'))F%( ? ?E!,,Wg>>>>"& *  	 	 	 	 	r   )r}   r}   c                    |                                  \  }}| j        dk    r||fS t                      }t                      }|                    |           |                    |           | j        dk    r`|                                  |                                  \  }}|                    |           |                    |           | j        dk    `||fS )N|)	parse_altrb   r}   r   r(   )r-   ry   rz   aazzs        r   rv   zParserGenerator.parse_rhs   s    ~~1:a4KBBIIaLLLHHRLLL*##~~''1		!	 *##
 r6Mr   c                 4   |                                  \  }}| j        dv s| j        t          j        t          j        fv rV|                                  \  }}|                    |           |}| j        dv 7| j        t          j        t          j        fv V||fS )N)([)
parse_itemrb   rq   r   r_   STRINGr   )r-   ry   brD   ds        r   r   zParserGenerator.parse_alt1  s      1jJ&&$)
EL7Q*Q*Q??$$DAqHHQKKKA jJ&&$)
EL7Q*Q*Q !tr   c                    | j         dk    rd|                                  |                                 \  }}|                     t          j        d           |                    |           ||fS |                                 \  }}| j         }|dvr||fS |                                  |                    |           |dk    r||fS ||fS )Nr   ])+*r   )rb   r(   rv   rt   r   ru   r   
parse_atom)r-   ry   rz   rb   s       r   r   zParserGenerator.parse_item:  s    :MMOOO>>##DAqKK#&&&HHQKKKa4K??$$DAqJEJ&&!tMMOOOHHQKKK||!t!tr   c                    | j         dk    rO|                                  |                                 \  }}|                     t          j        d           ||fS | j        t          j        t          j        fv rOt                      }t                      }|
                    || j                    |                                  ||fS |                     d| j        | j                    J )Nr   )z+expected (...) or NAME or STRING, got %s/%s)rb   r(   rv   rt   r   ru   rq   r_   r   r}   r   raise_error)r-   ry   rz   s      r   r   zParserGenerator.parse_atomN  s    :MMOOO>>##DAqKK#&&&a4KY5:u|444

A

AHHQ
###MMOOOa4K=ty$*   Lr   rq   rb   c                     | j         |k    s|.| j        |k    r#|                     d||| j         | j                   | j        }|                                  |S )Nzexpected %s/%s, got %s/%s)rq   rb   r   r(   )r-   rq   rb   s      r   rt   zParserGenerator.expecta  sb    9!2tzU7J7J+T5$)TZ   
r   c                    t          | j                  }|d         t          j        t          j        fv r4t          | j                  }|d         t          j        t          j        fv 4|\  | _        | _        | _        | _        | _	        d S )Nr   )
rK   r   r   COMMENTNLrq   rb   beginendline)r-   tups     r   r(   zParserGenerator.gettokenj  sr    4>""!f)8;777t~&&C !f)8;777AD>	4:tz48TYYYr   msgargsc           
          |rG	 ||z  }n@#  d                     |gt          t          t          |                    z             }Y nxY wt	          || j        | j        d         | j        d         | j        f          )N r   r   )joinr2   mapstrSyntaxErrorr   r   r   )r-   r   r   s      r   r   zParserGenerator.raise_errorq  sx     	==Dj=hhutCTNN';';;<<#tx{DHQKSTTTs	   
 ;Ar#   r!   N)%r   r   r   Path__annotations__r	   r   r
   r   r   r   rY   r/   r   rL   rB   r>   r,   rd   r   r   r)   rw   r   r   r   rx   rv   r   r   r   r   rt   r(   r   r   r   r   r   r   r   r       s6        NNNtH&&&&htD#I//0000  x4/A T    k    2K t S#X    1"K 1" 1" 1" 1" 1" 1"f% % % %$d $t $ $ $ $@!uT$Z(8"894?@ ! ! ! !2%j %* %jAQ % % % %N7T 7* 7j 7T 7 7 7 7 AT A(< A A A A AZ 0 T    *5!78    "5!78    E"89    (E"89    & 3 x}     E E E EUs U3 U8 U U U U U Ur   r   c                   l    e Zd ZU eeee         d f                  ed<   ddZd	dd dee         ddfdZ	dS )
r}   r;   r!   Nc                     g | _         d S r#   )r;   )r-   s    r   r/   zNFAState.__init__}  s    			r   rK   rJ   c                     |t          |t                    sJ t          |t                    sJ | j                            ||f           d S r#   )rX   r   r}   r;   r=   r-   rK   rJ   s      r   r   zNFAState.addarc  sO    }
5# 6 6}}}$)))))	%'''''r   r   r#   )
r   r   r   r   r   r   r   r   r/   r   r   r   r   r}   r}   z  s{         
uXd^Z/0
1111   ( (: (htn ( ( ( ( ( ( (r   r}   c                       e Zd ZU eeef         ed<   eed<   eed f         ed<   deeef         deddfdZ	dd d	eddfd
Z
ddZdedefdZdZeed<   dS )rn   r   r@   r;   finalr!   Nc                     t          |t                    sJ t          t          t          |                    t                    sJ t          |t                    sJ || _        ||v | _        i | _        d S r#   )rX   dictrK   iterr}   r   r@   r;   )r-   r   r   s      r   r/   zDFAState.__init__  so    &$'''''$tF||,,h77777%*****			r   rK   rJ   c                     t          |t                    sJ || j        vsJ t          |t                    sJ || j        |<   d S r#   )rX   r   r;   rn   r   s      r   r   zDFAState.addarc  sS    %%%%%%DI%%%%$)))))	%r   oldnewc                 `    | j                                         D ]\  }}||u r
|| j         |<   d S r#   )r;   r<   )r-   r   r   rJ   rK   s        r   r   zDFAState.unifystate  sA    9??,, 	' 	'KE4s{{#&	% 	' 	'r   otherc                 ,   t          |t                    sJ | j        |j        k    rdS t          | j                  t          |j                  k    rdS | j                                        D ]$\  }}||j                            |          ur dS %dS )NFT)rX   rn   r@   r7   r;   r<   get)r-   r   rJ   rK   s       r   __eq__zDFAState.__eq__  s    %*****<5=((5 ty>>S__,,59??,, 	 	KE45:>>%0000uu 1tr   __hash__)r   rn   r   rn   r!   N)r   r   r   r   r}   r   r   boolr   r/   r   r   r   r   r   r   r   rn   rn     s         3MMM
tZ
    tHcM2 8      :  d  t        ' ' ' '
C D     Hcr   rn   Grammar.txtr   r!   c                 H    t          |           }|                                S r#   )r   rL   )r   ps     r   generate_grammarr     s    !!A>>r   )r   )r   r   r   r   typingr   r   r	   r
   r   r   r   r   r   r   r   blib2to3.pgen2blib2to3.pgen2.tokenizer   osr   r   Grammarr   objectr   r}   rn   r   r   r   r   <module>r      s  
 ' & & & & & & & & &                          # " " " " " 1 1 1 1 1 1 				 S$$%	 	 	 	 	'/ 	 	 	WU WU WU WU WUf WU WU WUt
	( 	( 	( 	( 	(v 	( 	( 	(& & & & &v & & &R t       r   