<!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>
U
    e5dQ  ã                   @   s¨   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 G dd„ deƒZdd	„ Zddd„Zdd„ Zdd„ Zdd„ Zedkr¤e eeƒ  ƒ¡ dS )z#Guido van Rossum <guido@python.org>ÚDriverÚload_grammaré    Né   )ÚgrammarÚparseÚtokenÚtokenizeÚpgenc                   @   sH   e Zd Zddd„Zddd„Zddd„Zdd	d
„Zddd„Zddd„ZdS )r   Nc                 C   s&   || _ |d krt ¡ }|| _|| _d S ©N)r   ÚloggingÚ	getLoggerÚloggerÚconvert)Úselfr   r   r   © r   ú,/usr/lib64/python3.8/lib2to3/pgen2/driver.pyÚ__init__   s
    zDriver.__init__Fc                 C   st  t  | j| j¡}| ¡  d}d}d  } } } }	}
d}|D ]}|\}}}}	}
|||fkr |\}}||k r„|d||  7 }|}d}||k r ||
||… 7 }|}|tjtjfkrØ||7 }|	\}}| d¡r<|d7 }d}q<|t	j
krìtj| }|r
| j dt	j| ||¡ | ||||f¡r6|r0| j d¡  qnd}|	\}}| d¡r<|d7 }d}q<t  d||||f¡‚|jS )Nr   r   Ú Ú
z%s %r (prefix=%r)zStop.zincomplete input)r   ZParserr   r   Zsetupr   Ú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&   s^    



  ÿ
  ÿzDriver.parse_tokensc                 C   s   t  |j¡}|  ||¡S r
   )r   Úgenerate_tokensÚreadliner$   )r   Ústreamr   r   r   r   r   Úparse_stream_rawV   s    zDriver.parse_stream_rawc                 C   s   |   ||¡S r
   )r(   )r   r'   r   r   r   r   Úparse_stream[   s    zDriver.parse_streamc              
   C   s4   t j|d|d}|  ||¡W  5 Q R £ S Q R X d S )NÚr)Úencoding)ÚioÚopenr)   )r   Úfilenamer+   r   r'   r   r   r   Ú
parse_file_   s    zDriver.parse_filec                 C   s   t  t |¡j¡}|  ||¡S r
   )r   r%   r,   ÚStringIOr&   r$   )r   Útextr   r   r   r   r   Úparse_stringd   s    zDriver.parse_string)NN)F)F)F)NF)F)	Ú__name__Ú
__module__Ú__qualname__r   r$   r(   r)   r/   r2   r   r   r   r   r      s   

0


c                 C   s:   t j | ¡\}}|dkrd}|| d 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_namej   s    rB   úGrammar.txtTFc              
   C   s®   |d krt  ¡ }|d kr t| ƒn|}|s2t|| ƒs˜| d| ¡ t | ¡}|rª| d|¡ z| |¡ W qª tk
r” } z| d|¡ W 5 d }~X Y qªX nt	 
¡ }| |¡ |S )Nz!Generating grammar tables from %szWriting grammar tables to %szWriting failed: %s)r   r   rB   Ú_newerÚinfor	   Zgenerate_grammarÚdumpÚOSErrorr   ÚGrammarÚload)r?   ZgpÚsaveÚforcer   ÚgÚer   r   r   r   q   s    
 
c                 C   s8   t j | ¡sdS t j |¡s dS t j | ¡t j |¡kS )NFT)r7   r8   ÚexistsÚgetmtime)ÚaÚbr   r   r   rD   †   s
    rD   c                 C   sF   t j |¡rt|ƒS tt j |¡ƒ}t | |¡}t 	¡ }| 
|¡ |S r
   )r7   r8   Úisfiler   rB   ÚbasenameÚpkgutilÚget_datar   rH   Úloads)ÚpackageZgrammar_sourceZpickled_nameÚdatarL   r   r   r   Úload_packaged_grammar   s    
rY   c                  G   sB   | st jdd … } tjtjt jdd | D ]}t|ddd q*dS )Nr   z%(message)s)Úlevelr'   ÚformatT)rJ   rK   )r=   Úargvr   ZbasicConfigÚINFOÚstdoutr   )Úargsr?   r   r   r   Úmain£   s    ÿr`   Ú__main__)rC   NTFN)Ú
__author__Ú__all__r,   r7   r   rT   r=   r   r   r   r   r   r	   Úobjectr   rB   r   rD   rY   r`   r3   ÚexitÚintr   r   r   r   Ú<module>   s&   M      ÿ
	