o
     JAfFm                     @   s   	 d Z ddlZddlmZ dZi add ZG dd deZG d	d
 d
eZ	G dd deZ
dd ZG dd deZG dd deZG dd deZG dd deZG dd deZdd ZdS )z#Guido van Rossum <guido@python.org>    N)StringIOic                 C   sD   t sddlm} |j D ]\}}t|tkr|t |< qt | | S )N   )python_symbols)_type_reprsZpygramr   __dict__itemstypeint
setdefault)Ztype_numr   nameval r   %/usr/lib/python3.10/lib2to3/pytree.py	type_repr   s   r   c                   @   s   e Zd Z	 dZdZdZdZdZdd Zdd Z	dZ
dd	 Zd
d Zdd Zdd Zdd Zdd Zdd Zdd Zedd Zedd Zdd Zdd Zd d! Zejd"k r\d#d$ ZdS dS )%BaseNr   Fc                 O      	 t | S Nobject__new__clsargskwdsr   r   r   r   1      
zBase.__new__c                 C   s   	 | j |j ur	tS | |S r   )	__class__NotImplemented_eqselfotherr   r   r   __eq__6   s   
zBase.__eq__c                 C      	 t r   NotImplementedErrorr   r   r   r   r   B   s   zBase._eqc                 C   r"   r   r#   r   r   r   r   cloneM      z
Base.clonec                 C   r"   r   r#   r%   r   r   r   
post_orderU   r'   zBase.post_orderc                 C   r"   r   r#   r%   r   r   r   	pre_order]   r'   zBase.pre_orderc                 C   s   	 t |ts	|g}g }d}| jjD ]}|| u r#|d ur || d}q|| q| j  || j_|D ]}| j|_q4d | _d S NFT)
isinstancelistparentchildrenextendappendchanged)r   newZ
l_childrenfoundchxr   r   r   replacee   s    




zBase.replacec                 C   s4   	 | }t |ts|jsd S |jd }t |tr|jS Nr   )r+   Leafr.   linenor   noder   r   r   
get_lineno|   s   


zBase.get_linenoc                 C   s   | j r| j   d| _d S NT)r-   r1   was_changedr%   r   r   r   r1      s   

zBase.changedc                 C   sP   	 | j r$t| j jD ]\}}|| u r#| j   | j j|= d | _ |  S q
d S d S r   )r-   	enumerater.   r1   )r   ir;   r   r   r   remove   s   

