
    mi:                         d dl Z d dlmZmZ d dl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)IteratorSequence)IOAnyNoReturnUnion)grammartokentokenize)	TokenInfozos.PathLike[str]c                       e Zd ZdS )PgenGrammarN)__name__
__module____qualname__     k/var/www/html/bestrading.cuttalo.com/scripts/kaggle-env/lib/python3.11/site-packages/blib2to3/pgen2/pgen.pyr   r      s        Dr   r   c                   :   e Zd ZU eed<   ee         ed<   ee         ed<   e	ee	ee
f         dz  f         ed<   d%dedee         dz  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dz  defd!Zd&d"Z d#ede!fd$Z"dS )'ParserGeneratorfilenamestream	generatorNfirstreturnc                 Z   d }|t          |d          }|j        }|| _        t          j        |                                          | _        |                                  |                                 \  | _        | _	        |
 |             i | _
        |                                  d S )Nzutf-8)encoding)opencloser   r   readr   gettokenparsedfasstartsymbolr   addfirstsets)selfr   r   close_streams       r   __init__zParserGenerator.__init__   s    >(W555F!<L !*6;;==99&*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:   stater4   labelnexts              r   make_grammarzParserGenerator.make_grammar&   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   r=   r?   c                     | j         |         }|J i }t          |          D ]}|                     ||          }d||<   |S N   )r   r3   r7   )r&   r=   r?   rawfirstr   rC   ilabels          r   r;   zParserGenerator.make_first?   sY    :d####H%% 	 	E__Q..FE&MMr   rC   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   )"'rL   )r0   labelsisalphar1   symbol2labelr6   getattrr
   
isinstanceinttok_nametokensevalsoft_keywordskeywordsNAMEr	   opmap)r&   r=   rC   rJ   itokenvaluerX   s          r   r7   zParserGenerator.make_labelI   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)r+   r#   r,   r-   r   	calcfirst)r&   r>   r?   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|          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 rH   zrule z is ambiguous; z is in the first sets of z as well as )r#   r   r4   
ValueErrorr_   updater5   )r&   r?   rA   rB   totalsetoverlapcheckrC   fsetinverseitsfirstsymbols              r   r_   zParserGenerator.calcfirst   s   io
4A#%Z 	1 	1E	!!DJ&&:e,D|()Gt)G)GHHH $ NN5))):e,D+++%%%&*U##"#',ajU##"$+1133 	( 	(OE8" ( (W$$$A A AV A A!A A/6vA A   #(( $
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!   expectrY   OP	parse_rhsmake_dfasimplify_dfa)r&   r#   r$   r?   azrA   s          r   r"   zParserGenerator.parse   s   "&i5?**)u},, )u},, ;;uz**DKK#&&&>>##DAqKK&&&--1%%C c"""DJ""# i5?**$ &&&[  r   r<   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 )NrB   r   c                 $    i } | |           |S r^   r   )rB   base
addclosures     r   closurez)ParserGenerator.make_dfa.<locals>.closure   s    (*DJud###Kr   rz   c                     t          | t                    sJ | |v rd S d|| <   | j        D ]\  }}| ||           d S rG   )rR   rv   r4   )rB   rz   rC   rD   r{   s       r   r{   z,ParserGenerator.make_dfa.<locals>.addclosure   sg    eX.....}}DK$z + +t=JtT***+ +r   )rR   rv   dictrS   ri   nfasetr4   
setdefaultr3   r5   r6   addarc)r&   r<   rw   r|   r:   rB   r4   nfastaterC   rD   r   str{   s               @r   rr   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                 n   t          d|           |g}t          |          D ]\  }}t          d|||u rdpd           |j        D ]m\  }}||v r|                    |          }	n$t	          |          }	|                    |           |t          d|	            Xt          d| d|	            nd S )NzDump of NFA for  State(final) z    ->      -> )print	enumerater4   r8   r0   r6   )
r&   r?   r<   rw   todor@   rB   rC   rD   js
             r   dump_nfazParserGenerator.dump_nfa   s    &&&w!$ 	1 	1HAu)Q =I CDDD$z 	1 	1t4<<

4((AAD		AKK%%%=-A--((((///A//0000	1	1 	1r   rA   c           
      ,   t          d|           t          |          D ]s\  }}t          d||j        rdpd           t          |j                                                  D ]-\  }}t          d| d|                    |                      .td S )NzDump of DFA forr   r   r   r   r   )r   r   r9   r3   r4   r5   r8   )r&   r?   rA   r@   rB   rC   rD   s          r   dump_dfazParserGenerator.dump_dfa   s    &&&!# 	; 	;HAu)Q ;) ArBBB%ej&6&6&8&899 ; ;t9U99		$99::::;	; 	;r   c                     d}|rnd}t          |          D ]X\  }}t          |dz   t          |                    D ]2}||         }||k    r"||= |D ]}|                    ||           d} n3Y|ld S d S )NTFrH   )r   ranger0   
