Server: appserver-7f0f8755-nginx-15961cad18524ec5a9db05f2a6a7e440
Current directory: /usr/lib/python2.7/lib2to3
Software: nginx/1.27.5
Shell Command
Create a new file
Upload file
File: btm_matcher.pyc
� ӫ[c @ s� d Z d Z d d l Z d d l Z d d l m Z d d l m Z d d l m Z d e f d � � YZ d e f d � � YZ i a d � Z d S( s� 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.s+ George Boutsioukis
i����N( t defaultdicti ( t pytree( t reduce_treet BMNodec B s# e Z d Z e j � Z d � Z RS( s? Class for a node of the Aho-Corasick automaton used in matchingc C s1 i | _ g | _ t t j � | _ d | _ d S( Nt ( t transition_tablet fixerst nextR t countt idt content( t self( ( s) /usr/lib/python2.7/lib2to3/btm_matcher.pyt __init__ s ( t __name__t __module__t __doc__t itertoolsR R ( ( ( s) /usr/lib/python2.7/lib2to3/btm_matcher.pyR s t BottomMatcherc B s; e Z d Z d � Z d � Z d � Z d � Z d � Z RS( sg The main matcher class. After instantiating the patterns should be added using the add_fixer methodc C sF t � | _ t � | _ | j g | _ g | _ t j d � | _ d S( Nt RefactoringTool( t sett matchR t roott nodesR t loggingt getLoggert logger( R ( ( s) /usr/lib/python2.7/lib2to3/btm_matcher.pyR s c C sh | j j | � t | j � } | j � } | j | d | j �} x | D] } | j j | � qJ Wd S( s� 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 reachedt startN( R t appendR t pattern_treet get_linear_subpatternt addR ( R t fixert treet lineart match_nodest match_node( ( s) /usr/lib/python2.7/lib2to3/btm_matcher.pyt add_fixer% s c C s� | s | g St | d t � r� g } xU | d D]I } | j | d | �} x+ | D]# } | j | j | d | � � qS Wq1 W| S| d | j k r� t � } | | j | d