3
\� � @ sh d Z ddlZddlZddlmZ ddlmZ ddlmZ G dd� de �Z
G d d
� d
e �Zi add� Z
dS )
z+George Boutsioukis � N)�defaultdict� )�pytree)�reduce_treec @ s e Zd Zej� Zdd� ZdS )�BMNodec C s" i | _ g | _ttj�| _d| _d S )N� )�transition_table�fixers�nextr �count�id�content)�self� r �+/usr/lib64/python3.6/lib2to3/btm_matcher.py�__init__ s zBMNode.__init__N)�__name__�
__module__�__qualname__� itertoolsr r r r r r r s r c @ s4 e Zd Zdd� Zdd� Zdd� Zdd� Zd d
� ZdS )�
BottomMatcherc C s0 t � | _t� | _| jg| _g | _tjd�| _d S )NZRefactoringTool) �set�matchr �rootZnodesr �loggingZ getLoggerZlogger)r r r r r s
zBottomMatcher.__init__c C sL | j j|� t|j�}|j� }| j|| jd�}x|D ]}|j j|� q4W d S )N)�start)r �appendr Zpattern_treeZget_linear_subpattern�addr )r �fixerZtreeZlinear�match_nodesZ
match_noder r r � add_fixer% s
zBottomMatcher.add_fixerc C s� |s
|gS t |d t�rhg }xF|d D ]:}| j||d�}x&|D ]}|j| j|dd � |�� q>W q&W