관리-도구
편집 파일: btm_matcher.cpython-311.opt-1.pyc
� c��f� � � � d Z dZddlZddlZddlmZ ddlmZ ddlm Z G d� d e � � Z G d � de � � Zi a d� ZdS ) a� A bottom-up tree matching algorithm implementation meant to speed up 2to3's matching process. After the tree patterns are reduced to their rarest linear path, a linear Aho-Corasick automaton is created. The linear automaton traverses the linear paths from the leaves to the root of the AST and returns a set of nodes for further matching. This reduces significantly the number of candidate nodes.z+George Boutsioukis <gboutsioukis@gmail.com>� N)�defaultdict� )�pytree)�reduce_treec �6 � e Zd ZdZ ej � � Zd� ZdS )�BMNodez?Class for a node of the Aho-Corasick automaton used in matchingc �l � i | _ g | _ t t j � � | _ d| _ d S )N� )�transition_table�fixers�nextr �count�id�content��selfs �:/opt/alt/python311/lib64/python3.11/lib2to3/btm_matcher.py�__init__zBMNode.__init__ s- � � "�������v�|�$�$�������� N)�__name__� __module__�__qualname__�__doc__� itertoolsr r � r r r r s8 � � � � � �I�I��I�O���E�� � � � r r c �0 � e Zd ZdZd� Zd� Zd� Zd� Zd� ZdS )� BottomMatcherzgThe main matcher class. After instantiating the patterns should be added using the add_fixer methodc � � t � � | _ t � � | _ | j g| _ g | _ t j d� � | _ d S )N�RefactoringTool) �set�matchr �root�nodesr �logging� getLogger�loggerr s r r zBottomMatcher.__init__ sA � ��U�U�� ��H�H�� ��i�[�� �����'�(9�:�:����r c � � | j � |� � t |j � � }|� � � }| � || j �� � }|D ]}|j � |� � �dS )z�Reduces a fixer's pattern tree to a linear path and adds it to the matcher(a common Aho-Corasick automaton). The fixer is appended on the matching states and called when they are reached��startN)r �appendr �pattern_tree�get_linear_subpattern�addr"