python (3.11.7)

(root)/
lib/
python3.11/
lib2to3/
__pycache__/
btm_utils.cpython-311.opt-1.pyc

e&dZddlmZddlmZmZddlmZmZeZ	eZ
ejZeZ
dZdZdZGdd	eZddZdZd
Zd
S)z0Utility functions used by the btm_matcher module)pytree)grammartoken)pattern_symbolspython_symbolsc2eZdZdZddZdZdZdZdZdS)	MinNodezThis class serves as an intermediate representation of the
    pattern tree during the conversion to sets of leaf-to-root
    subpatternsNch||_||_g|_d|_d|_g|_g|_dS)NF)typenamechildrenleafparentalternativesgroup)selfrrs   E/BuggyBox/python/3.11.7/bootstrap/lib/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}|^|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)rTYPE_ALTERNATIVESrappendlenrtupler
TYPE_GROUPrget_characteristic_subpatterntoken_labelsNAMEr)rnodesubps   rleaf_to_rootzMinNode.leaf_to_root!sZ!	y---!((...t())S-?-???!$"3445D(*D%;D;DDyJ&&
!!$'''tz??c$-&8&8888DDD!#DJ;D;DDyL---$)-DI&&&&DI&&&;DC!	Drch|D]}|}|r|cSdS)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's   rget_linear_subpatternzMinNode.get_linear_subpatternKsJ 		A>>##D

		rc#lK|jD]}|Ed{V|js|VdSdS)z-Generator that returns the leaves of the treeN)rr*)rchilds  rr*zMinNode.leaves`s[]	&	&E||~~%%%%%%%%}	JJJJJ		r)NN)	__name__
__module____qualname____doc__rrr(r,r*rrrrso555(((T*rrNc	d}|jtjkr
|jd}|jtjkrt|jdkrt
|jd|}nstt}|jD]L}|j	|dzr t
||}||j
|Mn|jtjkrt|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
|jdkrd	}
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)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*).
    N)rr([valueTF=any')rr*+r)rsymsMatcherrAlternativesr reduce_treerrindexrAlternativer"Unit
isinstancerLeafr9hasattrDetailsRepeaterr$r%TYPE_ANYgetattrpysymsSTRINGstriptokensNotImplementedErrorr)
r&rnew_noder.reducedrdetails_nodealternatives_nodehas_repeater
repeater_nodehas_variable_name	name_leafrs
             rrCrCgsHyDL  }QyD%%%t}"""4=#3V<<HH$5666H
6
6=&&u--a/%eX66&%,,W555
6
d&	&	&t}!!J///H
6
6%eX666%,,W555$
 #4=#3V<<HH	
di		t}Q'55	9M!"c))t}Q/888

a(&+
6
6	}Q%,,DM""1$$t}Q'11%}Q%,,4 
!]
	)
	)EzT\))$t},,# %

t000$)!ug&&
)5;#+=+=$(!	)
a(Iy'**
-y#/E/E M!,	
a(I>\...%''"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! Orct|ts|St|dkr|dSg}g}gdg}d|D]}tt	|drtt	|fdr||Vtt	|fdr|||||r|}n	|r|}n|r|}t
|tS)	zPicks the most characteristic from a list of linear patterns
    Current order used is:
    names > common_names > common_chars
    rr5)inforifnotNonez[]().,:c.t|tuSN)rr)xs r<lambda>z/get_characteristic_subpattern.<locals>.<lambda>sd1ggnrc6t|to|vSrbrGr)rccommon_charss rrdz/get_characteristic_subpattern.<locals>.<lambda>sjC&8&8&NQ,=Nrc6t|to|vSrbrf)rccommon_namess rrdz/get_characteristic_subpattern.<locals>.<lambda>s
1c(:(:(PqL?Pr)key)rGlistr r<rec_testrmax)subpatternssubpatterns_with_namessubpatterns_with_common_namessubpatterns_with_common_chars
subpatternrgris     @@rr#r#so
k4((
;1~ $&!666L$&!L!
:
:
x
$<$<==>>		:8JNNNNPPQQ
:-44Z@@@@XjPPPPRRSS
:-44Z@@@@'--j9994,	&43	&43{$$$$rc#K|D]B}t|ttfrt||Ed{V5||VCdS)zPTests test_func on all items of sequence and items of included
    sub-iterablesN)rGrkr!rl)sequence	test_funcrcs   rrlrlssa$''	9----------)A,,	rrb)r2rpgen2rrpygramrrr@rNopmaprQr$rLrr"objectrrCr#rlr3rr<module>r{s22!!!!!!!!33333333		


UUUUUfUUUnBBBBJ#%#%#%Jr