B
    2*\p                 @   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   sH   t s<ddlm} x*|j D ]\}}t|tkr|t |< qW t | | S )N   )python_symbols)_type_reprsZpygramr   __dict__itemstypeint
setdefault)Ztype_numr   nameval r   9C:\ALexclude\prg\programme\Python37\Lib\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 rd#d$ ZdS )%BaseNr   Fc             O   s
   t | S )N)object__new__)clsargskwdsr   r   r   r   1   s    zBase.__new__c             C   s   | j |j k	rtS | |S )N)	__class__NotImplemented_eq)selfotherr   r   r   __eq__6   s    zBase.__eq__c             C   s   t d S )N)NotImplementedError)r   r   r   r   r   r   B   s    	zBase._eqc             C   s   t d S )N)r   )r   r   r   r   cloneM   s    z
Base.clonec             C   s   t d S )N)r   )r   r   r   r   
post_orderU   s    zBase.post_orderc             C   s   t d S )N)r   )r   r   r   r   	pre_order]   s    zBase.pre_orderc             C   s   t |ts|g}g }d}x:| jjD ].}|| krF|d k	r@|| d}q"|| q"W | j  || j_x|D ]}| j|_qlW d | _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   s.   | }x"t |ts&|jsd S |jd }qW |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"   r&   was_changed)r   r   r   r   r&      s    
zBase.changedc             C   sJ   | j rFx>t| j jD ].\}}|| kr| j   | j j|= d | _ |S qW d S )N)r"   	enumerater#   r&   )r   ir.   r   r   r   remove   s    

zBase.removec          	   C   sZ   | j d krd S xFt| j jD ]6\}}|| kry| j j|d  S  tk
rP   d S X qW d S )Nr   )r"   r1   r#   
IndexError)r   r2   childr   r   r   next_sibling   s    
zBase.next_siblingc             C   sP   | j d krd S x<t| j jD ],\}}|| kr|dkr8d S | j j|d  S qW d S )Nr   r   )r"   r1   r#   )r   r2   r5   r   r   r   prev_sibling   s    
zBase.prev_siblingc             c   s"   x| j D ]}| E d H  qW d S )N)r#   leaves)r   r5   r   r   r   r8      s    zBase.leavesc             C   s   | j d krdS d| j   S )Nr   r   )r"   depth)r   r   r   r   r9      s    
z
Base.depthc             C   s   | j }|d krdS |jS )N )r6   prefix)r   Znext_sibr   r   r   
get_suffix   s    zBase.get_suffix)   r   c             C   s   t | dS )Nascii)strencode)r   r   r   r   __str__   s    zBase.__str__)__name__
__module____qualname__r   r"   r#   r0   Zwas_checkedr   r   __hash__r   r   r   r   r+   r/   r&   r3   propertyr6   r7   r8   r9   r<   sysversion_inforA   r   r   r   r   r      s.   
	

r   c               @   s   e Zd ZdddZdd Zdd Zejdkr0e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|| _x| jD ]
}| |_qW |d k	r4|| _|rH|d d  | _nd | _d S )N)r   r!   r#   r"   r;   fixers_applied)r   r   r#   contextr;   rJ   r)   r   r   r   __init__   s    

zNode.__init__c             C   s   d| j jt| j| jf S )Nz
%s(%s, %r))r   rB   r   r   r#   )r   r   r   r   __repr__   s    zNode.__repr__c             C   s   d tt| jS )Nr:   )joinmapr?   r#   )r   r   r   r   __unicode__   s    zNode.__unicode__)r=   r   c             C   s   | j | jf|j |jfkS )N)r   r#   )r   r   r   r   r   r      s    zNode._eqc             C   s   t | jdd | jD | jdS )Nc             S   s   g | ]}|  qS r   )r   ).0r)   r   r   r   
<listcomp>  s    zNode.clone.<locals>.<listcomp>)rJ   )rI   r   r#   rJ   )r   r   r   r   r     s    z
Node.clonec             c   s(   x| j D ]}| E d H  qW | V  d S )N)r#   r   )r   r5   r   r   r   r     s    zNode.post_orderc             c   s(   | V  x| j D ]}| E d H  qW d S )N)r#   r   )r   r5   r   r   r   r     s    zNode.pre_orderc             C   s   | j s
dS | j d jS )Nr:   r   )r#   r;   )r   r   r   r   r;     s    zNode.prefixc             C   s   | j r|| j d _d S )Nr   )r#   r;   )r   r;   r   r   r   r;     s    c             C   s(   | |_ d | j| _ || j|< |   d S )N)r"   r#   r&   )r   r2   r5   r   r   r   	set_child   s    
zNode.set_childc             C   s    | |_ | j|| |   d S )N)r"   r#   insertr&   )r   r2   r5   r   r   r   insert_child*  s    zNode.insert_childc             C   s   | |_ | j| |   d S )N)r"   r#   r%   r&   )r   r5   r   r   r   append_child3  s    zNode.append_child)NNN)rB   rC   rD   rL   rM   rP   rG   rH   rA   r   r   r   r   rF   r;   setterrS   rU   rV   r   r   r   r   rI      s      

	
	rI   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rBe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 )r,   r:   r   Nc             C   sF   |d k	r|\| _ \| _| _|| _|| _|d k	r4|| _ |d d  | _d S )N)_prefixr-   columnr   valuerJ   )r   r   rZ   rK   r;   rJ   r   r   r   rL   F  s    zLeaf.__init__c             C   s   d| j j| j| jf S )Nz
