python (3.12.0)

(root)/
lib/
python3.12/
lib2to3/
pgen2/
__pycache__/
driver.cpython-312.pyc

̑eQdZdZddgZddlZddlZddlZddlZddlZddlm	Z	m
Z
mZmZm
Z
GddeZd	Z		dd
ZdZdZd
Zedk(rej,eeyy)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_grammarN)grammarparsetokentokenizepgenc<eZdZddZd	dZd	dZd	dZd
dZd	dZy)rNcZ||_|tj}||_||_y)N)rlogging	getLoggerloggerconvert)selfrrrs    H/BuggyBox/python/3.12.0/bootstrap/lib/python3.12/lib2to3/pgen2/driver.py__init__zDriver.__init__s*>&&(Fcftj|j|j}|j	d}d}dx}x}x}x}	}
d}|D]H}|\}}}}	}
|||fk7r:||f|ksJ||f|f|\}
}||
kr|d|
|z
zz
}|
}d}||kr
||
||z
}|}|t
jt
jfvr#||z
}|	\}}|jdr|dz
}d}|tjk(rtj|}|r/|jjdtj||||j||||fr*|r|jjd|j"Sd}|	\}}|jdsB|dz
}d}Ktj d||||f)	z4Parse a series of tokens and return the syntax tree.rrN
z%s %r (prefix=%r)zStop.zincomplete input)rParserrrsetupr	COMMENTNLendswithrOPopmaprdebugtok_nameaddtoken
ParseErrorrootnode)rtokensrplinenocolumntypevaluestartend	line_textprefix	quintuples_linenos_columns               rparse_tokenszDriver.parse_tokens&s
LLt||4		1555u5u5sY$	AI1:.D%Y(('50KFF3CU2KK%*"(H$dh&788F%FFH$ix88F%F(((++66%!$>>$'aKFFuxx}}U+!!"5"'.."6vGzz$7KK%%g.zzF NFF~~d#!A$	AF""#5#'A
Arcdtj|j}|j||Sz*Parse a stream and return the syntax tree.)r	generate_tokensreadliner1)rstreamrr$s    rparse_stream_rawzDriver.parse_stream_rawVs)))&//:  //rc&|j||Sr3)r7)rr6rs   rparse_streamzDriver.parse_stream[s$$VU33rctj|d|5}|j||cdddS#1swYyxYw)z(Parse a file and return the syntax tree.r)encodingN)ioopenr9)rfilenamer<rr6s     r
parse_filezDriver.parse_file_s9
WWXsX
6	4&$$VU3	4	4	4s5>ctjtj|j}|j||S)z*Parse a string and return the syntax tree.)r	r4r=StringIOr5r1)rtextrr$s    rparse_stringzDriver.parse_stringds4))"++d*;*D*DE  //r)NN)F)NF)	__name__
__module____qualname__rr1r7r9r@rDrrrrs!.`0
44
0rctjj|\}}|dk(rd}||zdjt	t
tjzdzS)Nz.txtr.z.pickle)ospathsplitextjoinmapstrsysversion_info)gtheadtails   r_generate_pickle_namerVjsP!!"%JD$v~$;#c3+;+;"<==	IIrc|tj}|t|n|}|st||sQ|j	d|tj|}|r&|j	d|	|j||S|Stj}|j||S#t$r}|j	d|Yd}~|Sd}~wwxYw)z'Load the grammar (maybe from a pickle).Nz!Generating grammar tables from %szWriting grammar tables to %szWriting failed: %s)r
rrV_newerinfor
generate_grammardumpOSErrorrGrammarload)rSgpsaveforcerges       rrrqs~""$&(j	r	"bBF2rN7<!!"%KK6;
5r

H1H
OO	r
H
50!44
H
5s0B,,	C5C

Cctjj|sytjj|sytjj|tjj|k\S)z0Inquire whether file a was written since file b.FT)rKrLexistsgetmtime)abs  rrXrXsQ
77>>!
77>>!
77A"''"2"21"555rc tjj|rt|St	tjj|}t
j||}tj}|j||S)aNormally, loads a pickled grammar by doing
        pkgutil.get_data(package, pickled_grammar)
    where *pickled_grammar* is computed from *grammar_source* by adding the
    Python version and using a ``.pickle`` extension.

    However, if *grammar_source* is an extant file, load_grammar(grammar_source)
    is called instead. This facilitates using a packaged grammar file when needed
    but preserves load_grammar's automatic regeneration behavior when possible.

    )rKrLisfilerrVbasenamepkgutilget_datarr]loads)packagegrammar_sourcepickled_namedatarbs     rload_packaged_grammarrssf
ww~~n%N++()9)9.)IJLG\2DAGGDMHrc|stjdd}tjtjtj
d|D]}t
|ddy)zMain program, when run as a script: produce grammar pickle files.

    Calls load_grammar for each argument, a path to a grammar text file.
    rNz%(message)s)levelr6formatT)r`ra)rQargvr
basicConfigINFOstdoutr)argsrSs  rmainr|sQ
xx|gll3::,.0Rd$/0r__main__)zGrammar.txtNTFN)__doc__
__author____all__r=rKr
rlrQrrrrr	r
objectrrVrrXrsr|rEexitintrHrr<module>rs3
^
$
	
43J0VJ0ZJ'+04
*6
(zCHHSTV_r