Viewing File: /opt/alt/python35/lib64/python3.5/lib2to3/__pycache__/patcomp.cpython-35.opt-1.pyc



Yf@sdZdZddlZddlZddlmZmZmZmZm	Z	m
Z
ddlmZddlm
Z
ejjejjedZGd	d
d
eZddZGd
ddeZdejdejdejddiZddZddZddZdS)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)pygramzPatternGrammar.txtc@seZdZdS)PatternSyntaxErrorN)__name__
__module____qualname__rr4/opt/alt/python35/lib64/python3.5/lib2to3/patcomp.pyrsrc	csntjtjtjh}tjtj|j}x4|D],}|\}}}}}||kr:|Vq:WdS)z6Tokenizes a string suppressing significant whitespace.N)	rNEWLINEINDENTDEDENTrgenerate_tokensioStringIOreadline)	inputskiptokensZ	quintupletypevaluestartendZ	line_textrrrtokenize_wrapper!s
rc@sXeZdZeddZddddZddZdd	d
ZddZdS)
PatternCompilercCs^tj||_tj|j|_tj|_tj|_	tj
|jdt|_dS)z^Initializer.

        Takes an optional alternative filename for the pattern grammar.
        ZconvertN)rZload_grammarrr
ZSymbolssymsZpython_grammarZ	pygrammarZpython_symbolspysymsZDriverpattern_convert)selfZgrammar_filerrr__init__-s
zPatternCompiler.__init__FcCst|}y|jj|d|}Wn:tjk
rd}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_pattern8s%zPatternCompiler.compile_patternc
s6|jjjkr"|jd}|jjjkrfdd|jdddD}t|dkrz|dStjdd|Dddd	d}|jS|jjj	krfd
d|jD}t|dkr|dStj|gddd	d}|jS|jjj
krij|jdd}tj|}|jSd}|j}t|dkr|djt
jkr|dj}|dd}d}t|dkr|d
jjjkr|d}|dd}j||}|dk	r|j}	|	d}
|
jt
jkr]d}tj}nu|
jt
jkrd}tj}nQ|
jt
jkrj|	d}}t|	dkrj|	d}n|dks|dkr|j}tj|ggd|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>Ps	z0PatternCompiler.compile_node.<locals>.<listcomp>NrcSsg|]}|gqSrr)r,arrrr.Ss	minmaxcsg|]}j|qSr)r()r,r-)r$rrr.Ws	r5r5)rr!ZMatcherchildrenZAlternativeslenr	WildcardPatternoptimizeZAlternativeZNegatedUnit
compile_basicZNegatedPatternrEQUALrZRepeaterSTARZHUGEPLUSLBRACEget_intname)
r$nodeZaltspZunitspatternr@nodesrepeatr6Zchildr1r2r)r$rr(Ds^
)(


	(
+
	
!	zPatternCompiler.compile_nodeNcCs|d}|jtjkrJttj|j}tjt	||S|jtj
krX|j}|jr|tkrt
d||ddrt
dtjt|S|dkrd}n@|jdst|j|d}|dkrt
d||ddr?|j|djdg}nd}tj||Sna|jdkrx|j|dS|jd	kr|j|d}tj|ggd
dddSdS)NrzInvalid token: %rrzCan't have details for tokenany_zInvalid symbol: %r([r1r2)rrSTRINGr'rZ
evalStringrr	ZLeafPattern_type_of_literalNAMEisupper	TOKEN_MAPr
startswithgetattrr"r(r6ZNodePatternr8)r$rDrErArrZcontent
subpatternrrrr:s8
		 zPatternCompiler.compile_basiccCs
t|jS)N)intr)r$rArrrr?szPatternCompiler.get_int)	rr
r_PATTERN_GRAMMAR_FILEr%r+r(r:r?rrrrr +s
G#r rLrJNUMBERZTOKENcCs9|djrtjS|tjkr1tj|SdSdS)Nr)isalpharrLrZopmap)rrrrrKs
rKcCsW|\}}}}|s'||jkr=tj||d|Stj||d|SdS)z9Converts raw node information to a Node or Leaf instance.contextN)Z
number2symbolr	ZNodeZLeaf)rZ
raw_node_inforrrVr6rrrr#sr#cCstj|S)N)r r+)rCrrrr+sr+)__doc__
__author__rosZpgen2rrrrrrr	r
pathjoindirname__file__rS	Exceptionrrobjectr rLrJrTrNrKr#r+rrrr<module>	s$.	
					
Back to Directory File Manager