tzh
2024-08-22 c7d0944258c7d0943aa7b2211498fd612971ce27
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
X\¬Qc@s§dZddlmZddlmZmZddlmZmZeZ    eZ
ej Z eZ dZdZdZdefd    „ƒYZd d
„Zd „Zd „Zd S(s0Utility functions used by the btm_matcher modulei(tpytree(tgrammarttoken(tpattern_symbolstpython_symbolsiÿÿÿÿiþÿÿÿiýÿÿÿtMinNodecBsAeZdZddd„Zd„Zd„Zd„Zd„ZRS(s‰This class serves as an intermediate representation of the
    pattern tree during the conversion to sets of leaf-to-root
    subpatternscCsC||_||_g|_t|_d|_g|_g|_dS(N(    ttypetnametchildrentFalsetleaftNonetparentt alternativestgroup(tselfRR((sY/tmp/ndk-User/buildhost/install/prebuilt/darwin-x86_64/lib/python2.7/lib2to3/btm_utils.pyt__init__s                        cCst|jƒdt|jƒS(Nt (tstrRR(R((sY/tmp/ndk-User/buildhost/install/prebuilt/darwin-x86_64/lib/python2.7/lib2to3/btm_utils.pyt__repr__scCsU|}g}xB|rP|jtkr|jj|ƒt|jƒt|jƒkr|t|jƒg}g|_|j}qq|j}d}Pn|jt    kr|j
j|ƒt|j
ƒt|jƒkrót |j
ƒ}g|_
|j}qq|j}d}Pn|jt j kr4|jr4|j|jƒn|j|jƒ|j}qW|S(s°Internal 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(RtTYPE_ALTERNATIVESR tappendtlenRttupleR R t
TYPE_GROUPRtget_characteristic_subpatternt token_labelstNAMER(Rtnodetsubp((sY/tmp/ndk-User/buildhost/install/prebuilt/darwin-x86_64/lib/python2.7/lib2to3/btm_utils.pyt leaf_to_root!s8                             cCs1x*|jƒD]}|jƒ}|r |Sq WdS(s‹Drives 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(tleavesR(RtlR((sY/tmp/ndk-User/buildhost/install/prebuilt/darwin-x86_64/lib/python2.7/lib2to3/btm_utils.pytget_linear_subpatternKs ccsEx-|jD]"}x|jƒD] }|VqWq
W|jsA|VndS(s-Generator that returns the leaves of the treeN(RR(Rtchildtx((sY/tmp/ndk-User/buildhost/install/prebuilt/darwin-x86_64/lib/python2.7/lib2to3/btm_utils.pyR`s
     N(    t__name__t
__module__t__doc__R RRRR!R(((sY/tmp/ndk-User/buildhost/install/prebuilt/darwin-x86_64/lib/python2.7/lib2to3/btm_utils.pyRs             *    c Csd}|jtjkr(|jd}n|jtjkrØt|jƒdkrht|jd|ƒ}qütdt    ƒ}x‚|jD]P}|jj
|ƒdr£qnt||ƒ}|dk    r|jj |ƒqqWn$|jtj krxt|jƒdkr_tdt ƒ}x9|jD].}t||ƒ}|r|jj |ƒqqW|jsud}quqüt|jd|ƒ}n„|jtjkrüt|jdtjƒrÍ|jdjdkrÍt|jd|ƒSt|jdtjƒrü|jdjdks=t|jƒdkrAt|jddƒrA|jdjdkrAdSt}d}d}t}d}    t}
x•|jD]Š}|jtjkr–t}|}n<|jtjkr·t}|}    n|jtjkrÒ|}nt|dƒro|jdkrot}
qoqoW|
rA|jd} t| dƒrN| jdkrN|jd    } qNn |jd} | jtjkrÏ| jd
krtdtƒ}qTtt| jƒr±tdtt| jƒƒ}qTtdtt| jƒƒ}n…| jtjkr0| jjd ƒ} | tkrtdt| ƒ}qTtdtjd | ƒ}n$| jtjkrTt||ƒ}n|r›|    jdjd kryd}q›|    jdjdkr’q›t ‚n|rü|dk    rüxI|jdd!D]4}t||ƒ}|dk    r¾|jj |ƒq¾q¾Wqün|r||_!n|S(sÏ
    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*).
    iiRit(t[tvaluet=itanyt'Rt*t+iÿÿÿÿN("R RtsymstMatcherRt AlternativesRt reduce_treeRRtindexRt AlternativeRtUnitt
isinstanceRtLeafR)thasattrtTrueR    tDetailstRepeaterRRtTYPE_ANYtgetattrtpysymstSTRINGtstripttokenstNotImplementedErrorR ( RR tnew_nodeR"treducedR
t details_nodetalternatives_nodet has_repeatert repeater_nodethas_variable_namet    name_leafR((sY/tmp/ndk-User/buildhost/install/prebuilt/darwin-x86_64/lib/python2.7/lib2to3/btm_utils.pyR2hs¦                            cs,t|tƒs|St|ƒdkr-|dSg}g}dddddg‰g}d‰x’|D]Š}tt|d    „ƒƒratt|‡fd
†ƒƒr­|j|ƒqëtt|‡fd †ƒƒrÛ|j|ƒqë|j|ƒqaqaW|rþ|}n|r |}n|r|}nt|d tƒS( s„Picks the most characteristic from a list of linear patterns
    Current order used is:
    names > common_names > common_chars
    iitintfortiftnotR s[]().,:cSst|ƒtkS(N(RR(R#((sY/tmp/ndk-User/buildhost/install/prebuilt/darwin-x86_64/lib/python2.7/lib2to3/btm_utils.pyt<lambda>ÿscst|tƒo|ˆkS(N(R6R(R#(t common_chars(sY/tmp/ndk-User/buildhost/install/prebuilt/darwin-x86_64/lib/python2.7/lib2to3/btm_utils.pyROscst|tƒo|ˆkS(N(R6R(R#(t common_names(sY/tmp/ndk-User/buildhost/install/prebuilt/darwin-x86_64/lib/python2.7/lib2to3/btm_utils.pyROstkey(R6tlistRR+trec_testRtmax(t subpatternstsubpatterns_with_namestsubpatterns_with_common_namestsubpatterns_with_common_charst
subpattern((RPRQsY/tmp/ndk-User/buildhost/install/prebuilt/darwin-x86_64/lib/python2.7/lib2to3/btm_utils.pyRîs2                     ccsWxP|D]H}t|ttfƒrDx*t||ƒD] }|Vq2Wq||ƒVqWdS(sPTests test_func on all items of sequence and items of included
    sub-iterablesN(R6RSRRT(tsequencet    test_funcR#ty((sY/tmp/ndk-User/buildhost/install/prebuilt/darwin-x86_64/lib/python2.7/lib2to3/btm_utils.pyRTs
  N(R&tRtpgen2RRtpygramRRR/R>topmapRARR<RRtobjectRR R2RRT(((sY/tmp/ndk-User/buildhost/install/prebuilt/darwin-x86_64/lib/python2.7/lib2to3/btm_utils.pyt<module>s    X †    %