<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet"
        integrity="sha384-GLhlTQ8iRABdZLl6O3oVMWSktQOp6b7In1Zl3/Jr59b6EGGoI1aFkw7cmDA6j6gD" crossorigin="anonymous">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.3.0/css/all.min.css"
        integrity="sha512-SzlrxWUlpfuzQ+pcUCosxcglQRNAq/DZjVsC0lE40xsADsfeQoEypE+enwcOiGjk/bSuGGKHEyjSoQ1zVisanQ=="
        crossorigin="anonymous" referrerpolicy="no-referrer" />
</head>
</html>

]                 @   s  d  Z  d d l Z d d l Z d d l m Z m Z m Z m Z m Z m	 Z	 d d l
 m Z d d l
 m Z e j j e j j e  d  Z Gd d	   d	 e  Z d
 d   Z Gd d   d e  Z d e j d e j d e j d d i Z d d   Z d d   Z d d   Z d S)z#Guido van Rossum <guido@python.org>    N   )driverliteralstokentokenizeparsegrammar)pytree)pygramzPatternGrammar.txtc               @   s   e  Z d  Z d S)PatternSyntaxErrorN)__name__
__module____qualname__ r   r   ,/opt/alt/python35/lib64/python3.5/patcomp.pyr      s   r   c       	      c   sn   t  j t  j t  j h } t j t j |   j  } x4 | D], } | \ } } } } } | | k r: | Vq: Wd  S)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               @   sX   e  Z d  Z e d d  Z d d d d  Z d d   Z d d	 d
  Z d d   Z d S)PatternCompilerc             C   s^   t  j |  |  _ t j |  j  |  _ t j |  _ t j |  _	 t  j
 |  j d t |  _  d  S)Nconvert)r   Zload_grammarr   r
   ZSymbolssymsZpython_grammarZ	pygrammarZpython_symbolspysymsZDriverpattern_convert)selfZgrammar_filer   r   r   __init__-   s
    zPatternCompiler.__init__Fc             C   s   t  |  } y |  j j | d | } Wn: t j k
 rd } z t t |    WYd  d  } ~ Xn X| r~ |  j |  | f S|  j |  Sd  S)Ndebug)r   r   Zparse_tokensr   Z
ParseErrorr   strcompile_node)r%   r   r'   Z	with_treer   rooter   r   r   compile_pattern8   s    %zPatternCompiler.compile_patternc                s6  | j    j j k r" | j d } | j    j j k r   f d d   | j d  d  d  D } t |  d k rz | d St j d d   | D d d d d } | j   S| j    j j	 k r  f d	 d   | j D } t |  d k r | d St j | g d d d d } | j   S| j    j j
 k ri  j | j d d    } t j |  } | j   Sd  } | j } t |  d
 k r| d j  t j k r| d j } | d d   } d  } t |  d k r| d j    j j k r| d } | d  d  }   j | |  } | d  k	 r| j }	 |	 d }
 |
 j  t j k r]d } t j } nu |
 j  t j k rd } t j } nQ |
 j  t j k r  j |	 d  } } t |	  d k r  j |	 d
  } n  | d k s| d k r| j   } t j | g g d | d | } | d  k	 r,| | _ | j   S)Nr   c                s   g  |  ] }   j  |   q Sr   )r)   ).0ch)r%   r   r   
<listcomp>P   s   	 z0PatternCompiler.compile_node.<locals>.<listcomp>   r   c             S   s   g  |  ] } | g  q Sr   r   )r-   ar   r   r   r/   S   s   	 minmaxc                s   g  |  ] }   j  |   q Sr   )r)   )r-   r.   )r%   r   r   r/   W   s   	       r6   r6   )r   r"   ZMatcherchildrenZAlternativeslenr	   WildcardPatternoptimizeZAlternativeZNegatedUnitcompile_basicZNegatedPatternr   EQUALr   ZRepeaterSTARZHUGEPLUSLBRACEget_intname)r%   nodeZaltspZunitspatternrA   nodesrepeatr7   Zchildr2   r3   r   )r%   r   r)   D   s^    )(


	(+
	
!	zPatternCompiler.compile_nodeNc             C   s  | d } | j  t j k rJ t t j | j   } t j t	 |  |  S| j  t j
 k rX| j } | j   r | t k r t d |   | d d   r t d   t j t |  S| d k r d  } n@ | j d  st |  j | d   } | d  k rt d |   | d d   r?|  j | d j d  g } n d  } t j | |  Sna | j d k rx|  j | d  S| j d	 k r|  j | d  } t j | g g d
 d d d Sd  S)Nr   zInvalid token: %rr   zCan't have details for tokenany_zInvalid symbol: %r([r2   r3   )r   r   STRINGr(   r   Z
evalStringr   r	   ZLeafPattern_type_of_literalNAMEisupper	TOKEN_MAPr   
startswithgetattrr#   r)   r7   ZNodePatternr9   )r%   rE   rF   rB   r   r   Zcontent
subpatternr   r   r   r;      s8    
		 zPatternCompiler.compile_basicc             C   s   t  | j  S)N)intr   )r%   rB   r   r   r   r@      s    zPatternCompiler.get_int)	r   r   r   _PATTERN_GRAMMAR_FILEr&   r,   r)   r;   r@   r   r   r   r   r    +   s
   G#r    rM   rK   NUMBERZTOKENc             C   s9   |  d j    r t j S|  t j k r1 t j |  Sd  Sd  S)Nr   )isalphar   rM   r   Zopmap)r   r   r   r   rL      s
    rL   c             C   sW   | \ } } } } | s' | |  j  k r= t j | | d | St j | | d | Sd  S)Ncontext)Znumber2symbolr	   ZNodeZLeaf)r   Zraw_node_infor   r   rW   r7   r   r   r   r$      s    r$   c             C   s   t    j |   S)N)r    r,   )rD   r   r   r   r,      s    r,   )
__author__r   osZpgen2r   r   r   r   r   r    r	   r
   pathjoindirname__file__rT   	Exceptionr   r   objectr    rM   rK   rU   rO   rL   r$   r,   r   r   r   r   <module>   s"   .	
					