zBase.removec              	   C   s`   	 | j d u rd S t| j jD ]\}}|| u r-z| j j|d  W   S  ty,   Y  d S w qd S )Nr   )r-   r?   r.   
IndexErrorr   r@   childr   r   r   next_sibling   s   
zBase.next_siblingc                 C   sT   	 | j d u rd S t| j jD ]\}}|| u r'|dkr d S | j j|d    S qd S Nr   r   )r-   r?   r.   rC   r   r   r   prev_sibling   s   
zBase.prev_siblingc                 c   s     | j D ]	}| E d H  qd S r   )r.   leavesr   rD   r   r   r   rH      s   
zBase.leavesc                 C   s   | j d u rdS d| j   S rF   )r-   depthr%   r   r   r   rJ      s   
z
Base.depthc                 C   s   	 | j }|d u r
dS |jS N )rE   prefix)r   Znext_sibr   r   r   
get_suffix   s
   zBase.get_suffix   r   c                 C   s   t | dS )Nascii)strencoder%   r   r   r   __str__   s   zBase.__str__)__name__
__module____qualname__r   r-   r.   r>   Zwas_checkedr   r!   __hash__r   r&   r(   r)   r6   r<   r1   rA   propertyrE   rG   rH   rJ   rN   sysversion_inforT   r   r   r   r   r      s8    

	



r   c                   @   s   e Zd Z	 			dddZdd Zdd ZejdkreZd	d
 Z	dd Z
dd Zdd Zedd Zejdd Zdd Zdd Zdd ZdS )NodeNc                 C   sR   	 || _ t|| _| jD ]}| |_q|d ur|| _|r$|d d  | _d S d | _d S r   )r   r,   r.   r-   rM   fixers_applied)r   r   r.   contextrM   r]   r4   r   r   r   __init__   s   	


zNode.__init__c                 C   s   	 d| j jt| j| jf S )Nz
%s(%s, %r))r   rU   r   r   r.   r%   r   r   r   __repr__   s
   zNode.__repr__c                 C   s   	 d tt| jS rK   )joinmaprR   r.   r%   r   r   r   __unicode__   s   zNode.__unicode__rO   c                 C      	 | j | jf|j |jfkS r   )r   r.   r   r   r   r   r         zNode._eqc                 C   s    	 t | jdd | jD | jdS )Nc                 S   s   g | ]}|  qS r   )r&   ).0r4   r   r   r   
<listcomp>  s    zNode.clone.<locals>.<listcomp>r]   )r\   r   r.   r]   r%   r   r   r   r&     s   z
Node.clonec                 c   s(    	 | j D ]	}| E d H  q| V  d S r   )r.   r(   rI   r   r   r   r(     s
   

zNode.post_orderc                 c   s(    	 | V  | j D ]	}| E d H  qd S r   )r.   r)   rI   r   r   r   r)     s   
zNode.pre_orderc                 C   s   	 | j sdS | j d jS )NrL   r   r.   rM   r%   r   r   r   rM     s   zNode.prefixc                 C   s   | j r|| j d _d S d S r7   ri   r   rM   r   r   r   rM     s   c                 C   s*   	 | |_ d | j| _ || j|< |   d S r   )r-   r.   r1   rC   r   r   r   	set_child   s
   
zNode.set_childc                 C   s"   	 | |_ | j|| |   d S r   )r-   r.   insertr1   rC   r   r   r   insert_child*  s   zNode.insert_childc                 C   s    	 | |_ | j| |   d S r   )r-   r.   r0   r1   rI   r   r   r   append_child3  s   zNode.append_childNNN)rU   rV   rW   r_   r`   rc   rZ   r[   rT   r   r&   r(   r)   rY   rM   setterrk   rm   rn   r   r   r   r   r\      s*    




	r\   c                   @   s   e Zd Z	 dZdZdZddg fddZdd Zdd	 Ze	j
d
kr"eZdd Zdd Zdd Zdd Zdd Zedd Zejdd ZdS )r8   rL   r   Nc                 C   sH   	 |d ur|\| _ \| _| _|| _|| _|d ur|| _ |d d  | _d S r   )_prefixr9   columnr   valuer]   )r   r   rs   r^   rM   r]   r   r   r   r_   F  s   zLeaf.__init__c                 C   s   	 d| j j| j| jf S )Nz
%s(%r, %r))r   rU   r   rs   r%   r   r   r   r`   Y  s
   zLeaf.__repr__c                 C   s   	 | j t| j S r   )rM   rR   rs   r%   r   r   r   rc   _  s   zLeaf.__unicode__rO   c                 C   rd   r   )r   rs   r   r   r   r   r   j  re   zLeaf._eqc                 C   s&   	 t | j| j| j| j| jff| jdS )Nrh   )r8   r   rs   rM   r9   rr   r]   r%   r   r   r   r&   n  s
   
z
Leaf.clonec                 c   s    | V  d S r   r   r%   r   r   r   rH   t  s   
zLeaf.leavesc                 c       	 | V  d S r   r   r%   r   r   r   r(   w     
zLeaf.post_orderc                 c   rt   r   r   r%   r   r   r   r)   {  ru   zLeaf.pre_orderc                 C   s   	 | j S r   )rq   r%   r   r   r   rM     s   zLeaf.prefixc                 C   s   |    || _d S r   )r1   rq   rj   r   r   r   rM     s   
)rU   rV   rW   rq   r9   rr   r_   r`   rc   rZ   r[   rT   r   r&   rH   r(   r)   rY   rM   rp   r   r   r   r   r8   =  s,    


r8   c                 C   sL   	 |\}}}}|s|| j v rt|dkr|d S t|||dS t|||dS )Nr   r   )r^   )Znumber2symbollenr\   r8   )ZgrZraw_noder   rs   r^   r.   r   r   r   convert  s   rw   c                   @   sN   e Zd Z	 dZdZdZdd Zdd Zdd Zddd	Z	dd
dZ
dd ZdS )BasePatternNc                 O   r   r   r   r   r   r   r   r     r   zBasePattern.__new__c                 C   sV   t | j| j| jg}|r|d d u r|d= |r|d d u sd| jjdtt|f S )Nz%s(%s)z, )	r   r   contentr   r   rU   ra   rb   repr)r   r   r   r   r   r`     s
   zBasePattern.__repr__c                 C   s   	 | S r   r   r%   r   r   r   optimize  r'   zBasePattern.optimizec                 C   sp   	 | j d ur|j | j krdS | jd ur*d }|d uri }| ||s#dS |r*|| |d ur6| jr6||| j< dS r*   )r   rz   	_submatchupdater   )r   r;   resultsrr   r   r   match  s   



zBasePattern.matchc                 C   s"   	 t |dkr	dS | |d |S )Nr   Fr   )rv   r   )r   nodesr   r   r   r   	match_seq  s   zBasePattern.match_seqc                 c   s2    	 i }|r|  |d |rd|fV  d S d S d S rF   )r   )r   r   r   r   r   r   generate_matches  s   zBasePattern.generate_matchesr   )rU   rV   rW   r   rz   r   r   r`   r|   r   r   r   r   r   r   r   rx     s    


