%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /usr/local/lib/python3.8/lib2to3/__pycache__/
Upload File :
Create Path :
Current File : //usr/local/lib/python3.8/lib2to3/__pycache__/patcomp.cpython-38.pyc

U

pa@sdZdZddlZddlmZmZmZmZmZm	Z	ddl
mZddl
mZGdd	d	e
Zd
dZGdd
d
eZejejejddZddZddZddZdS)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)pygramc@seZdZdS)PatternSyntaxErrorN)__name__
__module____qualname__rr+/usr/local/lib/python3.8/lib2to3/patcomp.pyrsrc	csLtjtjtjh}tt|j}|D] }|\}}}}}||kr&|Vq&dS)z6Tokenizes a string suppressing significant whitespace.N)	rNEWLINEINDENTDEDENTrgenerate_tokensioStringIOreadline)	inputskiptokensZ	quintupletypevaluestartendZ	line_textrrrtokenize_wrappersrc@s:eZdZd
ddZdddZddZdd	d
ZddZdS)PatternCompilerNcCsZ|dkrtj|_tj|_nt||_t|j|_tj|_	tj
|_tj|jt
d|_dS)z^Initializer.

        Takes an optional alternative filename for the pattern grammar.
        N)convert)r
Zpattern_grammarrZpattern_symbolssymsrZload_grammarZSymbolsZpython_grammarZ	pygrammarZpython_symbolspysymsZDriverpattern_convert)selfZgrammar_filerrr__init__(s
zPatternCompiler.__init__Fc
Cspt|}z|jj||d}Wn2tjk
rN}ztt|dW5d}~XYnX|rb|||fS||SdS)z=Compiles a pattern string to a nested pytree.*Pattern object.)debugN)rrZparse_tokensrZ
ParseErrorrstrcompile_node)r%rr'Z	with_treerrooterrrcompile_pattern7s zPatternCompiler.compile_patternc
s|jjjkr|jd}|jjjkrzfdd|jdddD}t|dkrX|dStjdd|Dddd}|S|jjj	krʇfd	d|jD}t|dkr|dStj|gddd}|S|jjj
kr|jdd}t|}|S|jjj
kstd}|j}t|d
krR|djtjkrR|dj}|dd}d}t|dkr|djjjkr|d}|dd}||}|dk	r|jjjkst|j}	|	d}
|
jtjkrd}tj}n|
jtjkrd}tj}np|
jtjkr^|	djtjkstt|	dks.t|	d}}t|	d
krh|	d
}n
dsht|dks||dkr|}tj|gg||d}|dk	r||_|S)zXCompiles a node, recursively.

        This is one big switch on the node type.
        rcsg|]}|qSrr).0Zchr%rr
<listcomp>Osz0PatternCompiler.compile_node.<locals>.<listcomp>NrcSsg|]
}|gqSrr)r/arrrr1Rsminmaxcsg|]}|qSrr-r.r0rrr1Vs)r7r9F)rr"ZMatcherchildrenZAlternativeslenr	WildcardPatternoptimizeZAlternativeZNegatedUnit
compile_basicZNegatedPatternZUnitAssertionErrorrEQUALrZRepeaterSTARZHUGEPLUSLBRACERBRACEget_intname)
r%nodeZaltspZunitspatternrFnodesrepeatr:Zchildr5r6rr0rr)Csh

 
"


zPatternCompiler.compile_nodecCsnt|dkst|d}|jtjkrDtt|j}t	
t||S|jtjkr|j}|
r|tkrttd||ddrtdt	
t|S|dkrd}n,|dst|j|d}|dkrtd||ddr||djdg}nd}t	||SnV|jdkr ||dS|jd	kr\|dks:t||d}t	j|ggddd
Sdsjt|dS)NrrzInvalid token: %rzCan't have details for tokenany_zInvalid symbol: %r([r4F)r;r?rrSTRINGr(rZ
evalStringrr	ZLeafPattern_type_of_literalNAMEisupper	TOKEN_MAPr
startswithgetattrr#r)r:ZNodePatternr<)r%rJrKrGrrZcontent
subpatternrrrr>s<
zPatternCompiler.compile_basiccCs|jtjkstt|jSN)rrNUMBERr?intr)r%rGrrrrEszPatternCompiler.get_int)N)FF)N)rr
rr&r,r)r>rErrrrr &s


G
#r )rRrPrYZTOKENcCs.|drtjS|tjkr&tj|SdSdS)Nr)isalpharrRrZopmap)rrrrrQs


rQcCs>|\}}}}|s||jkr*tj|||dStj|||dSdS)z9Converts raw node information to a Node or Leaf instance.)contextN)Z
number2symbolr	ZNodeZLeaf)rZ
raw_node_inforrr\r:rrrr$sr$cCst|SrX)r r,)rIrrrr,sr,)__doc__
__author__rZpgen2rrrrrrr	r
	Exceptionrrobjectr rRrPrYrTrQr$r,rrrr<module>s" 
		

Zerion Mini Shell 1.0