File "btm_utils.cpython-34.pyc"

Full Path: /home/attunedd/public_html/byp/izo/con7ext_sym404/rintoar.txt/opt/alt/python34/lib64/python3.4/lib2to3/__pycache__/btm_utils.cpython-34.pyc
File size: 6.68 KB
MIME-type: text/x-bytecode.python
Charset: 8 bit


i f&@sdZddlmZddlmZmZddlmZmZeZ	eZ
ejZeZ
dZdZdZGdddeZd	d
dZdd
ZddZd	S)z0Utility functions used by the btm_matcher module)pytree)grammartoken)pattern_symbolspython_symbolsc@sXeZdZdZddddZddZddZd	d
ZddZdS)
MinNodezThis class serves as an intermediate representation of the
    pattern tree during the conversion to sets of leaf-to-root
    subpatternsNcCsC||_||_g|_d|_d|_g|_g|_dS)NF)typenamechildrenleafparentalternativesgroup)selfr
rr6/opt/alt/python34/lib64/python3.4/lib2to3/btm_utils.py__init__s						zMinNode.__init__cCst|jdt|jS)N )strr
r)rrrr__repr__szMinNode.__repr__cCsU|}g}xB|rP|jtkr|jj|t|jt|jkr|t|jg}g|_|j}qq|j}d}Pn|jtkr|j	j|t|j	t|jkrt
|j	}g|_	|j}qq|j}d}Pn|jtjkr4|j
r4|j|j
n|j|j|j}qW|S)zInternal method. Returns a characteristic path of the
        pattern tree. This method must be run for all leaves until the
        linear subpatterns are merged into a singleN)r
TYPE_ALTERNATIVESrappendlenrtupler
TYPE_GROUPrget_characteristic_subpatterntoken_labelsNAMEr)rnodesubprrrleaf_to_root!s8							
zMinNode.leaf_to_rootcCs1x*|jD]}|j}|r
|Sq
WdS)aDrives the leaf_to_root method. The reason that
        leaf_to_root must be run multiple times is because we need to
        reject 'group' matches; for example the alternative form
        (a | b c) creates a group [b c] that needs to be matched. Since
        matching multiple linear patterns overcomes the automaton's
        capabilities, leaf_to_root merges each group into a single
        choice based on 'characteristic'ity,

        i.e. (a|b c) -> (a|b) if b more characteristic than c

        Returns: The most 'characteristic'(as defined by
          get_characteristic_subpattern) path for the compiled pattern
          tree.
        N)leavesr")rlr!rrrget_linear_subpatternKszMinNode.get_linear_subpatternccs8x |jD]}|jDdHq
W|js4|VndS)z-Generator that returns the leaves of the treeN)rr#)rchildrrrr#`s	zMinNode.leaves)	__name__
__module____qualname____doc__rrr"r%r#rrrrr	s	*r	Nc
Csd}|jtjkr(|jd}n|jtjkrt|jdkrht|jd|}qtdt}x|jD]P}|jj	|drqnt||}|dk	r|jj
|qqWn'|jtjkrxt|jdkr_tdt}x9|jD].}t||}|r|jj
|qqW|jsud}quqt|jd|}n|jtj
krt|jdtjr|jdjdkrt|jd|St|jdtjr|jdjdks=t|jdkrAt|jddrA|jdjdkrAdSd	}d}d}d
}d}	d
}
x|jD]}|jtjkrd
}|}n<|jtjkrd	}|}	n|jtjkr|}nt|dro|jdkrod	}
qoqoW|
rA|jd}t|drN|jdkrN|jd}qNn
|jd}|jtjkr|jd
krtdt}qTtt|jrtdtt|j}qTtdtt|j}n|jtjkr0|jjd}|tkrtdt|}qTtdtjd|}n$|jtjkrTt||}n|r|	jdjdkryd}q|	jdjdkrqtn|r|dk	rxL|jddD]4}t||}|dk	r|jj
|qqWqn|r||_n|S)z
    Internal function. Reduces a compiled pattern tree to an
    intermediate representation suitable for feeding the
    automaton. This also trims off any optional pattern elements(like
    [a], a*).
    Nrr
r([valueTF=rany'r*+)r
symsZMatcherrZAlternativesrreduce_treer	rindexrZAlternativerZUnit
isinstancerZLeafr.hasattrZDetailsZRepeaterrrTYPE_ANYgetattrpysymsSTRINGstriptokensNotImplementedErrorr)
r rZnew_noder&Zreducedr
Zdetails_nodeZalternatives_nodeZhas_repeaterZ
repeater_nodeZhas_variable_nameZ	name_leafrrrrr6gs				


	r6cs5t|ts|St|dkr-|dSg}g}dddddgg}dx|D]}tt|d	d
ratt|fdd
r|j|qtt|fdd
r|j|q|j|qaqaW|r|}n|r|}n|r%|}nt|d
tS)zPicks the most characteristic from a list of linear patterns
    Current order used is:
    names > common_names > common_chars
    rr+inforifnotNonez[]().,:cSst|tkS)N)r
r)xrrr<lambda>sz/get_characteristic_subpattern.<locals>.<lambda>cst|to|kS)N)r8r)rF)common_charsrrrGscst|to|kS)N)r8r)rF)common_namesrrrGskey)r8listrr0rec_testrmax)ZsubpatternsZsubpatterns_with_namesZsubpatterns_with_common_namesZsubpatterns_with_common_chars
subpatternr)rHrIrrs2
					rccsJxC|D];}t|ttfr7t||DdHq||VqWdS)zPTests test_func on all items of sequence and items of included
    sub-iterablesN)r8rKrrL)ZsequenceZ	test_funcrFrrrrLs
rLr4)r*rZpgen2rrZpygramrrr5r<Zopmapr?rr:rrobjectr	r6rrLrrrr<module>s	W%