rx   c                   @   s*   e Zd ZdddZd	ddZd	ddZdS )
LeafPatternNc                 C   s(   	 |d ur|d ur	|| _ || _|| _d S r   )r   rz   r   )r   r   rz   r   r   r   r   r_     s   
zLeafPattern.__init__c                 C   s   	 t |tsdS t| ||S NF)r+   r8   rx   r   r   r;   r   r   r   r   r   
  s   
zLeafPattern.matchc                 C   s   	 | j |jkS r   )rz   rs   r   r   r   r   r}     s   zLeafPattern._submatchro   r   )rU   rV   rW   r_   r   r}   r   r   r   r   r     s    

r   c                   @   s$   e Zd ZdZdddZdddZdS )	NodePatternFNc                 C   sR   	 |d ur|d urt |}t|D ]\}}t|trd| _q|| _|| _|| _d S r=   )r,   r?   r+   WildcardPattern	wildcardsr   rz   r   )r   r   rz   r   r@   itemr   r   r   r_   $  s   

zNodePattern.__init__c                 C   s   	 | j r%t| j|jD ]\}}|t|jkr"|d ur||  dS qdS t| jt|jkr1dS t| j|jD ]\}}|||sE dS q8dS NTF)r   r   rz   r.   rv   r~   zipr   )r   r;   r   cr   
subpatternrD   r   r   r   r}   A  s    
zNodePattern._submatchro   r   )rU   rV   rW   r   r_   r}   r   r   r   r   r      s    
r   c                   @   s\   e Zd Z	 ddedfddZdd ZdddZdd	d
Zdd Zdd Z	dd Z
dd ZdS )r   Nr   c                 C   s>   	 |d urt tt |}|D ]}q|| _|| _|| _|| _d S r   )tuplerb   rz   minmaxr   )r   rz   r   r   r   altr   r   r   r_   k  s   

zWildcardPattern.__init__c                 C   s   	 d }| j d urt| j dkrt| j d dkr| j d d }| jdkrB| jdkrB| j d u r4t| jdS |d urB| j|jkrB| S | jdkrht|trh|jdkrh| j|jkrht|j | j|j | j|j |jS | S )Nr   r   )r   )	rz   rv   r   r   r   r   r|   r+   r   )r   r   r   r   r   r|     s$   
 


