<!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>

YfY                 @   s   d  Z  d Z d d g Z d d l Z d d l Z d d l Z d d l Z d d l Z d d l m	 Z	 m
 Z
 m Z m Z m Z Gd d   d e  Z d	 d
   Z d d d d d d d  Z d d   Z d d   Z e d k r e j e e     d S)zZParser driver.

This provides a high-level interface to parse a file into a syntax tree.

z#Guido van Rossum <guido@python.org>Driverload_grammar    N   )grammarparsetokentokenizepgenc               @   sp   e  Z d  Z d d d d  Z d d d  Z d d d  Z d d	 d
  Z d d d d  Z d d d  Z d S)r   Nc             C   s7   | |  _  | d  k r! t j   } | |  _ | |  _ d  S)N)r   logging	getLoggerloggerconvert)selfr   r   r    r   9/opt/alt/python35/lib64/python3.5/lib2to3/pgen2/driver.py__init__   s
    		zDriver.__init__Fc             C   s"  t  j |  j |  j  } | j   d } d } d } } } }	 }
 d } x| D]} | \ } } } }	 }
 | | | f k r| | f | k s t | | f | f   | \ } } | | k  r | d | | 7} | } d } | | k  r| |
 | |  7} | } | t j t j f k rT| | 7} |	 \ } } | j	 d  rQ | d 7} d } qQ | t
 j k rpt j | } | r|  j j d t
 j | | |  | j | | | | f  r| r|  j j d  Pd } |	 \ } } | j	 d  rQ | d 7} d } qQ Wt  j d | | | | f   | j S)	z4Parse a series of tokens and return the syntax tree.r   r   N 
z%s %r (prefix=%r)zStop.zincomplete input)r   ZParserr   r   ZsetupAssertionErrorr   COMMENTNLendswithr   OPZopmapr   debugtok_nameZaddtokenZ
ParseErrorZrootnode)r   tokensr   plinenocolumntypevaluestartendZ	line_textprefixZ	quintupleZs_linenoZs_columnr   r   r   parse_tokens&   sT    
*



	zDriver.parse_tokensc             C   s"   t  j | j  } |  j | |  S)z*Parse a stream and return the syntax tree.)r   generate_tokensreadliner$   )r   streamr   r   r   r   r   parse_stream_rawV   s    zDriver.parse_stream_rawc             C   s   |  j  | |  S)z*Parse a stream and return the syntax tree.)r(   )r   r'   r   r   r   r   parse_stream[   s    zDriver.parse_streamc          
   C   s;   t  j | d |  } z |  j | |  SWd | j   Xd S)z(Parse a file and return the syntax tree.rN)codecsopenr)   close)r   filenameencodingr   r'   r   r   r   
parse_file_   s    zDriver.parse_filec             C   s+   t  j t j |  j  } |  j | |  S)z*Parse a string and return the syntax tree.)r   r%   ioStringIOr&   r$   )r   textr   r   r   r   r   parse_stringg   s    zDriver.parse_string)	__name__
__module____qualname__r   r$   r(   r)   r0   r4   r   r   r   r   r      s   0c             C   sO   t  j j |   \ } } | d k r* d } | | d j t t t j   d S)Nz.txtr   .z.pickle)ospathsplitextjoinmapstrsysversion_info)gtheadtailr   r   r   _generate_pickle_namem   s    rD   zGrammar.txtTFc             C   s   | d k r t  j   } | d k r0 t |   n | } | sL t | |   r | j d |   t j |   } | r | j d |  y | j |  Wq t k
 r } z | j d |  WYd d } ~ Xq Xn t	 j
   } | j |  | S)z'Load the grammar (maybe from a pickle).Nz!Generating grammar tables from %szWriting grammar tables to %szWriting failed: %s)r
   r   rD   _newerinfor	   Zgenerate_grammardumpOSErrorr   ZGrammarload)rA   Zgpsaveforcer   ger   r   r   r   t   s    &c             C   sN   t  j j |   s d St  j j |  s, d St  j j |   t  j j |  k S)z0Inquire whether file a was written since file b.FT)r9   r:   existsgetmtime)abr   r   r   rE      s
    rE   c              G   sf   |  s t  j d d  }  t j d t j d t  j d d  x$ |  D] } t | d d d	 d qB Wd S)
zMain program, when run as a script: produce grammar pickle files.

    Calls load_grammar for each argument, a path to a grammar text file.
    r   Nlevelr'   formatz%(message)srJ   TrK   )r?   argvr
   ZbasicConfigINFOstdoutr   )argsrA   r   r   r   main   s    rX   __main__)__doc__
__author____all__r+   r1   r9   r
   r?   r   r   r   r   r   r	   objectr   rD   r   rE   rX   r5   exitintr   r   r   r   <module>   s    (P	