
    yIfD<                         d dl Z d dl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mZmZ d dlmZ eedf         Z G d dej                  Z G d d	          Z G d
 d          Z G d d          ZddedefdZdS )    N)
IOAnyDictIteratorListNoReturnOptionalSequenceTupleUnion)grammartokentokenize)GoodTokenInfozos.PathLike[str]c                       e Zd ZdS )PgenGrammarN)__name__
__module____qualname__     G/var/www/piapp/venv/lib/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                 N   d }|t          |d          }|j        }|| _        || _        t	          j        |j                  | _        |                                  | 	                                \  | _
        | _        |
 |             i | _        |                                  d S )Nzutf-8)encoding)opencloser   r   r   generate_tokensreadliner   gettokenparsedfasstartsymbolr   addfirstsets)selfr   r   close_streams       r   __init__zParserGenerator.__init__"   s    >(W555F!<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dfar?   stater9   labelnexts              r   make_grammarzParserGenerator.make_grammar1   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   rB   rD   c                     | j         |         }|J i }t          |          D ]}|                     ||          }d||<   |S N   )r   r8   r<   )r+   rB   rD   rawfirstr   rH   ilabels          r   r@   zParserGenerator.make_firstJ   sY    :d####H%% 	 	E__Q..FE&MMr   rH   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   )"'rQ   )r5   labelsisalphar6   symbol2labelr;   getattrr   
isinstanceinttok_nametokensevalsoft_keywordskeywordsNAMEr   opmap)r+   rB   rH   rO   itokenvaluer]   s          r   r<   zParserGenerator.make_labelT   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 N)r0   r(   r1   r2   r   	calcfirst)r+   rC   rD   s      r   r*   zParserGenerator.addfirstsets   sa    TY^^%%&&

 	% 	%D4:%%t$$$	% 	%r   c                    | j         |         }d | j        |<   |d         }i }i }|j        D ]}|| j         v rl|| j        v r"| j        |         }|t          d|z            n&|                     |           | j        |         }|J |                    |           |||<   wd||<   |di||<   i }|                                D ]4\  }}	|	D ],}
|
|v r!t          d|d|
d|d||
                   |||
<   -5|| j        |<   d S )Nr   zrecursion for rule %rrM   zrule z is ambiguous; z is in the first sets of z as well as )r(   r   r9   
ValueErrorrd   updater:   )r+   rD   rF   rG   totalsetoverlapcheckrH   fsetinverseitsfirstsymbols              r   rd   zParserGenerator.calcfirst   s   io
4A#%Z 	1 	1E	!!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                   | 	                    ||          }| 
                    |           |||<   ||}| j         t          j        k    |J ||fS )N:)typer   	ENDMARKERNEWLINEr&   expectr^   OP	parse_rhsmake_dfasimplify_dfa)r+   r(   r)   rD   azrF   s          r   r'   zParserGenerator.parse   s   %)i5?**)u},, )u},, ;;uz**DKK#&&&>>##DAqKK&&&--1%%C c"""DJ""# i5?**$ &&&[  r   rA   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 )NrG   r   c                 $    i } | |           |S rc   r   )rG   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 rL   )rW   r{   r9   )rG   r   rH   rI   r   s       r   r   z,ParserGenerator.make_dfa.<locals>.addclosure   sg    eX.....}}DK$z + +t=JtT***+ +r   )rW   r{   r   rX   rn   nfasetr9   
setdefaultr8   r:   r;   addarc)r+   rA   r|   r   r?   rG   r9   nfastaterH   rI   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	enumerater9   r=   r5   r;   )
r+   rD   rA   r|   todorE   rG   rH   rI   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   rF   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>   r8   r9   r:   r=   )r+   rD   rF   rE   rG   rH   rI   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 )NTFrM   )r   ranger5   
unifystate)r+   rF   changesrE   state_ir   state_jrG   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_altra   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_itemra   rq   r   r^   STRINGr   )r+   ry   brB   ds        r   r   zParserGenerator.parse_alt,  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   )ra   r&   rv   rt   r   ru   r   
parse_atom)r+   ry   rz   ra   s       r   r   zParserGenerator.parse_item5  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                    t          )Nr   )z+expected (...) or NAME or STRING, got %s/%s)ra   r&   rv   rt   r   ru   rq   r^   r   r{   r   raise_errorAssertionError)r+   ry   rz   s      r   r   zParserGenerator.parse_atomI  s    :MMOOO>>##DAqKK#&&&a4KY5:u|444

