Your IP : 3.15.12.133


Current Path : /lib64/python2.7/lib2to3/
Upload File :
Current File : //lib64/python2.7/lib2to3/patcomp.pyc

�
{fc@s�dZdZddlZddlmZmZmZmZmZm	Z	ddl
mZddl
mZde
fd	��YZd
�Zdefd��YZiejd
6ejd6ejd6dd6Zd�Zd�Zd�ZdS(s�Pattern compiler.

The grammar is taken from PatternGrammar.txt.

The compiler compiles a pattern to a pytree.*Pattern instance.
s#Guido van Rossum <guido@python.org>i����Ni(tdrivertliteralsttokenttokenizetparsetgrammar(tpytree(tpygramtPatternSyntaxErrorcBseZRS((t__name__t
__module__(((s'/usr/lib64/python2.7/lib2to3/patcomp.pyRsc	cswttjtjtjf�}tjtj|�j�}x7|D]/}|\}}}}}||kr@|Vq@q@WdS(s6Tokenizes a string suppressing significant whitespace.N(	tsetRtNEWLINEtINDENTtDEDENTRtgenerate_tokenstStringIOtreadline(	tinputtskipttokenst	quintuplettypetvaluetstarttendt	line_text((s'/usr/lib64/python2.7/lib2to3/patcomp.pyttokenize_wrappers
tPatternCompilercBsAeZdd�Zeed�Zd�Zdd�Zd�ZRS(cCs�|dkr'tj|_tj|_n'tj|�|_tj|j�|_tj	|_
tj|_tj
|jdt�|_dS(s^Initializer.

        Takes an optional alternative filename for the pattern grammar.
        tconvertN(tNoneRtpattern_grammarRtpattern_symbolstsymsRtload_grammartSymbolstpython_grammart	pygrammartpython_symbolstpysymstDrivertpattern_convert(tselftgrammar_file((s'/usr/lib64/python2.7/lib2to3/patcomp.pyt__init__(scCs}t|�}y|jj|d|�}Wn(tjk
rR}tt|���nX|rl|j|�|fS|j|�SdS(s=Compiles a pattern string to a nested pytree.*Pattern object.tdebugN(RRtparse_tokensRt
ParseErrorRtstrtcompile_node(R*RR-t	with_treeRtrootte((s'/usr/lib64/python2.7/lib2to3/patcomp.pytcompile_pattern7scCs�|j|jjkr%|jd}n|j|jjkr�g|jddd�D]}|j|�^qQ}t|�dkr�|dStjg|D]}|g^q�dddd�}|j	�S|j|jj
kr=g|jD]}|j|�^q�}t|�dkr|dStj|gdddd�}|j	�S|j|jjkr�|j|jd�}tj
|�}|j	�S|j|jjks�t�d}|j}	t|	�dkr�|	djtjkr�|	dj}|	d}	nd}
t|	�dkr5|	dj|jjkr5|	d}
|	d }	n|j|	|
�}|
dk	r�|
j|jjksnt�|
j}|d}|jtjkr�d}
tj}n�|jtjkr�d}
tj}n�|jtjkrQ|djtjks�t�t|�d
kst�|j|d�}
}t|�d	kr]|j|d�}q]nts]t�|
dksu|dkr�|j	�}tj|ggd|
d|�}q�n|dk	r�||_n|j	�S(sXCompiles a node, recursively.

        This is one big switch on the node type.
        iNiitmintmaxii����i(ii(RR!tMatchertchildrentAlternativesR1tlenRtWildcardPatterntoptimizetAlternativetNegatedUnitt
compile_basictNegatedPatterntUnittAssertionErrorRRtEQUALRtRepeatertSTARtHUGEtPLUStLBRACEtRBRACEtget_inttFalsetname(R*tnodetchtaltstatptunitstpatternRMtnodestrepeatR9tchildR6R7((s'/usr/lib64/python2.7/lib2to3/patcomp.pyR1Csh21
%

	(

+

	
'cCs�t|�dkst�|d}|jtjkrbttj|j��}t	j
t|�|�S|jtjkrp|j}|j
�r�|tkr�td|��n|dr�td��nt	j
t|�S|dkr�d}nF|jd�s-t|j|d�}|dkr-td|��q-n|drW|j|djd�g}nd}t	j||�Sns|jdkr�|j|d�S|jd	kr�|dks�t�|j|d�}t	j|ggd
ddd�Sts�t|��dS(NiisInvalid token: %rsCan't have details for tokentanyt_sInvalid symbol: %rt(t[R6R7(R;RCRRtSTRINGtunicodeRt
evalStringRRtLeafPatternt_type_of_literaltNAMEtisuppert	TOKEN_MAPRRt
startswithtgetattrR'R1R9tNodePatternR<RL(R*RURVRNRRtcontentt
subpattern((s'/usr/lib64/python2.7/lib2to3/patcomp.pyR@�s<
	
	
 cCs%|jtjkst�t|j�S(N(RRtNUMBERRCtintR(R*RN((s'/usr/lib64/python2.7/lib2to3/patcomp.pyRK�sN(	R	R
RR,RLR5R1R@RK(((s'/usr/lib64/python2.7/lib2to3/patcomp.pyR&s
	G#RaR\RitTOKENcCs9|dj�rtjS|tjkr1tj|SdSdS(Ni(tisalphaRRaRtopmapR(R((s'/usr/lib64/python2.7/lib2to3/patcomp.pyR`�s
cCsW|\}}}}|s'||jkr=tj||d|�Stj||d|�SdS(s9Converts raw node information to a Node or Leaf instance.tcontextN(t
number2symbolRtNodetLeaf(Rt
raw_node_infoRRRnR9((s'/usr/lib64/python2.7/lib2to3/patcomp.pyR)�scCst�j|�S(N(RR5(RT((s'/usr/lib64/python2.7/lib2to3/patcomp.pyR5�s(t__doc__t
__author__Rtpgen2RRRRRRtRRt	ExceptionRRtobjectRRaR\RiRRcR`R)R5(((s'/usr/lib64/python2.7/lib2to3/patcomp.pyt<module>	s.	
�



				

?>