python (3.11.7)

(root)/
lib/
python3.11/
lib2to3/
__pycache__/
patcomp.cpython-311.pyc

edZdZddlZddlmZmZmZmZmZm	Z	ddl
mZddl
mZGdd	e
Zd
ZGddeZejejejdd
ZdZdZdZdS)zPattern compiler.

The grammar is taken from PatternGrammar.txt.

The compiler compiles a pattern to a pytree.*Pattern instance.
z#Guido van Rossum <guido@python.org>N)driverliteralstokentokenizeparsegrammar)pytree)pygramceZdZdS)PatternSyntaxErrorN)__name__
__module____qualname__C/BuggyBox/python/3.11.7/bootstrap/lib/python3.11/lib2to3/patcomp.pyr
r
sDrr
c#Ktjtjtjh}t	jt
j|j}|D]}|\}}}}}||vr|VdS)z6Tokenizes a string suppressing significant whitespace.N)	rNEWLINEINDENTDEDENTrgenerate_tokensioStringIOreadline)	inputskiptokens	quintupletypevaluestartend	line_texts	         rtokenize_wrapperr%ssM5<6D

%bk%&8&8&A
B
BF	-6*eUCtOOOrc2eZdZddZd	dZdZddZdZdS)
PatternCompilerNcL|#tj|_tj|_n7tj||_tj|j|_tj|_	tj
|_tj|jt|_dS)z^Initializer.

        Takes an optional alternative filename for the pattern grammar.
        N)convert)rpattern_grammarr	pattern_symbolssymsrload_grammarSymbolspython_grammar	pygrammarpython_symbolspysymsDriverpattern_convert)selfgrammar_files  r__init__zPatternCompiler.__init__(su
!1DL.DII!.|<<DLt|44DI.+mDL/JJJrFc t|}	|j||}n4#tj$r"}tt
|dd}~wwxYw|r|||fS||S)z=Compiles a pattern string to a nested pytree.*Pattern object.)debugN)r%rparse_tokensr
ParseErrorr
strcompile_node)r5rr9	with_treerrootes       rcompile_patternzPatternCompiler.compile_pattern7s!%((	7;++F%+@@DD	7	7	7$SVV,,$6	7	+$$T**D00$$T***s.AAAc|jjjkr
|jd}|jjjkrlfd|jdddD}t|dkr|dSt
jd|Ddd}|S|jjj	krZfd|jD}t|dkr|dSt
j|gdd}|S|jjj
krJ|jdd}t
j|}|S|jjj
ksJd}|j}t|d	kr2|djtjkr|dj}|dd}d}t|dkr-|d
jjjkr|d
}|dd
}||}|:|jjjksJ|j}	|	d}
|
jtjkrd}tj}n|
jtjkrd}tj}n|
jtjkr||	d
jtjksJt|	dvsJ|	dx}}t|	dkr|	d	}nJ|dks|dkr-|}t
j|gg||}|||_|S)
zXCompiles a node, recursively.

        This is one big switch on the node type.
        rc:g|]}|Srr=.0chr5s  r
<listcomp>z0PatternCompiler.compile_node.<locals>.<listcomp>Os'GGGbD%%b))GGGrNrcg|]}|gSrr)rFas  rrHz0PatternCompiler.compile_node.<locals>.<listcomp>Rs':':':':':':rminmaxc:g|]}|SrrDrEs  rrHz0PatternCompiler.compile_node.<locals>.<listcomp>Vs'CCCrT&&r**CCCr)rPrR)r r,MatcherchildrenAlternativeslenr
WildcardPatternoptimizeAlternativeNegatedUnit
compile_basicNegatedPatternUnitrEQUALr!RepeaterSTARHUGEPLUSLBRACERBRACEget_intname)
r5nodealtspunitspatternrfnodesrepeatrTchildrMrNs
`            rr=zPatternCompiler.compile_nodeCs]9	)))=#D9	...GGGGDM##A#4FGGGD4yyA~~Aw&':':T':':':qIIIA::<<9	---CCCCT]CCCE5zzQQx&wA1===A::<<9	---((qrr):;;G%g..A::<<yDIN****
u::??uQx};;8>D!""IEu::??uRy~1CCC2YF#2#JE$$UF33;$)"44444HQKEzUZ''kuz))ku|++|(EL8888H

//// LL!555cx==A%%,,x{33Caxx3!88!**,, 07)#3OOOGL!!!rct|dksJ|d}|jtjkrHt	tj|j}tj	t||S|jtjkr|j}|rS|tvrtd|z|ddrtdtj	t|S|dkrd}n?|ds*t!|j|d}|td|z|ddr(||djdg}nd}tj||S|jdkr||dS|jd	kr8|J||d}tj|ggdd
SJ|)NrrzInvalid token: %rzCan't have details for tokenany_zInvalid symbol: %r([rL)rVr rSTRINGr<r
evalStringr!r
LeafPattern_type_of_literalNAMEisupper	TOKEN_MAPr

startswithgetattrr2r=rTNodePatternrW)r5rlrmrgr!r content
subpatterns        rr[zPatternCompiler.compile_basics5zzQQx9$$+DJ7788E%&6u&=&=uEEE
Y%*
$
$JE}}
9	)),-@5-HIII9M,-KLLL))E*:;;;E>>DD))#..O"4;t<<D|01E1MNNN9##00q1B11EFFGGG"G)$888
Z3

$$U1X...
Z3

>>>**5844J)J<.aQGGGGdrcX|jtjksJt|jSN)r rNUMBERintr!)r5rgs  rrezPatternCompiler.get_ints%yEL((((4:rr)FF)rrrr7rAr=r[rerrrr'r'&sw
K
K
K
K
+
+
+
+E"E"E"N!!!!Frr')rxrtrTOKENc|drtjS|tjvrtj|SdS)Nr)isalpharrxr	opmap)r!s rrwrwsAQxz	'-		}U##trc|\}}}}|s	||jvrtj|||Stj|||S)z9Converts raw node information to a Node or Leaf instance.)context)
number2symbolr
NodeLeaf)r	
raw_node_infor r!rrTs      rr4r4sS%2"D%(947000{47;;;;{48888rcDt|Sr)r'rA)rks rrArAs,,W555r)__doc__
__author__rpgen2rrrrrr	r
r	Exceptionr
r%objectr'rxrtrrzrwr4rArrr<module>rs=3

			EDDDDDDDDDDDDDDD								IIIIIfIIIZZ||

	99966666r