
    h;                         d dl Z d dlmZmZ d dl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y)    N)IteratorSequence)IOAnyNoReturnOptionalUnion)grammartokentokenize)	TokenInfozos.PathLike[str]c                       e Zd Zy)PgenGrammarN)__name__
__module____qualname__     F/var/www/html/immo/lib/python3.12/site-packages/blib2to3/pgen2/pgen.pyr   r      s    r   r   c                      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"fd$Z#y)'ParserGeneratorfilenamestream	generatorfirstNreturnc                 6   d }|t        |d      }|j                  }|| _        t        j                  |j	                               | _        | j                          | j                         \  | _        | _	        | |        i | _
        | j                          y )Nzutf-8)encoding)opencloser   r   readr   gettokenparsedfasstartsymbolr   addfirstsets)selfr   r   close_streams       r   __init__zParserGenerator.__init__   s|    >(W5F!<<L !**6;;=9&*jjl#	4##N
r   c           	         t               }t        | j                  j                               }|j	                          |j                  | j                         |j                  d| j                         |D ]8  }dt        |j                        z   }||j                  |<   ||j                  |<   : |D ]  }| j                  |   }g }|D ]  }g }t        |j                  j                               D ]7  \  }	}
|j                  | j                  ||	      |j!                  |
      f       9 |j"                  r"|j                  d|j!                  |      f       |j                  |        |j$                  j                  |       || 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;   stater5   labelnexts              r   make_grammarzParserGenerator.make_grammar&   s   MTYY^^%&

T%%&Q(() 	&Dc!//**A$%AOOD!!%AOOA	&  	OD))D/CF $#)%***:*:*<#= NKE4KKE!:CIIdO LMN==KKCIIe$4 56d#$ HHOOF#-3T__Q5M,NAFF1??4()	O //$"2"23r   r>   r@   c                 ~    | j                   |   }|J i }t        |      D ]  }| j                  ||      }d||<    |S N   )r   r4   r8   )r'   r>   r@   rawfirstr   rD   ilabels          r   r<   zParserGenerator.make_first?   sU    ::d####H% 	E__Q.FE&M	 r   rD   c                    t        |j                        }|d   j                         r||j                  v rX||j                  v r|j                  |   S |j                  j                  |j                  |   d f       ||j                  |<   |S t        t        |d       }t        |t              sJ |       |t        j                  v sJ |       ||j                  v r|j                  |   S |j                  j                  |d f       ||j                  |<   |S |d   dv sJ |       t        |      }|d   j                         r\|d   dk(  r|j                  }n|j                  }||v r||   S |j                  j                  t        j                  |f       |||<   |S t         j"                  |   }||j                  v r|j                  |   S |j                  j                  |d f       ||j                  |<   |S )Nr   )"'rM   )r1   labelsisalphar2   symbol2labelr7   getattrr   
isinstanceinttok_nametokensevalsoft_keywordskeywordsNAMEr
   opmap)r'   r>   rD   rK   itokenvaluerY   s          r   r8   zParserGenerator.make_labelI   s   QXX8'ANN*>>%00HHOOQ__U%;T$BC,2ANN5)!M !t4!&#.55./66/QXX%88F++HHOOVTN3'-AHHV$!M 8z)050)KEQx!8s? H zzH H$#E?*HHOOUZZ$78&,HUO!M !u-QXX%88F++HHOOVTN3'-AHHV$!Mr   c                     t        | j                  j                               }|j                          |D ]"  }|| j                  vs| j                  |       $ y N)r,   r$   r-   r.   r   	calcfirst)r'   r?   r@   s      r   r&   zParserGenerator.addfirstsets|   sG    TYY^^%&

 	%D4::%t$	%r   c                    | j                   |   }d | j                  |<   |d   }i }i }|j                  D ]  }|| j                   v rh|| j                  v r| j                  |   }|2t        d|      | j	                  |       | j                  |   }|J |j                  |       |||<   yd||<   |di||<    i }|j                         D ]/  \  }}	|	D ]%  }
|
|v rt        d| d|
 d| d||
          |||
<   ' 1 || j                  |<   y )Nr   zrecursion for rule rI   zrule z is ambiguous; z is in the first sets of z as well as )r$   r   r5   
ValueErrorr`   updater6   )r'   r@   rB   rC   totalsetoverlapcheckrD   fsetinverseitsfirstsymbols              r   r`   zParserGenerator.calcfirst   s^   iio

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

