Edit File: btm_matcher.cpython-38.opt-2.pyc
U ����@��d�����������������������@���sh���d�Z�ddlZddlZddlmZ�ddlmZ�ddlmZ�G�dd��de �Z G�d d ��d e �Zi�add��Z dS�) z+George Boutsioukis <gboutsioukis@gmail.com>�����N)�defaultdict����)�pytree)�reduce_treec�������������������@���s���e�Zd�Ze���Zdd��ZdS�)�BMNodec�����������������C���s"���i�|�_�g�|�_ttj�|�_d|�_d�S�)N��)�transition_table�fixers�nextr����count�id�content��self��r����8/opt/alt/python38/lib64/python3.8/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�|�_t�d�|�_d�S�)NZRefactoringTool) �set�matchr����rootZnodesr ����loggingZ getLoggerZloggerr���r���r���r���r������s ���� zBottomMatcher.__init__c�����������������C���sH���|�j��|��t|j�}|���}|�j||�jd�}|D�]}|j��|��q2d�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�r`g�}|d�D�]6}|�j||d�}|D�]}|�|��|dd���|���q:q$|S�|d�|jkr�t��}||j|d�<�n|j|d��}|dd���r�|�j|dd���|d�}n|g}|S�d�S�)Nr���r���r���)� isinstance�tupler����extendr���r���)r����patternr���r!���ZalternativeZ end_nodes�endZ next_noder���r���r���r���1���s"����zBottomMatcher.addc����������� ������C���s����|�j�}tt�}|D�]�}|}|rd|_|jD�]$}t|tj�r*|jdkr*d|_�qPq*|j dkrb|j}n|j }||j kr�|j |�}|jD�]}||��|��q�nH|�j�}|j d�k r�|j jr�q||j kr�|j |�}|jD�]}||��|��q�|j }qq|S�)NT�;Fr���)r���r����listZwas_checkedZchildrenr#���r���ZLeaf�value�typer���r ���r����parent) r���ZleavesZcurrent_ac_nodeZresultsZleafZcurrent_ast_nodeZchildZ node_tokenr ���r���r���r����runS���s8���� � zBottomMatcher.runc��������������������s*���t�d����fdd�����|�j��t�d��d�S�)Nz digraph g{c��������������������sZ���|�j����D�]J}|�j�|�}td|�j|jt|�t|j�f���|dkrLt|j����|��q d�S�)Nz%d -> %d [label=%s] //%sr���)r����keys�printr���� type_repr�strr ���r ���)ZnodeZsubnode_keyZsubnode�� print_noder���r���r3�������s���� � z*BottomMatcher.print_ac.<locals>.print_node�})r/���r���r���r���r2���r����print_ac����s���� zBottomMatcher.print_acN)r���r���r���r���r"���r���r-���r5���r���r���r���r���r������s ���"8r���c�����������������C���sD���t�s8ddlm}�|j���D�]\}}t|�tkr|t�|<�qt��|�|��S�)Nr���)�python_symbols)�_type_reprsZpygramr6����__dict__�itemsr+����int� setdefault)Ztype_numr6����name�valr���r���r���r0�������s����� r0���)� __author__r���r����collectionsr���r���r���Z btm_utilsr����objectr���r���r7���r0���r���r���r���r����<module>���s��� �