A

AHHQ
###MMOOOa4K=ty$*   ! r   rq   ra   c                     | j         |k    s|.| j        |k    r#|                     d||| j         | j                   | j        }|                                  |S )Nzexpected %s/%s, got %s/%s)rq   ra   r   r&   )r+   rq   ra   s      r   rt   zParserGenerator.expect\  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   )
rI   r   r   COMMENTNLrq   ra   beginendline)r+   tups     r   r&   zParserGenerator.gettokene  sr    4>""!f)8;777t~&&C !f)8;777AD>	4:tz48TYYYr   msgargsc           
         |rP	 ||z  }nI# t           $ r< d                    |gt          t          t          |                    z             }Y nw xY wt          || j        | j        d         | j        d         | j        f          )N r   rM   )		Exceptionjoinr0   mapstrSyntaxErrorr   r   r   )r+   r   r   s      r   r   zParserGenerator.raise_errorl  s     	==Dj = = =hhutCTNN';';;<<=#tx{DHQKSTTTs   
 AAArc   r   N)$r   r   r   Path__annotations__r   r   r   r   r   r	   rX   r-   r   rJ   r@   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      s3        NNNsGOOO&&&&Xd38n--....  x3/@ D    k    2K s tCH~    1"K 1" 1" 1" 1" 1" 1"f% % % %$c $d $ $ $ $@!uT#tJ'7"78#=> ! ! ! !2%j %* %jAQ % % % %N7S 7 7Z 7D 7 7 7 7 AS Ax
'; 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{   r9   r   Nc                     g | _         d S rc   )r9   )r+   s    r   r-   zNFAState.__init__x  s    			r   rI   rH   c                     |t          |t                    sJ t          |t                    sJ | j                            ||f           d S rc   )rW   r   r{   r9   r;   r+   rI   rH   s      r   r   zNFAState.addarc{  sO    }
5# 6 6}}}$)))))	%'''''r   r   rc   )
r   r   r   r   r   r	   r   r   r-   r   r   r   r   r{   r{   u  s{         
uXc]J./
0000   ( (: (hsm (t ( ( ( ( ( (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>   r9   finalr   Nc                     t          |t                    sJ t          t          t          |                    t                    sJ t          |t                    sJ || _        ||v | _        i | _        d S rc   )rW   dictrI   iterr{   r   r>   r9   )r+   r   r   s      r   r-   zDFAState.__init__  so    &$'''''$tF||,,h77777%*****			r   rI   rH   c                     t          |t                    sJ || j        vsJ t          |t                    sJ || j        |<   d S rc   )rW   r   r9   rn   r   s      r   r   zDFAState.addarc  sS    %%%%%%DI%%%%$)))))	%r   oldnewc                 `    | j                                         D ]\  }}||u r
|| j         |<   d S rc   )r9   r:   )r+   r   r   rH   rI   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)rW   rn   r>   r5   r9   r:   get)r+   r   rH   rI   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
sJ
tHcM2 8      :  c  d        ' ' ' '
C D     Hcr   rn   Grammar.txtr   r   c                 H    t          |           }|                                S rc   )r   rJ   )r   ps     r   generate_grammarr     s    !!A>>r   )r   )ostypingr   r   r   r   r   r   r	   r
   r   r   blib2to3.pgen2r   r   r   blib2to3.pgen2.tokenizer   r   r   Grammarr   r   r{   rn   r   r   r   r   <module>r      s   
			                        4 3 3 3 3 3 3 3 3 3 1 1 1 1 1 1S$$%	 	 	 	 	'/ 	 	 	VU VU VU VU VU VU VU VUr
	( 	( 	( 	( 	( 	( 	( 	(& & & & & & & &R t       r   