/usr/lib64/python3.9/lib2to3/__pycache__
Edit: /usr/lib64/python3.9/lib2to3/__pycache__/patcomp.cpython-39.opt-1.pyc (5389B)
a
´iŽ ã @ s d Z dZddlZddlmZmZmZmZmZm Z ddl
mZ ddl
mZ G dd „ d e
ƒZd
d„ ZG dd
„ d
eƒZejejejddœZdd„ Zdd„ Zdd„ ZdS )z�Pattern compiler.
The grammar is taken from PatternGrammar.txt.
The compiler compiles a pattern to a pytree.*Pattern instance.
z#Guido van Rossum
é Né )ÚdriverÚliteralsÚtokenÚtokenizeÚparseÚgrammar)Úpytree)Úpygramc @ s e Zd ZdS )ÚPatternSyntaxErrorN)Ú__name__Ú
__module__Ú__qualname__© r r ú'/usr/lib64/python3.9/lib2to3/patcomp.pyr s r c c sL t jt jt jh}t t | ¡j¡}|D ] }|\}}}}}||vr&|V q&dS )z6Tokenizes a string suppressing significant whitespace.N) r ÚNEWLINEÚINDENTÚDEDENTr Úgenerate_tokensÚioÚStringIOÚreadline) ÚinputÚskipÚtokensZ quintupleÚtypeÚvalueÚstartÚendZ line_textr r r Útokenize_wrapper s r c @ s: e Zd Zd
dd„Zddd„Zdd„ Zdd d
„Zdd„ ZdS )ÚPatternCompilerNc C sZ |du rt j| _t j| _nt |¡| _t | j¡| _t j| _ t j
| _tj| jt
d�| _dS )z^Initializer.
Takes an optional alternative filename for the pattern grammar.
N)Úconvert)r
Zpattern_grammarr Zpattern_symbolsÚsymsr Zload_grammarZSymbolsZpython_grammarZ pygrammarZpython_symbolsÚpysymsZDriverÚpattern_convert)ÚselfZgrammar_filer r r Ú__init__( s
zPatternCompiler.__init__Fc
C sr t |ƒ}z| jj||d�}W n4 tjyP } ztt|ƒƒd‚W Y d}~n
d}~0 0 |rd| |¡|fS | |¡S dS )z=Compiles a pattern string to a nested pytree.*Pattern object.)ÚdebugN)r r Zparse_tokensr Z
ParseErrorr ÚstrÚcompile_node)r% r r' Z with_treer ÚrootÚer r r Úcompile_pattern7 s $zPatternCompiler.compile_patternc
sV |j ˆ jjkr|jd }|j ˆ jjkrz‡ fdd„|jddd… D ƒ}t|ƒdkrX|d S tjdd„ |D ƒddd�}| ¡ S |j ˆ jj krʇ fd d„|jD ƒ}t|ƒdkr°|d S tj|gddd�}| ¡ S |j ˆ jj
krþˆ |jdd… ¡}t |¡}| ¡ S d}|j}t|ƒd
k�r>|d j t
jk�r>|d j}|dd… }d}t|ƒdk�rx|d j ˆ jjk�rx|d }|dd… }ˆ ||¡}|du�r>|j} | d }
|
j t
jk�r¶d}tj}nX|
j t
jk�rÐd}tj}n>|
j t
jk�rˆ | d ¡ }}t| ƒdk�rˆ | d
¡}n |dk�s"|dk�r>| ¡ }tj|gg||d�}|du�rN||_| ¡ S )
zXCompiles a node, recursively.
This is one big switch on the node type.
r c s g | ]}ˆ |¡‘qS r ©r) ©Ú.0Zch©r% r r Ú
O ó z0PatternCompiler.compile_node..Né r c S s g | ]
}|g‘qS r r )r/ Úar r r r1 R r2 ©ÚminÚmaxc s g | ]}ˆ |¡‘qS r r- r. r0 r r r1 V r2 é éÿÿÿÿé )r r" ZMatcherÚchildrenZAlternativesÚlenr ÚWildcardPatternÚoptimizeZAlternativeZNegatedUnitÚ
compile_basicZNegatedPatternr ÚEQUALr ZRepeaterÚSTARZHUGEÚPLUSÚLBRACEÚget_intÚname)
r% ÚnodeZaltsÚpZunitsÚpatternrE ÚnodesÚrepeatr; Úchildr6 r7 r r0 r r) C s^
"
zPatternCompiler.compile_nodec C s@ |d }|j tjkr4tt |j¡ƒ}t t |ƒ|¡S |j tj
krô|j}| ¡ r„|tvrbt
d| ƒ‚|dd … rvt
dƒ‚t t| ¡S |dkr’d }n,| d¡s¾t| j|d ƒ}|d u r¾t
d| ƒ‚|dd … râ| |d jd ¡g}nd }t ||¡S nH|jdk�r| |d ¡S |jd k�r<| |d ¡}tj|ggddd
�S d S )Nr zInvalid token: %rr zCan't have details for tokenÚanyÚ_zInvalid symbol: %rú(ú[r5 )r r ÚSTRINGr( r Z
evalStringr r ZLeafPatternÚ_type_of_literalÚNAMEÚisupperÚ TOKEN_MAPr Ú
startswithÚgetattrr# r) r; ZNodePatternr= )r% rI rJ rF r r ZcontentÚ
subpatternr r r r? Š s8
zPatternCompiler.compile_basicc C s
t |jƒS ©N)Úintr )r% rF r r r rD s zPatternCompiler.get_int)N)FF)N)r r
r r&