OwlCyberSecurity - MANAGER
Edit File: btm_matcher.cpython-36.opt-2.pyc
3 � \�������������������@���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�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�|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����alternativeZ end_nodes�endZ next_noder���r���r���r���1���s"���� "zBottomMatcher.addc������� ������C���s0��|�j�}tt�}�x|D��]}|}�x|�r&d|_x,|jD�]"}t|tj�r8|jdkr8d|_P�q8W�|j dkrp|j}n|j }||j kr�|j |�}x�|jD�]"}||kr�g�||<�||�j|��q�W�nd|�j�}|j d�k r�|j jr�P�||j k�r|j |�}x2|jD�](}||j��k�rg�||<�||�j|��q�W�|j }q$W�qW�|S�)NT�;Fr���)r���r����listZwas_checkedZchildrenr!���r���ZLeaf�value�typer���r ���r����parent�keys) r���ZleavesZcurrent_ac_nodeZresultsZleafZcurrent_ast_nodeZchildZ node_tokenr���r���r���r����runS���s>���� zBottomMatcher.runc����������������s*���t�d����fdd�����|�j��t�d��d�S�)Nz digraph g{c����������������s^���xX|�j�j��D�]J}|�j�|�}td|�j|jt|�t|j�f���|dkrNt|j����|��qW�d�S�)Nz%d -> %d [label=%s] //%sr���)r���r,����printr���� type_repr�strr ���r ���)ZnodeZsubnode_keyZsubnode)� print_noder���r���r1�������s���� z*BottomMatcher.print_ac.<locals>.print_node�})r.���r���)r���r���)r1���r����print_ac����s���� zBottomMatcher.print_acN)r���r���r���r���r ���r���r-���r3���r���r���r���r���r������s ���"=r���c�������������C���sH���t�s<ddlm}�x*|jj��D�]\}}t|�tkr|t�|<�qW�t�j|�|��S�)Nr���)�python_symbols)�_type_reprsZpygramr4����__dict__�itemsr*����int� setdefault)Ztype_numr4����name�valr���r���r���r/�������s�����r/���)� __author__r���r����collectionsr���r���r���Z btm_utilsr����objectr���r���r5���r/���r���r���r���r����<module>���s��� �