o ?Og&@sz ddlmZddlmZmZddlmZmZeZeZ ej Z eZ dZ dZdZGdddeZdd d Zd d ZddZd S))pytree)grammartoken)pattern_symbolspython_symbolsc@s8eZdZ d ddZddZddZdd Zd d ZdS) MinNodeNcCs.||_||_g|_d|_d|_g|_g|_dS)NF)typenamechildrenleafparent alternativesgroup)selfr r r8/opt/alt/python310/lib64/python3.10/lib2to3/btm_utils.py__init__s zMinNode.__init__cCst|jdt|jS)N )strr r )rrrr__repr__szMinNode.__repr__cCs |}g}|ru|jtkr1|j|t|jt|jkr)t|jg}g|_|j}q|j}d} |S|jtkrZ|j |t|j t|jkrRt |j }g|_ |j}q|j}d} |S|jt j krj|j rj||j n||j|j}|s|SN)r TYPE_ALTERNATIVESrappendlenr tupler TYPE_GROUPrget_characteristic_subpattern token_labelsNAMEr )rnodesubprrr leaf_to_root!s@       "zMinNode.leaf_to_rootcCs( |D] }|}|r|SqdSr)leavesr$)rlr#rrrget_linear_subpatternKs zMinNode.get_linear_subpatternccs2 |jD] }|EdHq|js|VdSdSr)r r%)rchildrrrr%`s  zMinNode.leaves)NN)__name__ __module__ __qualname__rrr$r'r%rrrrr s  * r Nc Cs d}|jtjkr|jd}|jtjkrJt|jdkr%t|jd|}nttd}|jD]}|j |dr8q-t||}|durG|j |q-nw|jtj krt|jdkrvtt d}|jD]}t||}|rn|j |q_|jstd}nKt|jd|}nA|jtj krt|jdtjr|jdjdkrt|jd|St|jdtjr|jdjdkst|jdkrt|jddr|jdjdkrdSd}d}d}d }d} d } |jD].}|jtjkrd }|}n|jtjkrd}|} n|jtjkr|}t|dr|jd krd} q| r"|jd} t| dr!| jdkr!|jd } n|jd} | jtjkrU| jd kr:ttd}nItt| jrKttt| jd}n8ttt| jd}n.| jtjkrw| jd } | tvrott| d}nttj| d}n | jtjkrt||}|r| jdjdkrd}n | jdjdkrnt|r|dur|jddD]}t||}|dur|j |q|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                           r8cs t|ts|St|dkr|dSg}g}gdg}d|D]2}tt|ddrRtt|fddr<||q tt|fddrM||q ||q |rX|}n |r]|}n|ra|}t|td S) Nrr,)inforifnotNonez[]().,:cSs t|tuSr)r rxrrrs z/get_characteristic_subpattern..ct|to|vSrr:rrH) common_charsrrrJcrKrrLrH) common_namesrrrJrN)key)r:listrr3rec_testrmax)Z subpatternsZsubpatterns_with_namesZsubpatterns_with_common_namesZsubpatterns_with_common_chars subpatternr)rMrOrrs:        rccs< |D]}t|ttfrt||EdHq||VqdSr)r:rQrrR)ZsequenceZ test_funcrIrrrrRs rRr)rZpgen2rrZpygramrrr7r>ZopmaprAr r<rrobjectr r8rrRrrrrs   W %