4r   DFAStatec                 d   i }d }| j                   t        j                  k7  r| j                   t        j                  k(  r.| j	                          | j                   t        j                  k(  r.| j                  t        j                        }| j                  t        j                  d       | j                         \  }}| j                  t        j                         | j                  ||      }| j                  |       |||<   ||}| j                   t        j                  k7  r|J ||fS )N:)typer   	ENDMARKERNEWLINEr"   expectrZ   OP	parse_rhsmake_dfasimplify_dfa)r'   r$   r%   r@   azrB   s          r   r#   zParserGenerator.parse   s    %)ii5??*))u}}, ))u}}, ;;uzz*DKK#&>>#DAqKK&--1%C c"DJ""# ii5??*$ &&&[  r   r=   NFAStatefinishc           
      Z   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 ]2  }|j                  D ]!  \  }}	|	 |	|j                  |i              # 4 t        |j                               D ]L  \  }}
|D ]  }|j
                  |
k(  s n t	        |
|      }|j                  |       |j                  ||       N  |S )NrC   r   c                     i } | |       |S r_   r   )rC   base
addclosures     r   closurez)ParserGenerator.make_dfa.<locals>.closure   s    (*Dud#Kr   r{   c                 ~    t        | t              sJ | |v ry d|| <   | j                  D ]  \  }}|	 ||        y rH   )rS   rw   r5   )rC   r{   rD   rE   r|   s       r   r|   z,ParserGenerator.make_dfa.<locals>.addclosure   sL    eX...}DK$zz +t=tT*+r   )rS   rw   dictrT   rj   nfasetr5   
setdefaultr4   r6   r7   addarc)r'   r=   rx   r}   r;   rC   r5   nfastaterD   rE   r   str|   s               @r   rs   zParserGenerator.make_dfa   sC   
 %***&(+++	8 	Xs](; 	
	+h 	+d8S=.A 	+d 	+ 75>623 	(E35D!LL E#+== EKE4("4)CDEE "(

!5 (v  &ByyF*& "&&1BMM"%R'(	( r   c                 F   t        d|       |g}t        |      D ]  \  }}t        d|||u xr dxs d       |j                  D ]Y  \  }}||v r|j                  |      }	nt	        |      }	|j                  |       |t        d|	        It        d| d|	        [  y )NzDump of NFA for  State(final) z    ->      -> )print	enumerater5   r9   r1   r7   )
r'   r@   r=   rx   todorA   rC   rD   rE   js
             r   dump_nfazParserGenerator.dump_nfa   s    &w!$ 	1HAu)Q =I CD$zz 	1t4<

4(AD	AKK%=GA3-(DtA3/0	1	1r   rB   c           
         t        d|       t        |      D ]o  \  }}t        d||j                  xr dxs d       t        |j                  j                               D ]%  \  }}t        d| d|j                  |              ' q y )NzDump of DFA forr   r   r   r   r   )r   r   r:   r4   r5   r6   r9   )r'   r@   rB   rA   rC   rD   rE   s          r   dump_dfazParserGenerator.dump_dfa   s    &!# 	;HAu)Q ;) ArB%ejj&6&6&89 ;tUG4		$'89:;	;r   c                     d}|r`d}t        |      D ]L  \  }}t        |dz   t        |            D ],  }||   }||k(  s||= |D ]  }|j                  ||        d} L N |r_y y )NTFrI   )r   ranger1   
unifystate)r'   rB   changesrA   state_ir   state_jrC   s           r   rt   zParserGenerator.simplify_dfa   s     G'n 	
7q1uc#h/ A!!fG')F%( ?E!,,Wg>?"&	 r   )rw   rw   c                    | j                         \  }}| j                  dk7  r||fS t               }t               }|j                  |       |j                  |       | j                  dk(  rU| j	                          | j                         \  }}|j                  |       |j                  |       | j                  dk(  rU||fS )N|)	parse_altr]   rw   r   r"   )r'   ru   rv   aazzs        r   rr   zParserGenerator.parse_rhs  s    ~~1::a4KBBIIaLHHRL**#~~'1		!	 **#
 r6Mr   c                 h   | j                         \  }}| j                  dv s,| j                  t        j                  t        j
                  fv rb| j                         \  }}|j                  |       |}| j                  dv r5| j                  t        j                  t        j
                  fv rb||fS )N)([)
parse_itemr]   rm   r   rZ   STRINGr   )r'   ru   br>   ds        r   r   zParserGenerator.parse_alt!  s     1jjJ&$))

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

ELL7Q*Q !tr   c                 z   | j                   dk(  rX| j                          | j                         \  }}| j                  t        j
                  d       |j                  |       ||fS | j                         \  }}| j                   }|dvr||fS | j                          |j                  |       |dk(  r||fS ||fS )Nr   ])+*r   )r]   r"   rr   rp   r   rq   r   
