o
    gD<                     @   s   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 dejZG dd	 d	ZG d
d dZG dd dZddedefddZdS )    N)
IOAnyDictIteratorListNoReturnOptionalSequenceTupleUnion)grammartokentokenize)GoodTokenInfozos.PathLike[str]c                   @   s   e Zd ZdS )PgenGrammarN)__name__
__module____qualname__ r   r   J/var/www/html/gwz/venv/lib/python3.10/site-packages/blib2to3/pgen2/pgen.pyr      s    r   c                   @   s  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< d8dede
ee  ddfddZdefd	d
Zdedede	eef fddZdededefddZd9ddZdeddfddZdee	eed f ef fddZddddded fddZdeddddddfddZded ed ddfd!d"Zd ed ddfd#d$Zded% fd&d'Zded% fd(d)Zded% fd*d+Zded% fd,d-Zd8d.ed/e
e defd0d1Z d9d2d3Z!d4ed5ede"fd6d7Z#dS ):ParserGeneratorfilenamestream	generatorfirstNreturnc                 C   sp   d }|d u rt |dd}|j}|| _|| _t|j| _|   | 	 \| _
| _|d ur/|  i | _|   d S )Nzutf-8)encoding)opencloser   r   r   generate_tokensreadliner   gettokenparsedfasstartsymbolr   addfirstsets)selfr   r   close_streamr   r   r   __init__"   s   zParserGenerator.__init__c              	   C   s  t  }t| j }|  || j |d| j |D ]}dt|j	 }||j	|< ||j
|< q|D ]P}| j| }g }|D ]0}g }t|j D ]\}	}
|| ||	||
f qI|jri|d||f || q>|j| || ||f|j|j	| < q3|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dfar9   stater3   labelnextr   r   r   make_grammar1   s.   

zParserGenerator.make_grammarr<   r>   c                 C   s@   | j | }|d usJ i }t|D ]}| ||}d||< q|S N   )r   r2   r6   )r&   r<   r>   rawfirstr   rB   ilabelr   r   r   r:   J   s   

zParserGenerator.make_firstrB   c                 C   sf  t |j}|d  r]||jv r,||jv r|j| S |j|j| d f ||j|< |S tt|d }t|t	s;J ||tj
v sDJ |||jv rN|j| S |j|d f ||j|< |S |d dv sgJ |t|}|d  r|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   )"'rI   )r/   labelsisalphar0   symbol2labelr5   getattrr   
isinstanceinttok_nametokensevalsoft_keywordskeywordsNAMEr   opmap)r&   r<   rB   rH   itokenvaluerU   r   r   r   r6   T   sB   











zParserGenerator.make_labelc                 C   s8   t | j }|  |D ]}|| jvr| | qd S N)r*   r#   r+   r,   r   	calcfirst)r&   r=   r>   r   r   r   r%      s   

zParserGenerator.addfirstsetsc              	   C   s  | j | }d | j|< |d }i }i }|jD ]@}|| j v rK|| jv r1| j| }|d u r0td| n| | | j| }|d usAJ || |||< qd||< |di||< qi }| D ]\}}	|	D ]}
|
|v rttd||
|||
 f |||
< qbq\|| j|< d S )Nr   zrecursion for rule %rrF   zArule %s is ambiguous; %s is in the first sets of %s as well as %s)r#   r   r3   
ValueErrorr[   updater4   )r&   r>   r@   rA   totalsetoverlapcheckrB   fsetinverseitsfirstsymbolr   r   r   r[      s>   










zParserGenerator.calcfirstDFAStatec                 C   s   i }d }| j tjkrN| j tjkr|   | j tjks| tj}| tjd |  \}}| tj | 	||}| 
| |||< |d u rH|}| j tjks
|d usTJ ||fS )N:)typer   	ENDMARKERNEWLINEr!   expectrV   OP	parse_rhsmake_dfasimplify_dfa)r&   r#   r$   r>   azr@   r   r   r   r"      s$   
zParserGenerator.parser;   NFAStatefinishc              	      s  t |tsJ t |tsJ dtdtttf f fdd}dtdtttf dd f fdd t|||g}|D ]F}i }|jD ]}|jD ]\}}	|d urU |	||i  qDq?t|	 D ] \}}
|D ]	}|j|
krl nqct|
|}|
| ||| q]q8|S )NrA   r   c                    s   i } | | |S rZ   r   )rA   base
addclosurer   r   closure   s   
z)ParserGenerator.make_dfa.<locals>.closurerr   c                    sH   t | tsJ | |v rd S d|| < | jD ]\}}|d u r! || qd S rE   )rO   rp   r3   )rA   rr   rB   rC   rs   r   r   rt      s   
z,ParserGenerator.make_dfa.<locals>.addclosure)rO   rp   r   rP   rd   nfasetr3   
setdefaultr2   r4   r5   addarc)r&   r;   rq   ru   r9   rA   r3   nfastaterB   rC   rv   str   rs   r   rl      s.   "	



zParserGenerator.make_dfac           
      C   s   t d| |g}t|D ]>\}}t d|||u rdpd |jD ]*\}}||v r-||}	n	t|}	|| |d u rAt d|	  qt d||	f  qqd S )NzDump of NFA for  State(final) z	    -> %d    %s -> %d)print	enumerater3   r7   r/   r5   )
r&   r>   r;   rq   todor?   rA   rB   rC   jr   r   r   dump_nfa   s   

