OwlCyberSecurity - MANAGER
Edit File: patcomp.cpython-38.pyc
U ����e5d�����������������������@���s����d�Z�dZddlZddlmZmZmZmZmZm Z �ddl mZ�ddl mZ�G�dd ��d e �Zd d��ZG�dd ��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���e�Zd�ZdS�)�PatternSyntaxErrorN)�__name__� __module__�__qualname__��r���r����'/usr/lib64/python3.8/lib2to3/patcomp.pyr������s���r���c����������� ������c���sL���t�jt�jt�jh}t�t�|��j�}|D�] }|\}}}}}||kr&|V��q&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_textr���r���r����tokenize_wrapper���s����r���c�������������������@���s:���e�Zd�Zd dd�Zddd�Zdd��Zdd d �Zdd��ZdS�)�PatternCompilerNc�����������������C���sZ���|dkrt�j|�_t�j|�_nt�|�|�_t��|�j�|�_t�j|�_ t�j |�_tj|�jt d�|�_dS�)z^Initializer. Takes an optional alternative filename for the pattern grammar. N)Zconvert)r ���Zpattern_grammarr���Zpattern_symbols�symsr���Zload_grammarZSymbolsZpython_grammarZ pygrammarZpython_symbols�pysymsZDriver�pattern_convert)�selfZgrammar_filer���r���r����__init__(���s���� zPatternCompiler.__init__Fc�������������� ���C���sp���t�|�}z|�jj||d�}W�n2�tjk rN�}�ztt|��d�W�5�d}~X�Y�nX�|rb|��|�|fS�|��|�S�dS�)z=Compiles a pattern string to a nested pytree.*Pattern object.)�debugN)r���r���Zparse_tokensr���Z ParseErrorr����str�compile_node)r$���r���r&���Z with_treer����root�er���r���r����compile_pattern7���s���� zPatternCompiler.compile_patternc����������� ���������s���|j���jjkr|jd�}|j���jjkrz��fdd�|jddd��D��}t|�dkrX|d�S�tjdd��|D��ddd�}|���S�|j���jj krʇ�fd d�|jD��}t|�dkr�|d�S�tj|gddd�}|���S�|j���jj kr����|jdd���}t�|�}|���S�|j���jj k�st�d}|j}t|�d k�rR|d�j�tjk�rR|d�j}|dd��}d}t|�dk�r�|d�j���jjk�r�|d�}|dd��}���||�}|dk �r�|j���jjk�s�t�|j} | d�} | j�tjk�r�d}tj}n�| j�tjk�r�d}tj}np| j�tjk�r^| d�j�tjk�st�t| �dk�s.t����| d���}}t| �d k�rh���| d ��}n d�sht�|dk�s||dk�r�|���}tj|gg||d�}|dk �r�||_|���S�)zXCompiles a node, recursively. This is one big switch on the node type. r���c��������������������s���g�|�]}����|��qS�r����r(�����.0Zch�r$���r���r���� <listcomp>O���s�����z0PatternCompiler.compile_node.<locals>.<listcomp>N����r���c�����������������S���s���g�|�] }|g�qS�r���r���)r.����ar���r���r���r0���R���s�������min�maxc��������������������s���g�|�]}����|��qS�r���r,���r-���r/���r���r���r0���V���s������������)r6�������r8���F)r���r!���ZMatcher�childrenZAlternatives�lenr ����WildcardPattern�optimizeZAlternativeZNegatedUnit� compile_basicZNegatedPatternZUnit�AssertionErrorr����EQUALr���ZRepeater�STARZHUGE�PLUS�LBRACE�RBRACE�get_int�name) r$����nodeZalts�pZunits�patternrE����nodes�repeatr9���Zchildr4���r5���r���r/���r���r(���C���sh���� " zPatternCompiler.compile_nodec�����������������C���sn��t�|�dkst�|d�}|jtjkrDtt�|j��}t � t|�|�S�|jtjk�r|j}|� ��r�|tkrttd|���|dd���r�td��t � t|��S�|dkr�d�}n,|�d�s�t|�j|d��}|d�kr�td|���|dd���r�|��|d�jd��g}nd�}t �||�S�nV|jdk�r |��|d��S�|jd k�r\|d�k�s:t�|��|d��}t j|ggddd �S�d�sjt|��d�S�)Nr���r���zInvalid token: %rzCan't have details for token�any�_zInvalid symbol: %r�(�[r3���F)r:���r>���r���r����STRINGr'���r���Z evalStringr���r ���ZLeafPattern�_type_of_literal�NAME�isupper� TOKEN_MAPr���� startswith�getattrr"���r(���r9���ZNodePatternr;���)r$���rI���rJ���rF���r���r���Zcontent� subpatternr���r���r���r=�������s<���� zPatternCompiler.compile_basicc�����������������C���s���|j�tjkst�t|j�S��N)r���r����NUMBERr>����intr���)r$���rF���r���r���r���rD�������s����zPatternCompiler.get_int)N)FF)N)r���r ���r���r%���r+���r(���r=���rD���r���r���r���r���r ���&���s ��� G #r ���)rQ���rO���rX���ZTOKENc�����������������C���s.���|�d�����rtjS�|�tjkr&tj|��S�d�S�d�S�)Nr���)�isalphar���rQ���r���Zopmap)r���r���r���r���rP�������s ���� rP���c�����������������C���s>���|\}}}}|s||�j�kr*tj|||d�S�tj|||d�S�dS�)z9Converts raw node information to a Node or Leaf instance.)�contextN)Z number2symbolr ���ZNodeZLeaf)r���Z raw_node_infor���r���r[���r9���r���r���r���r#�������s����r#���c�����������������C���s���t����|��S�rW���)r ���r+���)rH���r���r���r���r+�������s����r+���)�__doc__� __author__r���Zpgen2r���r���r���r���r���r�����r ���r ���� Exceptionr���r����objectr ���rQ���rO���rX���rS���rP���r#���r+���r���r���r���r����<module>���s"��� ��