Mini Shell

Direktori : /proc/self/root/lib64/python3.9/lib2to3/__pycache__/
Upload File :
Current File : //proc/self/root/lib64/python3.9/lib2to3/__pycache__/patcomp.cpython-39.pyc

a

�DOg��@s�dZdZddlZddlmZmZmZmZmZm	Z	ddl
mZddl
mZGdd	�d	e
�Zd
d�ZGdd
�d
e�Zejejejdd�Zdd�Zdd�Zdd�ZdS)z�Pattern 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�)�driver�literals�token�tokenize�parse�grammar)�pytree)�pygramc@seZdZdS)�PatternSyntaxErrorN)�__name__�
__module__�__qualname__�rr�'/usr/lib64/python3.9/lib2to3/patcomp.pyrsrc	csLtjtjtjh}t�t�|�j�}|D] }|\}}}}}||vr&|Vq&dS)z6Tokenizes a string suppressing significant whitespace.N)	r�NEWLINE�INDENT�DEDENTr�generate_tokens�io�StringIO�readline)	�input�skip�tokensZ	quintuple�type�value�start�endZ	line_textrrr�tokenize_wrappersrc@s:eZdZd
dd�Zddd�Zdd�Zdd	d
�Zdd�ZdS)�PatternCompilerNcCsZ|durtj|_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_symbols�symsrZload_grammarZSymbolsZpython_grammarZ	pygrammarZpython_symbols�pysymsZDriver�pattern_convert)�selfZgrammar_filerrr�__init__(s
zPatternCompiler.__init__Fc
Csrt|�}z|jj||d�}Wn4tjyP}ztt|��d�WYd}~n
d}~00|rd|�|�|fS|�|�SdS)z=Compiles a pattern string to a nested pytree.*Pattern object.)�debugN)rrZparse_tokensrZ
ParseErrorr�str�compile_node)r%rr'Z	with_treer�root�errr�compile_pattern7s$zPatternCompiler.compile_patternc
s�|j�jjkr|jd}|j�jjkrz�fdd�|jddd�D�}t|�dkrX|dStjdd�|D�ddd�}|��S|j�jj	krʇfd	d�|jD�}t|�dkr�|dStj|gddd�}|��S|j�jj
kr���|jdd��}t�|�}|��S|j�jj
k�sJ�d}|j}t|�d
k�rR|djtjk�rR|dj}|dd�}d}t|�dk�r�|dj�jjk�r�|d}|dd�}��||�}|du�r�|j�jjk�s�J�|j}	|	d}
|
jtjk�r�d}tj}n�|
jtjk�r�d}tj}np|
jtjk�r^|	djtjk�sJ�t|	�dv�s.J���|	d�}}t|	�d
k�rh��|	d
�}n
d�shJ�|dk�s||dk�r�|��}tj|gg||d�}|du�r�||_|��S)zXCompiles a node, recursively.

        This is one big switch on the node type.
        rcsg|]}��|��qSr�r)��.0Zch�r%rr�
<listcomp>O�z0PatternCompiler.compile_node.<locals>.<listcomp>N�rcSsg|]
}|g�qSrr)r/�arrrr1Rr2��min�maxcsg|]}��|��qSrr-r.r0rrr1Vr2����)r8�r:F)rr"ZMatcher�childrenZAlternatives�lenr	�WildcardPattern�optimizeZAlternativeZNegatedUnit�
compile_basicZNegatedPatternZUnitr�EQUALrZRepeater�STARZHUGE�PLUS�LBRACE�RBRACE�get_int�name)
r%�nodeZalts�pZunits�patternrF�nodes�repeatr;�childr6r7rr0rr)Csh

 
"


zPatternCompiler.compile_nodecCsnt|�dksJ�|d}|jtjkrDtt�|j��}t�	t
|�|�S|jtjk�r|j}|��r�|t
vrttd|��|dd�r�td��t�	t
|�S|dkr�d}n,|�d�s�t|j|d�}|dur�td|��|dd�r�|�|djd�g}nd}t�||�SnV|jdk�r |�|d�S|jd	k�r\|du�s:J�|�|d�}tj|ggddd
�Sd�sjJ|��dS)NrrzInvalid token: %rzCan't have details for token�any�_zInvalid symbol: %r�(�[r5F)r<rr�STRINGr(rZ
evalStringrr	ZLeafPattern�_type_of_literal�NAME�isupper�	TOKEN_MAPr�
startswith�getattrr#r)r;ZNodePatternr=)r%rJrKrGrrZcontent�
subpatternrrrr?�s<
zPatternCompiler.compile_basiccCs|jtjksJ�t|j�S�N)rr�NUMBER�intr)r%rGrrrrE�szPatternCompiler.get_int)N)FF)N)rr
rr&r,r)r?rErrrrr &s


G
#r )rSrQrZZTOKENcCs.|d��rtjS|tjvr&tj|SdSdS)Nr)�isalpharrSrZopmap)rrrrrR�s


rRcCs>|\}}}}|s||jvr*tj|||d�Stj|||d�SdS)z9Converts raw node information to a Node or Leaf instance.)�contextN)Z
number2symbolr	ZNodeZLeaf)rZ
raw_node_inforrr]r;rrrr$�sr$cCst��|�SrY)r r,)rIrrrr,�sr,)�__doc__�
__author__rZpgen2rrrrrr�r	r
�	Exceptionrr�objectr rSrQrZrUrRr$r,rrrr�<module>s" 
�		

Zerion Mini Shell 1.0