parse_atom)r'   ru   rv   r]   s       r   r   zParserGenerator.parse_item*  s    ::MMO>>#DAqKK#&HHQKa4K??$DAqJJEJ&!tMMOHHQK|!t!tr   c                    | j                   dk(  rG| j                          | j                         \  }}| j                  t        j
                  d       ||fS | j                  t        j                  t        j                  fv rDt               }t               }|j                  || j                          | j                          ||fS | j                  d| j                   d| j                           y )Nr   )z&expected (...) or NAME or STRING, got /)r]   r"   rr   rp   r   rq   rm   rZ   r   rw   r   raise_error)r'   ru   rv   s      r   r   zParserGenerator.parse_atom>  s    ::MMO>>#DAqKK#&a4KYY5::u||44
A
AHHQ

#MMOa4K81TZZLQr   rm   r]   c           
          | j                   |k7  s|@| j                  |k7  r1| j                  d| d| d| j                    d| j                          | j                  }| j                          |S )Nz	expected r   z, got )rm   r]   r   r"   )r'   rm   r]   s      r   rp   zParserGenerator.expectP  sd    99!2tzzU7JyawfTYYKqUV

r   c                 0   t        | j                        }|d   t        j                  t        j                  fv r;t        | j                        }|d   t        j                  t        j                  fv r;|\  | _        | _        | _        | _        | _	        y )Nr   )
rE   r   r   COMMENTNLrm   r]   beginendline)r'   tups     r   r"   zParserGenerator.gettokenW  sp    4>>"!f))8;;77t~~&C !f))8;;77AD>	4:tz48TYr   msgc                     t        |t        | j                        | j                  d   | j                  d   | j                  f      )Nr   rI   )SyntaxErrorstrr   r   r   )r'   r   s     r   r   zParserGenerator.raise_error^  s:    #dmm$dhhqk488A;		J
 	
r   r_   r   N)$r   r   r   Path__annotations__r   r   r   r   r   r   rT   r)   r   rF   r<   r8   r&   r`   tupler,   r#   rs   r   r   r   rt   rr   r   r   r   r   rp   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    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	y)
rw   r5   r   Nc                     g | _         y r_   )r5   )r'   s    r   r)   zNFAState.__init__g  s	    	r   rE   rD   c                     |t        |t              sJ t        |t              sJ | j                  j	                  ||f       y r_   )rS   r   rw   r5   r7   r'   rE   rD   s      r   r   zNFAState.addarcj  s<    }
5# 666$)))		%'r   r   r_   )
r   r   r   r,   r   r   r   r   r)   r   r   r   r   rw   rw   d  s>    
uXc]J./
00(: (hsm (t (r   rw   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<   y)rj   r   r:   r5   finalr   Nc                     t        |t              sJ t        t        t        |            t              sJ t        |t              sJ || _        ||v | _        i | _        y r_   )rS   r   rE   iterrw   r   r:   r5   )r'   r   r   s      r   r)   zDFAState.__init__u  sT    &$'''$tF|,h777%***	r   rE   rD   c                     t        |t              sJ || j                  vsJ t        |t              sJ || j                  |<   y r_   )rS   r   r5   rj   r   s      r   r   zDFAState.addarc}  sB    %%%%DII%%%$)))		%r   c                 p    | j                   j                         D ]  \  }}||u s|| j                   |<    y r_   )r5   r6   )r'   oldnewrD   rE   s        r   r   zDFAState.unifystate  s5    99??, 	'KE4s{#&		% 	'r   otherc                 6   t        |t              sJ | j                  |j                  k7  ryt        | j                        t        |j                        k7  ry| j                  j                         D ]$  \  }}||j                  j                  |      us$ y y)NFT)rS   rj   r:   r1   r5   r6   get)r'   r   rD   rE   s       r   __eq__zDFAState.__eq__  s}    %***<<5==( tyy>S_,99??, 	KE45::>>%00	 r   __hash__)r   rj   r   rj   r   N)r   r   r   r   rw   r   r   boolr   r)   r   r   r   r   r   r   r   rj   rj   p  s    3M
sJ
tHcM2 8   :  c  d  '
C D  Hcr   rj   r   r   c                 8    t        |       }|j                         S r_   )r   rF   )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   rw   rj   r   r   r   r   <module>r      sq    
 . 5 5 3 3 -S$$%	'// 	O
 O
d
	( 	(& &Rt  r   