%s(%r, %r))r   rB   r   rZ   )r   r   r   r   rM   Y  s    zLeaf.__repr__c             C   s   | j t| j S )N)r;   r?   rZ   )r   r   r   r   rP   _  s    zLeaf.__unicode__)r=   r   c             C   s   | j | jf|j |jfkS )N)r   rZ   )r   r   r   r   r   r   j  s    zLeaf._eqc             C   s$   t | j| j| j| j| jff| jdS )N)rJ   )r,   r   rZ   r;   r-   rY   rJ   )r   r   r   r   r   n  s    
z
Leaf.clonec             c   s
   | V  d S )Nr   )r   r   r   r   r8   t  s    zLeaf.leavesc             c   s
   | V  d S )Nr   )r   r   r   r   r   w  s    zLeaf.post_orderc             c   s
   | V  d S )Nr   )r   r   r   r   r   {  s    zLeaf.pre_orderc             C   s   | j S )N)rX   )r   r   r   r   r;     s    zLeaf.prefixc             C   s   |    || _d S )N)r&   rX   )r   r;   r   r   r   r;     s    )rB   rC   rD   rX   r-   rY   rL   rM   rP   rG   rH   rA   r   r   r8   r   r   rF   r;   rW   r   r   r   r   r,   =  s"   
r,   c             C   sN   |\}}}}|s|| j kr<t|dkr.|d S t|||dS t|||dS d S )Nr   r   )rK   )Znumber2symbollenrI   r,   )ZgrZraw_noder   rZ   rK   r#   r   r   r   convert  s    r\   c               @   sL   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   s
   t | S )N)r   r   )r   r   r   r   r   r   r     s    zBasePattern.__new__c             C   sL   t | j| j| jg}x|r.|d d kr.|d= qW d| jjdtt|f S )Nz%s(%s)z, )	r   r   contentr   r   rB   rN   rO   repr)r   r   r   r   r   rM     s    
zBasePattern.__repr__c             C   s   | S )Nr   )r   r   r   r   optimize  s    zBasePattern.optimizec             C   sn   | j d k	r|j | j krdS | jd k	rRd }|d k	r4i }| ||sDdS |rR|| |d k	rj| jrj||| j< dS )NFT)r   r_   	_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   )r[   rf   )r   nodesrd   r   r   r   	match_seq  s    zBasePattern.match_seqc             c   s&   i }|r"|  |d |r"d|fV  d S )Nr   r   )rf   )r   rg   re   r   r   r   generate_matches  s    zBasePattern.generate_matches)N)N)rB   rC   rD   r   r_   r   r   rM   ra   rf   rh   ri   r   r   r   r   r]     s   


r]   c               @   s*   e Zd ZdddZd	ddZd
ddZdS )LeafPatternNc             C   s&   |d k	r|d k	r|| _ || _|| _d S )N)r   r_   r   )r   r   r_   r   r   r   r   rL     s
    zLeafPattern.__init__c             C   s   t |tsdS t| ||S )NF)r    r,   r]   rf   )r   r.   rd   r   r   r   rf   
  s    
zLeafPattern.matchc             C   s   | j |jkS )N)r_   rZ   )r   r.   rd   r   r   r   rb     s    zLeafPattern._submatch)NNN)N)N)rB   rC   rD   rL   rf   rb   r   r   r   r   rj     s   

rj   c               @   s$   e Zd ZdZdddZdddZdS )	NodePatternFNc             C   sT   |d k	r|d k	r>t |}x$t|D ]\}}t|tr"d| _q"W || _|| _|| _d S )NT)r!   r1   r    WildcardPattern	wildcardsr   r_   r   )r   r   r_   r   r2   itemr   r   r   rL   $  s    

