fdZdZddlZddlmZmZmZmZmZm Z ddl m Z ddl m Z Gdd e Zd ZGd d 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 N)driverliteralstokentokenizeparsegrammar)pytree)pygramceZdZdS)PatternSyntaxErrorN)__name__ __module__ __qualname__6/opt/alt/python311/lib64/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*eUC t  OOOrc2eZdZddZd dZdZddZdZdS) PatternCompilerNcL|#tj|_tj|_n7t j||_tj|j|_tj|_ tj |_ t j |jt|_dS)z^Initializer. Takes an optional alternative filename for the pattern grammar. N)convert)r pattern_grammarr pattern_symbolssymsr load_grammarSymbolspython_grammar pygrammarpython_symbolspysymsDriverpattern_convert)self grammar_files r__init__zPatternCompiler.__init__(su  !1DL.DII!.|<z0PatternCompiler.compile_node..Os'GGGbD%%b))GGGrNrcg|]}|gSrr)rFas rrHz0PatternCompiler.compile_node..Rs':':':':':':rminmaxc:g|]}|SrrDrEs rrHz0PatternCompiler.compile_node..Vs'CCCrT&&r**CCCr)r r,Matcherchildren Alternativeslenr WildcardPatternoptimize Alternative NegatedUnit compile_basicNegatedPatternrEQUALr!RepeaterSTARHUGEPLUSLBRACEget_intname) r5nodealtspunitspatternrdnodesrepeatrTchildrMrNs ` rr=zPatternCompiler.compile_nodeCs 9 ) ) )=#D 9 . . .GGGGDM##A#4FGGGD4yyA~~Aw&':':T':':':qIIIA::<<  9 - - -CCCCT]CCCE5zzQQx&wA1===A::<<  9 - - -((qrr):;;G%g..A::<<   u::??uQx} ;;8>D!""IE u::??uRy~1CCC2YF#2#JE$$UF33  HQKEzUZ''kuz))ku|++!LL!555cx==A%%,,x{33Caxx3!88!**,, 07)#3OOO  GL!!!rc|d}|jtjkrHtt j|j}tjt||S|jtj kr|j}| rS|tvrtd|z|ddrtdtjt|S|dkrd}n?|ds*t|j|d}|td|z|ddr(||djdg}nd}tj||S|jdkr||dS|jd kr4||d}tj|ggdd SdS) NrzInvalid token: %rrzCan't have details for tokenany_zInvalid symbol: %r([rL)r rSTRINGr<r evalStringr!r LeafPattern_type_of_literalNAMEisupper TOKEN_MAPr startswithgetattrr2r=rT NodePatternrW)r5rjrkrer!r content subpatterns rr[zPatternCompiler.compile_basicsQx 9 $ $+DJ7788E%&6u&=&=uEE E Y%* $ $JE}} 9 )),-@5-HIII9M,-KLLL))E*:;;;E>>DD))#..O"4;t<rs=3  EDDDDDDDDDDDDDDD        IIIIIfIIIZZ||   99966666r