f& ddlmZddlmZmZddlmZmZeZeZ ej Z eZ dZ dZdZGddeZd d Zd Zd Zd S))pytree)grammartoken)pattern_symbolspython_symbolsc0eZdZ ddZdZdZdZdZdS)MinNodeNch||_||_g|_d|_d|_g|_g|_dS)NF)typenamechildrenleafparent alternativesgroup)selfrrs 8/opt/alt/python311/lib64/python3.11/lib2to3/btm_utils.py__init__zMinNode.__init__s8      cZt|jdzt|jzS)N )strrr)rs r__repr__zMinNode.__repr__s"49~~#c$)nn44rc |}g}|r^|jtkrr|j|t |jt |jkr$t |jg}g|_|j}{|j}d}n|jtkrq|j |t |j t |jkr#t|j }g|_ |j}|j}d}n[|jtj kr"|j r||j n||j|j}|^|SN)rTYPE_ALTERNATIVESrappendlenrtupler TYPE_GROUPrget_characteristic_subpattern token_labelsNAMEr)rnodesubps r leaf_to_rootzMinNode.leaf_to_root!s_ 7! y---!((...t())S-?-???!$"3445D(*D%;D;DDyJ&& !!$'''tz??c$-&8&8888DDD!#DJ;D;DDyL---$)- DI&&&& DI&&&;DC! D rcj |D]}|}|r|cSdSr)leavesr))rlr(s rget_linear_subpatternzMinNode.get_linear_subpatternKsO   A>>##D     rc#nK |jD]}|Ed{V|js|VdSdSr)rr+)rchilds rr+zMinNode.leaves`s^7] & &E||~~ % % % % % % % %} JJJJJ  r)NN)__name__ __module__ __qualname__rrr)r-r+rrr r sj555(((T*rr Nc d}|jtjkr |jd}|jtjkrt |jdkrt |jd|}nstt}|jD]L}|j |dzr t ||}||j |Mn|jtj krt |jdkrVtt}|jD].}t ||}|r|j |/|jsd}nt |jd|}nh|jtj krRt|jdtjr1|jdjdkrt |jd|St|jdtjr|jdjdksIt |jdkr3t%|jddr|jdjdkrdSd}d}d}d }d} d } |jD]j}|jtjkrd }|}n1|jtjkrd}|} n|jtjkr|}t%|dr |jd krd} k| r6|jd} t%| dr| jdkr |jd } n |jd} | jt*jkr| jd krtt.}nt%t*| jr)tt1t*| j}ntt1t2| j}n| jt*jkr[| jd } | t8vrtt8| }nAtt*j| }n%| jtjkrt ||}|r7| jdjdkrd}n| jdjdkrnt:|r@|>|jddD].}t ||}||j |/|r||_|S)N)rr([valueTF=any')rr*+r)rsymsMatcherr Alternativesr! reduce_treer rindexr Alternativer#Unit isinstancerLeafr9hasattrDetailsRepeaterr%r&TYPE_ANYgetattrpysymsSTRINGstriptokensNotImplementedErrorr) r'rnew_noder/reducedr details_nodealternatives_node has_repeater repeater_nodehas_variable_name name_leafrs rrCrCgsH yDL  }Q yD%%% t}   " ""4=#3V<\. . .%''"111<99N&GL)/,R,RSSSHH&GFIO,L,LMMMHH ^|2 2 2?((--Dv~~"t 555" (9EEE ^t0 0 0"#4f==H  *%a(.#55'*0C77*)  6H0%.qt4 6 6%eX66&%,,W555!  Orc t|ts|St|dkr|dSg}g}gdg}d|D]}tt |drtt |fdr||Vtt |fdr|||||r|}n |r|}n|r|}t |tS) Nrr5)inforifnotNonez[]().,:c.t|tuSr)rr)xs rz/get_characteristic_subpattern..sd1ggnrc6t|to|vSrrGr)rb common_charss rrcz/get_characteristic_subpattern..sjC&8&8&NQ,=Nrc6t|to|vSrre)rb common_namess rrcz/get_characteristic_subpattern..s 1c(:(:(PqL?Pr)key)rGlistr!r<rec_testr max) subpatternssubpatterns_with_namessubpatterns_with_common_namessubpatterns_with_common_chars subpatternrfrhs @@rr$r$st k4 ( ( ;1~ $&!666L$&!L! : : x $<$<== > > :8JNNNNPPQQ :-44Z@@@@XjPPPPRRSS :-44Z@@@@'--j9994, &43 &43 { $ $ $$rc#K |D]B}t|ttfrt||Ed{V5||VCdSr)rGrjr"rk)sequence test_funcrbs rrkrksv  a$ ' ' 9-- - - - - - - - -)A,,     rr)rpgen2rrpygramrrr@rNopmaprQr%rLrr#objectr rCr$rkr3rrrzs2!!!!!!!!33333333     UUUUUfUUUnBBBBJ#%#%#%Jr