
    z%iQ                         	 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e      Zd Z	 	 dd	Zd
 Zd Zd Zedk(  r ej*                   e e                     yy)z#Guido van Rossum <guido@python.org>Driverload_grammar    N   )grammarparsetokentokenizepgenc                   <    e Zd ZddZd	dZd	dZd	dZd
dZd	dZy)r   Nc                 Z    || _         |t        j                         }|| _        || _        y N)r   logging	getLoggerloggerconvert)selfr   r   r   s       H/home/uftp/.pyenv/versions/3.12.0/lib/python3.12/lib2to3/pgen2/driver.py__init__zDriver.__init__   s*    >&&(F    c                 D   	 t        j                  | j                  | j                        }|j	                          d}d}d x}x}x}x}	}
d}|D ]6  }|\  }}}}	}
|||fk7  r(|\  }}||k  r|d||z
  z  z  }|}d}||k  r
||
|| z  }|}|t
        j                  t
        j                  fv r#||z  }|	\  }}|j                  d      r|dz  }d}|t        j                  k(  rt        j                  |   }|r/| j                  j                  dt        j                  |   ||       |j                  ||||f      r*|r| j                  j                  d        |j"                  S d}|	\  }}|j                  d      s0|dz  }d}9 t        j                   d||||f      )Nr   r    
z%s %r (prefix=%r)zStop.zincomplete input)r   Parserr   r   setupr	   COMMENTNLendswithr   OPopmapr   debugtok_nameaddtoken
ParseErrorrootnode)r   tokensr    plinenocolumntypevaluestartend	line_textprefix	quintuples_linenos_columns                  r   parse_tokenszDriver.parse_tokens&   s   BLLt||4		1555u5u5sY $	AI1:.D%Y((%*"(H$dh&788F%FFH$ix88F%F(((++66%!$>>$'aKFFuxx}}U+!!"5"'.."6vGzz$7KK%%g. zz F NFF~~d#!A$	AF ""#5#'A Ar   c                 f    	 t        j                  |j                        }| j                  ||      S r   )r	   generate_tokensreadliner2   )r   streamr    r%   s       r   parse_stream_rawzDriver.parse_stream_rawV   s,    8))&//:  //r   c                 (    	 | j                  ||      S r   )r7   )r   r6   r    s      r   parse_streamzDriver.parse_stream[   s    8$$VU33r   c                     	 t        j                  |d|      5 }| j                  ||      cd d d        S # 1 sw Y   y xY w)Nr)encoding)ioopenr9   )r   filenamer<   r    r6   s        r   
parse_filezDriver.parse_file_   s<    6WWXsX6 	4&$$VU3	4 	4 	4s   6?c                     	 t        j                  t        j                  |      j                        }| j                  ||      S r   )r	   r4   r=   StringIOr5   r2   )r   textr    r%   s       r   parse_stringzDriver.parse_stringd   s7    8))"++d*;*D*DE  //r   )NN)F)NF)	__name__
__module____qualname__r   r2   r7   r9   r@   rD    r   r   r   r      s!    .`0
44
0r   c                     t         j                  j                  |       \  }}|dk(  rd}||z   dj                  t	        t
        t        j                              z   dz   S )Nz.txtr   .z.pickle)ospathsplitextjoinmapstrsysversion_info)gtheadtails      r   _generate_pickle_namerV   j   sP    !!"%JD$v~$;#c3+;+;"<==	IIr   c                    	 |t        j                         }|t        |       n|}|st        ||       sQ|j	                  d|        t        j                  |       }|r&|j	                  d|       	 |j                  |       |S |S t        j                         }|j                  |       |S # t        $ r}|j	                  d|       Y d }~|S d }~ww xY w)Nz!Generating grammar tables from %szWriting grammar tables to %szWriting failed: %s)r   r   rV   _newerinfor
   generate_grammardumpOSErrorr   Grammarload)rS   gpsaveforcer   ges          r   r   r   q   s    1~""$&(j	r	"bBF2rN7<!!"%KK6;5r
 H1H OO	r
H  50!44 H5s   1B- -	C6CCc                    	 t         j                  j                  |       syt         j                  j                  |      syt         j                  j                  |       t         j                  j                  |      k\  S )NFT)rK   rL   existsgetmtime)abs     r   rX   rX      sT    :77>>!77>>!77A"''"2"21"555r   c                 "   	 t         j                  j                  |      rt        |      S t	        t         j                  j                  |            }t        j                  | |      }t        j                         }|j                  |       |S r   )rK   rL   isfiler   rV   basenamepkgutilget_datar   r]   loads)packagegrammar_sourcepickled_namedatarb   s        r   load_packaged_grammarrs      sk    	 
ww~~n%N++()9)9.)IJLG\2DAGGDMHr   c                      	 | st         j                  dd  } t        j                  t        j                  t         j
                  d       | D ]  }t        |dd        y)Nr   z%(message)s)levelr6   formatT)r`   ra   )rQ   argvr   basicConfigINFOstdoutr   )argsrS   s     r   mainr|      sV     xx|gll3::,. 0Rd$/0r   __main__)zGrammar.txtNTFN)
__author____all__r=   rK   r   rl   rQ   r   r   r   r   r	   r
   objectr   rV   r   rX   rs   r|   rE   exitintrH   r   r   <module>r      s    3
^
$ 
 	   
 4 3J0V J0ZJ '+04*6( zCHHSTV_ r   