zParserGenerator.dump_nfar@   c                 C   sd   t d| t|D ]&\}}t d||jrdpd t|j D ]\}}t d|||f  qq	d S )NzDump of DFA forr{   r|   r}   r~   )r   r   r8   r2   r3   r4   r7   )r&   r>   r@   r?   rA   rB   rC   r   r   r   dump_dfa   s   
zParserGenerator.dump_dfac                 C   sv   d}|r9d}t |D ]*\}}t|d t|D ]}|| }||kr3||= |D ]}||| q&d} nqq
|sd S d S )NTFrF   )r   ranger/   
unifystate)r&   r@   changesr?   state_ir   state_jrA   r   r   r   rm     s   zParserGenerator.simplify_dfa)rp   rp   c                 C   s   |   \}}| jdkr||fS t }t }|| || | jdkr=|   |   \}}|| || | jdks$||fS )N|)	parse_altrY   rp   rx   r!   )r&   rn   ro   aazzr   r   r   rk     s   






zParserGenerator.parse_rhsc                 C   sf   |   \}}| jdv s| jtjtjfv r/|   \}}|| |}| jdv s| jtjtjfv s||fS )N)([)
parse_itemrY   rf   r   rV   STRINGrx   )r&   rn   br<   dr   r   r   r   ,  s   
zParserGenerator.parse_altc                 C   s   | j dkr|   |  \}}| tjd || ||fS |  \}}| j }|dvr0||fS |   || |dkrA||fS ||fS )Nr   ])+*r   )rY   r!   rk   ri   r   rj   rx   
parse_atom)r&   rn   ro   rY   r   r   r   r   5  s   


zParserGenerator.parse_itemc                 C   s   | j dkr|   |  \}}| tjd ||fS | jtjtjfv r8t	 }t	 }|
|| j  |   ||fS | d| j| j  t)Nr   )z+expected (...) or NAME or STRING, got %s/%s)rY   r!   rk   ri   r   rj   rf   rV   r   rp   rx   raise_errorAssertionError)r&   rn   ro   r   r   r   r   I  s   

zParserGenerator.parse_atomrf   rY   c                 C   sD   | j |ks|d ur| j|kr| d||| j | j | j}|   |S )Nzexpected %s/%s, got %s/%s)rf   rY   r   r!   )r&   rf   rY   r   r   r   ri   \  s   zParserGenerator.expectc                 C   sX   t | j}|d tjtjfv rt | j}|d tjtjfv s|\| _| _| _| _| _	d S )Nr   )
rC   r   r   COMMENTNLrf   rY   beginendline)r&   tupr   r   r   r!   e  s
   

zParserGenerator.gettokenmsgargsc              
   G   s`   |rz|| }W n t y   d|gttt| }Y nw t|| j| jd | jd | jf)N r   rF   )		Exceptionjoinr*   mapstrSyntaxErrorr   r   r   )r&   r   r   r   r   r   r   l  s   "zParserGenerator.raise_errorrZ   r   N)$r   r   r   Path__annotations__r   r   r   r   r   r   rP   r(   r   rD   r:   r6   r%   r[   r
   r   r"   rl   r   r	   r   rm   rk   r   r   r   r   ri   r!   r   r   r   r   r   r   r      s.   
  

3" '	
	r   c                   @   sL   e Zd ZU eeee d f  ed< d
ddZddd dee ddfdd	Z	dS )rp   r3   r   Nc                 C   s
   g | _ d S rZ   )r3   )r&   r   r   r   r(   x  s   
zNFAState.__init__rC   rB   c                 C   s8   |d u st |tsJ t |tsJ | j||f d S rZ   )rO   r   rp   r3   r5   r&   rC   rB   r   r   r   rx   {  s   zNFAState.addarcr   rZ   )
r   r   r   r   r
   r   r   r   r(   rx   r   r   r   r   rp   u  s   
 
 rp   c                   @   s   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dZ	d	d d
eddfddZ
dddZdedefddZdZeed< dS )rd   rv   r8   r3   finalr   Nc                 C   sL   t |tsJ t tt|tsJ t |tsJ || _||v | _i | _d S rZ   )rO   dictrC   iterrp   rv   r8   r3   )r&   rv   r   r   r   r   r(     s   

zDFAState.__init__rC   rB   c                 C   s8   t |tsJ || jvsJ t |tsJ || j|< d S rZ   )rO   r   r3   rd   r   r   r   r   rx     s   zDFAState.addarcoldnewc                 C   s*   | j  D ]\}}||u r|| j |< qd S rZ   )r3   r4   )r&   r   r   rB   rC   r   r   r   r     s
   
zDFAState.unifystateotherc                 C   sd   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 q dS )NFT)rO   rd   r8   r/   r3   r4   get)r&   r   rB   rC   r   r   r   __eq__  s   zDFAState.__eq____hash__)r   rd   r   rd   r   N)r   r   r   r   rp   r   r   boolr   r(   rx   r   r   r   r   r   r   r   rd     s   
 
rd   Grammar.txtr   r   c                 C   s   t | }| S rZ   )r   rD   )r   pr   r   r   generate_grammar  s   r   )r   )ostypingr   r   r   r   r   r   r   r	   r
   r   blib2to3.pgen2r   r   r   blib2to3.pgen2.tokenizer   r   r   Grammarr   r   rp   rd   r   r   r   r   r   <module>   s   0  [)