a DOg&@sxddlmZddlmZmZddlmZmZeZeZ ej Z eZ dZ dZdZGdddeZdd d Zd d ZddZd S))pytree)grammartoken)pattern_symbolspython_symbolsc@s6eZdZd ddZddZddZdd Zd d ZdS) MinNodeNcCs.||_||_g|_d|_d|_g|_g|_dS)NF)typenamechildrenleafparent alternativesgroup)selfr r r6/opt/alt/python39/lib64/python3.9/lib2to3/btm_utils.py__init__szMinNode.__init__cCst|jdt|jS)N )strr r )rrrr__repr__szMinNode.__repr__cCs|}g}|r|jtkr^|j|t|jt|jkrRt|jg}g|_|j}qn |j}d}q|jtkr|j |t|j t|jkrt |j }g|_ |j}qn |j}d}q|jt j kr|j r||j n ||j|j}q|SN)r TYPE_ALTERNATIVESrappendlenr tupler TYPE_GROUPrget_characteristic_subpattern token_labelsNAMEr )rnodesubprrr leaf_to_root!s8       zMinNode.leaf_to_rootcCs&|D]}|}|r|SqdSr)leavesr$)rlr#rrrget_linear_subpatternKs zMinNode.get_linear_subpatternccs*|jD]}|EdHq|js&|VdSr)r r%)rchildrrrr%`s zMinNode.leaves)NN)__name__ __module__ __qualname__rrr$r'r%rrrrr s  *r Nc Csd}|jtjkr|jd}|jtjkrt|jdkrFt|jd|}nFttd}|jD]4}|j |drlqVt||}|durV|j |qVn|jtj krt|jdkrtt d}|jD]}t||}|r|j |q|jsd}nt|jd|}n|jtj krt|jdtjr>|jdjdkr>t|jd|St|jdtjrd|jdjdkst|jdkrt|jddr|jdjdkrdSd}d}d}d }d} d } |jD]d}|jtjkrd }|}n*|jtjkrd}|} n|jtjkr|}t|dr|jd krd} q| rT|jd} t| dr^| jdkr^|jd } n |jd} | jtjkr| jd krttd}n4tt| jrttt| jd}nttt| jd}n\| jtjkr| jd } | tvrtt| d}nttj| d}n| jtjkrt||}|rL| jdjdkr4d}n| jdjdkrHnt|r|dur|jddD]&}t||}|durj|j |qj|r||_|S)N)r r([valueTF=any')r r *+r)r symsZMatcherr Z Alternativesr reduce_treer rindexrZ AlternativerZUnit isinstancerZLeafr0hasattrZDetailsZRepeaterr r!TYPE_ANYgetattrpysymsSTRINGstriptokensNotImplementedErrorr) r"rZnew_noder(ZreducedrZ details_nodeZalternatives_nodeZ has_repeaterZ repeater_nodeZhas_variable_nameZ name_leafr rrrr8gs                      r8cst|ts|St|dkr"|dSg}g}gdg}d|D]d}tt|ddr>tt|fddrv||q>tt|fddr||q>||q>|r|}n|r|}n|r|}t|td S) Nrr,)inforifnotNonez[]().,:cSs t|tuSr)r rxrrrz/get_characteristic_subpattern..cst|to|vSrr:rrH) common_charsrrrJrKcst|to|vSrrLrH) common_namesrrrJrK)key)r:listrr3rec_testrmax)Z subpatternsZsubpatterns_with_namesZsubpatterns_with_common_namesZsubpatterns_with_common_chars subpatternr)rMrNrrs6       rccs8|D].}t|ttfr(t||EdHq||VqdSr)r:rPrrQ)ZsequenceZ test_funcrIrrrrQsrQ)N)rZpgen2rrZpygramrrr7r>ZopmaprAr r<rrobjectr r8rrQrrrrs W %