zWildcardPattern.optimizec                 C   s   	 |  |g|S r   )r   r   r   r   r   r     s   zWildcardPattern.matchc                 C   sR   	 |  |D ] \}}|t|kr&|d ur#|| | jr#t||| j<  dS qdS r   )r   rv   r~   r   r,   )r   r   r   r   r   r   r   r   r     s   
zWildcardPattern.match_seqc              	   c   s@   	 | j d u r-t| jdtt|| j D ]}i }| jr%|d | || j< ||fV  qd S | jdkr:| |V  d S ttdrFtj	}t
 t_	zPz| |dD ]\}}| jr^|d | || j< ||fV  qNW n$ ty   | |D ]\}}| jr|d | || j< ||fV  qqY nw W ttdr|t_	d S d S ttdr|t_	w )Nr   Z	bare_namegetrefcountr   )rz   ranger   rv   r   r   _bare_name_matcheshasattrrZ   stderrr   _recursive_matchesRuntimeError_iterative_matches)r   r   countr   Zsave_stderrr   r   r   r     s@   
 



z WildcardPattern.generate_matchesc                 c   s    	 t |}d| jkrdi fV  g }| jD ]}t||D ]\}}||fV  |||f qq|r|g }|D ]A\}}	||k ru|| jkru| jD ]0}t|||d  D ]$\}
}|
dkrsi }||	 || ||
 |fV  |||
 |f qOqDq4|}|s0d S d S r7   )rv   r   rz   r   r0   r   r~   )r   r   Znodelenr   r   r   r   Znew_resultsc0r0c1r1r   r   r   r     s8   






z"WildcardPattern._iterative_matchesc                 C   s|   	 d}i }d}t |}|s1||k r1d}| jD ]}|d || |r*|d7 }d} nq|s1||k s|d | || j< ||fS )Nr   FTr   )rv   rz   r   r   )r   r   r   r   doner   Zleafr   r   r   r     s    
z"WildcardPattern._bare_name_matchesc           	      c   s    	 || j krdi fV  || jk rE| jD ]2}t||D ](\}}| ||d  |d D ]\}}i }|| || || |fV  q+qqd S d S rF   )r   r   rz   r   r   r~   )	r   r   r   r   r   r   r   r   r   r   r   r   r   
  s    



 

z"WildcardPattern._recursive_matchesr   )rU   rV   rW   HUGEr_   r|   r   r   r   r   r   r   r   r   r   r   r   ]  s    #

-r   c                   @   s.   e Zd Zd
ddZdd Zdd Zdd	 ZdS )NegatedPatternNc                 C   s   	 |d ur|| _ d S r   )rz   )r   rz   r   r   r   r_     s   
zNegatedPattern.__init__c                 C   s   dS r   r   r:   r   r   r   r   (  s   zNegatedPattern.matchc                 C   s   t |dkS r7   )rv   )r   r   r   r   r   r   ,  s   zNegatedPattern.match_seqc                 c   sR    | j d u rt|dkrdi fV  d S d S | j |D ]\}} d S di fV  d S r7   )rz   rv   r   )r   r   r   r   r   r   r   r   0  s   
zNegatedPattern.generate_matchesr   )rU   rV   rW   r_   r   r   r   r   r   r   r   r     s
    
r   c           	      c   s    	 | sdi fV  d S | d | dd  }}| |D ]-\}}|s'||fV  qt |||d  D ]\}}i }|| || || |fV  q0qd S rF   )r   r~   )	patternsr   prestr   r   r   r   r   r   r   r   r   <  s   

r   )
__author__rZ   ior   r   r   r   r   r   r\   r8   rw   rx   r   r   r   r   r   r   r   r   r   <module>   s&   	
 1nNV,= =#