zNodePattern.__init__c             C   s   | j rJx>t| j|jD ],\}}|t|jkr|d k	r>|| dS qW dS t| jt|jkrbdS x*t| j|jD ]\}}|||srdS qrW dS )NTF)rm   ri   r_   r#   r[   rc   ziprf   )r   r.   rd   cre   
subpatternr5   r   r   r   rb   A  s    
zNodePattern._submatch)NNN)N)rB   rC   rD   rm   rL   rb   r   r   r   r   rk      s   
rk   c               @   sZ   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 )rl   Nr   c             C   s@   |d k	r$t tt |}x|D ]}qW || _|| _|| _|| _d S )N)tuplerO   r_   minmaxr   )r   r_   rs   rt   r   altr   r   r   rL   k  s    
zWildcardPattern.__init__c             C   s   d }| j d k	r<t| j dkr<t| j d dkr<| j d d }| jdkr| jdkr| j d krft| jdS |d k	r| j|jkr| S | jdkrt|tr|jdkr| j|jkrt|j | j|j | j|j |jS | S )Nr   r   )r   )	r_   r[   rs   rt   rk   r   ra   r    rl   )r   rq   r   r   r   ra     s     
 


zWildcardPattern.optimizec             C   s   |  |g|S )N)rh   )r   r.   rd   r   r   r   rf     s    zWildcardPattern.matchc             C   sR   xL|  |D ]>\}}|t|kr|d k	rF|| | jrFt||| j< dS qW dS )NTF)ri   r[   rc   r   r!   )r   rg   rd   rp   re   r   r   r   rh     s    
zWildcardPattern.match_seqc          	   c   s:  | j d krXxJt| jdtt|| j D ]*}i }| jrH|d | || j< ||fV  q(W n| jdkrp| |V  nttdrtj	}t
 t_	zy@x:| |dD ]*\}}| jr|d | || j< ||fV  qW W nR tk
r   x:| |D ],\}}| jr
|d | || j< ||fV  qW Y nX W d ttdr4|t_	X d S )Nr   Z	bare_namegetrefcountr   )r_   rangers   r[   rt   r   _bare_name_matcheshasattrrG   stderrr   _recursive_matchesRuntimeError_iterative_matches)r   rg   countre   Zsave_stderrr   r   r   ri     s.    
"

z WildcardPattern.generate_matchesc             c   s  t |}d| jkrdi fV  g }x>| jD ]4}x.t||D ] \}}||fV  |||f q8W q(W x|rg }x|D ]\}}	||k rr|| jkrrxn| jD ]d}x^t|||d  D ]H\}
}|
dkri }||	 || ||
 |fV  |||
 |f qW qW qrW |}qbW d S )Nr   )r[   rs   r_   ri   r%   rt   rc   )r   rg   Znodelenrd   ru   rp   re   Znew_resultsc0r0c1r1r   r   r   r}     s*    




z"WildcardPattern._iterative_matchesc             C   sv   d}i }d}t |}xF|sZ||k rZd}x0| jD ]&}|d || |r.|d7 }d}P q.W qW |d | || j< ||fS )Nr   FTr   )r[   r_   rf   r   )r   rg   r~   re   Zdonert   Zleafr   r   r   rx     s    
z"WildcardPattern._bare_name_matchesc       	      c   s   || j krdi fV  || jk rxr| jD ]h}xbt||D ]T\}}xJ| ||d  |d D ].\}}i }|| || || |fV  qXW q6W q&W d S )Nr   r   )rs   rt   r_   ri   r{   rc   )	r   rg   r~   ru   r   r   r   r   re   r   r   r   r{   
  s    


"

z"WildcardPattern._recursive_matches)N)N)rB   rC   rD   HUGErL   ra   rf   rh   ri   r}   rx   r{   r   r   r   r   rl   ]  s   #

-rl   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 k	r|| _ d S )N)r_   )r   r_   r   r   r   rL     s    	zNegatedPattern.__init__c             C   s   dS )NFr   )r   r.   r   r   r   rf   (  s    zNegatedPattern.matchc             C   s   t |dkS )Nr   )r[   )r   rg   r   r   r   rh   ,  s    zNegatedPattern.match_seqc             c   sL   | j d kr"t|dkrHdi fV  n&x| j |D ]
\}}d S W di fV  d S )Nr   )r_   r[   ri   )r   rg   rp   re   r   r   r   ri   0  s    
zNegatedPattern.generate_matches)N)rB   rC   rD   rL   rf   rh   ri   r   r   r   r   r     s   
r   c       	      c   s   | sdi fV  n| d | dd   }}xl| |D ]^\}}|sJ||fV  q2xDt |||d  D ].\}}i }|| || || |fV  q^W q2W d S )Nr   r   )ri   rc   )	Zpatternsrg   prestr   r   r   r   re   r   r   r   ri   <  s    

ri   )
__author__rG   ior   r   r   r   r   r   rI   r,   r\   r]   rj   rk   rl   r   ri   r   r   r   r   <module>   s"   
 1nNV,= =#