MINI MINI MANI MO

Path : /lib64/python3.6/lib2to3/__pycache__/
File Upload :
Current File : //lib64/python3.6/lib2to3/__pycache__/patcomp.cpython-36.pyc

3


 \@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/lib64/python3.6/lib2to3/patcomp.pyrsrc	csPtjtjtjh}tjtj|j}x(|D] }|\}}}}}||kr(|Vq(WdS)z6Tokenizes a string suppressing significant whitespace.N)	rNEWLINEINDENTDEDENTrgenerate_tokensioStringIOreadline)	inputskiptokensZ	quintupletypevaluestartendZ	line_textrrrtokenize_wrappers
rc@s:eZdZd
ddZdddZddZdd	d
ZddZdS)PatternCompilerNcCsZ|dkrtj|_tj|_ntj||_tj|j|_tj|_	tj
|_tj|jt
d|_dS)z^Initializer.

        Takes an optional alternative filename for the pattern grammar.
        N)Zconvert)r
Zpattern_grammarrZpattern_symbolssymsrZload_grammarZSymbolsZpython_grammarZ	pygrammarZpython_symbolspysymsZDriverpattern_convert)selfZgrammar_filerrr__init__(s
zPatternCompiler.__init__FcCsnt|}y|jj||d}Wn0tjk
rL}ztt|WYdd}~XnX|r`|j||fS|j|SdS)z=Compiles a pattern string to a nested pytree.*Pattern object.)debugN)rrZparse_tokensrZ
ParseErrorrstrcompile_node)r$rr&Z	with_treerrooterrrcompile_pattern7szPatternCompiler.compile_patternc
s|jjjkr|jd}|jjjkrzfdd|jdddD}t|dkrX|dStjdd|Dddd}|jS|jjj	krʇfd	d|jD}t|dkr|dStj|gddd}|jS|jjj
krj|jdd}tj|}|jS|jjj
kstd}|j}t|d
krR|djtjkrR|dj}|dd}d}t|dkr|d
jjjkr|d}|dd}j||}|dk	r|jjjkst|j}	|	d}
|
jtjkrd}tj}n|
jtjkrd}tj}np|
jtjkr^|	djtjkstt|	dks.tj|	d}}t|	dkrhj|	d
}n
dsht|dks||dkr|j}tj|gg||d}|dk	r||_|jS)zXCompiles a node, recursively.

        This is one big switch on the node type.
        rcsg|]}j|qSr)r().0ch)r$rr
<listcomp>Osz0PatternCompiler.compile_node.<locals>.<listcomp>NrcSsg|]
}|gqSrr)r,arrrr.Rs)minmaxcsg|]}j|qSr)r()r,r-)r$rrr.VsFr5r5r5)r3r4)rr!ZMatcherchildrenZAlternativeslenr	WildcardPatternoptimizeZAlternativeZNegatedUnit
compile_basicZNegatedPatternZUnitAssertionErrorrEQUALrZRepeaterSTARZHUGEPLUSLBRACERBRACEget_intname)
r$nodeZaltspZunitspatternrBnodesrepeatr6Zchildr1r2r)r$rr(Csh

 
"


zPatternCompiler.compile_nodecCsnt|dkst|d}|jtjkrDttj|j}t	j
t||S|jtjkr|j}|j
r|tkrttd||ddrtdt	j
t|S|dkrd}n,|jdst|j|d}|dkrtd||ddr|j|djdg}nd}t	j||SnV|jdkr |j|dS|jd	kr\|dks:t|j|d}t	j|ggddd
Sdsjt|dS)NrrzInvalid token: %rzCan't have details for tokenany_zInvalid symbol: %r([)r1r2F)r7r;rrSTRINGr'rZ
evalStringrr	ZLeafPattern_type_of_literalNAMEisupper	TOKEN_MAPr
startswithgetattrr"r(r6ZNodePatternr8)r$rFrGrCrrZcontent
subpatternrrrr:s<
zPatternCompiler.compile_basiccCs|jtjkstt|jS)N)rrNUMBERr;intr)r$rCrrrrAszPatternCompiler.get_int)N)FF)N)rr
rr%r+r(r:rArrrrr &s


G
#r )rNrLrTZTOKENcCs.|djrtjS|tjkr&tj|SdSdS)Nr)isalpharrNrZopmap)rrrrrMs


rMcCs>|\}}}}|s||jkr*tj|||dStj|||dSdS)z9Converts raw node information to a Node or Leaf instance.)contextN)Z
number2symbolr	ZNodeZLeaf)rZ
raw_node_inforrrWr6rrrr#sr#cCstj|S)N)r r+)rErrrr+sr+)__doc__
__author__rZpgen2rrrrrrr	r
	Exceptionrrobjectr rNrLrTrPrMr#r+rrrr<module>	s  
		

OHA YOOOO