unifystate)r&   rA   changesr@   state_ir   state_jrB   s           r   rs   zParserGenerator.simplify_dfa   s      	G'nn 	 	
7q1uc#hh//  A!!fG'))F%( ? ?E!,,Wg>>>>"& *  	 	 	 	 	r   )rv   rv   c                    |                                  \  }}| j        dk    r||fS t                      }t                      }|                    |           |                    |           | j        dk    r`|                                  |                                  \  }}|                    |           |                    |           | j        dk    `||fS )N|)	parse_altr\   rv   r   r!   )r&   rt   ru   aazzs        r   rq   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_itemr\   rl   r
   rY   STRINGr   )r&   rt   br=   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   )r\   r!   rq   ro   r
   rp   r   
parse_atom)r&   rt   ru   r\   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         d| j                     d S )Nr   )z&expected (...) or NAME or STRING, got /)r\   r!   rq   ro   r
   rp   rl   rY   r   rv   r   raise_error)r&   rt   ru   s      r   r   zParserGenerator.parse_atom>  s    :MMOOO>>##DAqKK#&&&a4KY5:u|444

A

AHHQ
###MMOOOa4KQQQTZQQ    r   rl   r\   c           
          | j         |k    s|6| j        |k    r+|                     d| d| d| j          d| j                    | j        }|                                  |S )Nz	expected r   z, got )rl   r\   r   r!   )r&   rl   r\   s      r   ro   zParserGenerator.expectP  sr    9!2tzU7J7JUUUUUTYUUUUVVV
r   c                    t          | j                  }|d         t          j        t          j        fv r4t          | j                  }|d         t          j        t          j        fv 4|\  | _        | _        | _        | _        | _	        d S )Nr   )
rD   r   r   COMMENTNLrl   r\   beginendline)r&   tups     r   r!   zParserGenerator.gettokenW  sr    4>""!f)8;777t~&&C !f)8;777AD>	4:tz48TYYYr   msgc                     t          |t          | j                  | j        d         | j        d         | j        f          )Nr   rH   )SyntaxErrorstrr   r   r   )r&   r   s     r   r   zParserGenerator.raise_error^  s:    #dm$$dhqk48A;	J
 
 	
r   r^   r   N)#r   r   r   Path__annotations__r   r   r   r   r~   rS   r(   r   rE   r;   r7   r%   r_   tupler+   r"   rr   r   r   r   rs   rq   r   r   r   r   ro   r!   r   r   r   r   r   r   r      s        NNNsGOOO	""""T#s(^d**++++  r#w~     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1S 1 1Z 1D 1 1 1 1 ;S ;x
'; ; ; ; ; ;Z 0 T    *5!78    "5!78    E"89    (E"89    $ 3 sTz S    E E E E
s 
x 
 
 
 
 
 
r   r   c                   `    e Zd ZU eeedz  d f                  ed<   ddZd	dd dedz  ddfdZdS )
rv   Nr4   r   c                     g | _         d S r^   )r4   )r&   s    r   r(   zNFAState.__init__g  s    			r   rD   rC   c                     |t          |t                    sJ t          |t                    sJ | j                            ||f           d S r^   )rR   r   rv   r4   r6   r&   rD   rC   s      r   r   zNFAState.addarcj  sO    }
5# 6 6}}}$)))))	%'''''r   r   r^   )	r   r   r   r+   r   r   r   r(   r   r   r   r   rv   rv   d  s{         
uS4Z+,
----   ( (: (cDj (D ( ( ( ( ( (r   rv   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 )ri   r   r9   r4   finalr   Nc                     t          |t                    sJ t          t          t          |                    t                    sJ t          |t                    sJ || _        ||v | _        i | _        d S r^   )rR   r~   rD   iterrv   r   r9   r4   )r&   r   r   s      r   r(   zDFAState.__init__u  so    &$'''''$tF||,,h77777%*****			r   rD   rC   c                     t          |t                    sJ || j        vsJ t          |t                    sJ || j        |<   d S r^   )rR   r   r4   ri   r   s      r   r   zDFAState.addarc}  sS    %%%%%%DI%%%%$)))))	%r   oldnewc                 `    | j                                         D ]\  }}||u r
|| j         |<   d S r^   )r4   r5   )r&   r   r   rC   rD   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)rR   ri   r9   r0   r4   r5   get)r&   r   rC   rD   s       r   __eq__zDFAState.__eq__  s    %*****<5=((5 ty>>S__,,59??,, 	 	KE45:>>%0000uu 1tr   __hash__)r   ri   r   ri   r   N)r   r   r   r~   rv   r   r   boolr   r(   r   r   r   r   r   r   r   ri   ri   p  s         3MMM
sJ
tHcM2 8      :  c  d        ' ' ' '
C D     Hcr   ri   Grammar.txtr   r   c                 H    t          |           }|                                S r^   )r   rE   )r   ps     r   generate_grammarr     s    !!A>>r   )r   )oscollections.abcr   r   typingr   r   r   r   blib2to3.pgen2r	   r
   r   blib2to3.pgen2.tokenizer   r   r   Grammarr   r   rv   ri   r   r   r   r   <module>r      sk   
			 . . . . . . . . + + + + + + + + + + + + 3 3 3 3 3 3 3 3 3 3 - - - - - -S$$%	 	 	 	 	'/ 	 	 	O
 O
 O
 O
 O
 O
 O
 O
d
	( 	( 	( 	( 	( 	( 	( 	(& & & & & & & &R t       r   