Your IP : 18.117.105.184


Current Path : /opt/alt/python35/lib64/python3.5/lib2to3/__pycache__/
Upload File :
Current File : //opt/alt/python35/lib64/python3.5/lib2to3/__pycache__/btm_matcher.cpython-35.opt-2.pyc



���]��@s�dZddlZddlZddlmZddlmZddlmZGdd�de	�Z
Gd	d
�d
e	�Ziadd�Z
dS)
z+George Boutsioukis <gboutsioukis@gmail.com>�N)�defaultdict�)�pytree)�reduce_treec@s(eZdZej�Zdd�ZdS)�BMNodecCs1i|_g|_ttj�|_d|_dS)N�)�transition_table�fixers�nextr�count�id�content)�self�r�0/opt/alt/python35/lib64/python3.5/btm_matcher.py�__init__s		zBMNode.__init__N)�__name__�
__module__�__qualname__�	itertoolsrrrrrrrsrc@sLeZdZdd�Zdd�Zdd�Zdd�Zd	d
�ZdS)�
BottomMatchercCsFt�|_t�|_|jg|_g|_tjd�|_dS)NZRefactoringTool)	�set�matchr�rootZnodesr	�logging�	getLogger�logger)rrrrrs
	zBottomMatcher.__init__cCsh|jj|�t|j�}|j�}|j|d|j�}x|D]}|jj|�qJWdS)N�start)r	�appendrZpattern_treeZget_linear_subpattern�addr)r�fixerZtreeZlinear�match_nodesZ
match_noderrr�	add_fixer%s
zBottomMatcher.add_fixercCs|s
|gSt|dt�r�g}x[|dD]O}|j|d|�}x1|D])}|j|j|dd�|��qSWq1W|S|d|jkr�t�}||j|d<n|j|d}|dd�r�|j|dd�d|�}n	|g}|SdS)Nrrr)�
isinstance�tupler�extendrr)r�patternrr!ZalternativeZ	end_nodes�endZ	next_noderrrr1s"
+	"	zBottomMatcher.addc	Cs�|j}tt�}xr|D]j}|}x[|r�d|_x<|jD]1}t|tj�rD|jdkrDd|_PqDW|j	dkr�|j}n	|j	}||j
kr�|j
|}x�|jD]-}||kr�g||<||j|�q�Wn�|j}|j
dk	r|j
jrP||j
kry|j
|}x>|jD]3}||j�krdg||<||j|�qBW|j
}q+WqW|S)NT�;Fr)rr�listZwas_checkedZchildrenr#rZLeaf�value�typerr	r�parent�keys)	rZleavesZcurrent_ac_node�resultsZleafZcurrent_ast_nodeZchildZ
node_tokenr rrr�runSs>	
		!		

	

zBottomMatcher.runcs7td��fdd���|j�td�dS)Nz
digraph g{cs}xv|jj�D]e}|j|}td|j|jt|�t|j�f�|dkrkt|j��|�qWdS)Nz%d -> %d [label=%s] //%sr)rr-�printr�	type_repr�strr	r
)ZnodeZsubnode_keyZsubnode)�
print_noderrr3�s
)
z*BottomMatcher.print_ac.<locals>.print_node�})r0r)rr)r3r�print_ac�s

zBottomMatcher.print_acN)rrrrr"rr/r5rrrrrs
"=rcCsbtsRddlm}x9|jj�D](\}}t|�tkr&|t|<q&Wtj||�S)Nr)�python_symbols)�_type_reprsZpygramr6�__dict__�itemsr+�int�
setdefault)Ztype_numr6�name�valrrrr1�sr1)�
__author__rr�collectionsrrrZ	btm_utilsr�objectrrr7r1rrrr�<module>s	�

?>