Plan 9 from Bell Labs’s /usr/web/sources/contrib/jas/root/sys/lib/python2.7/lib2to3/patcomp.pyo

Copyright © 2021 Plan 9 Foundation.
Distributed under the MIT License.
Download the Plan 9 distribution.


��Qc@sdZdZddlZddlZddlmZmZmZmZm	Z	m
Z
ddlmZddlm
Z
ejjejje�d�Zd	efd
��YZd�Zdefd
��YZiejd6ejd6ejd6dd6Zd�Zd�Zd�ZdS(s�Pattern compiler.

The grammer is taken from PatternGrammar.txt.

The compiler compiles a pattern to a pytree.*Pattern instance.
s#Guido van Rossum <[email protected]>i�Ni(tdrivertliteralsttokenttokenizetparsetgrammar(tpytree(tpygramsPatternGrammar.txttPatternSyntaxErrorcBseZRS((t__name__t
__module__(((s%/sys/lib/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%/sys/lib/python2.7/lib2to3/patcomp.pyttokenize_wrapper!s
tPatternCompilercBsAeZed�Zeed�Zd�Zdd�Zd�Z	RS(cCs^tj|�|_tj|j�|_tj|_tj|_	tj
|jdt�|_dS(s^Initializer.

        Takes an optional alternative filename for the pattern grammar.
        tconvertN(Rtload_grammarRRtSymbolstsymstpython_grammart	pygrammartpython_symbolstpysymstDrivertpattern_convert(tselftgrammar_file((s%/sys/lib/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%/sys/lib/python2.7/lib2to3/patcomp.pytcompile_pattern8sc	CsT|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	�Sd}|j}	t|	�dkr�|	djtjkr�|	dj}|	d}	nd}
t|	�dkr|	dj|jjkr|	d}
|	d }	n|j|	|
�}|
dk	r2|
j}|d}|jtjkrod}
tj}nx|jtjkr�d}
tj}nT|jtjkr�j|d�}
}t|�d	kr�j|d�}q�|
dks�dkr2|j	�}tj|ggd|
d|�}q2n|dk	rJ||_n|j	�S(
sXCompiles a node, recursively.

        This is one big switch on the node type.
        iNiitmintmaxii�i(RR tMatchertchildrentAlternativesR.tlenRtWildcardPatterntoptimizetAlternativetNegatedUnitt
compile_basictNegatedPatterntNoneRtEQUALRtRepeatertSTARtHUGEtPLUStLBRACEtget_inttname(R'tnodetchtaltstatptunitstpatternRGtnodestrepeatR6tchildR3R4((s%/sys/lib/python2.7/lib2to3/patcomp.pyR.Ds^21
%

	(

+

	
'cCs�|d}|jtjkrJttj|j��}tjt	|�|�S|jtj
krX|j}|j�r�|tkr�t
d|��n|dr�t
d��ntjt|�S|dkr�d}nF|jd�st|j|d�}|dkrt
d|��qn|dr?|j|djd�g}nd}tj||�Sna|jdkrx|j|d�S|jd	kr�|j|d�}tj|ggd
ddd�SdS(NisInvalid token: %risCan't have details for tokentanyt_sInvalid symbol: %rt(t[R3R4(RRtSTRINGtunicodeRt
evalStringRRtLeafPatternt_type_of_literaltNAMEtisuppert	TOKEN_MAPRR?t
startswithtgetattrR$R.R6tNodePatternR9(R'RORPRHRRtcontentt
subpattern((s%/sys/lib/python2.7/lib2to3/patcomp.pyR=�s8
	
	
 cCs
t|j�S(N(tintR(R'RH((s%/sys/lib/python2.7/lib2to3/patcomp.pyRF�sN(
R	R
t_PATTERN_GRAMMAR_FILER)tFalseR2R.R?R=RF(((s%/sys/lib/python2.7/lib2to3/patcomp.pyR+s
	G#R[RVtNUMBERtTOKENcCs9|dj�rtjS|tjkr1tj|SdSdS(Ni(tisalphaRR[RtopmapR?(R((s%/sys/lib/python2.7/lib2to3/patcomp.pyRZ�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_infoRRRjR6((s%/sys/lib/python2.7/lib2to3/patcomp.pyR&�scCst�j|�S(N(RR2(RN((s%/sys/lib/python2.7/lib2to3/patcomp.pyR2�s( t__doc__t
__author__tosRtpgen2RRRRRRtRRtpathtjointdirnamet__file__Rdt	ExceptionRRtobjectRR[RVRfR?R]RZR&R2(((s%/sys/lib/python2.7/lib2to3/patcomp.pyt<module>	s$.		
�


				

Bell Labs OSI certified Powered by Plan 9

(Return to Plan 9 Home Page)

Copyright © 2021 Plan 9 Foundation. All Rights Reserved.
Comments to [email protected].