python (3.11.7)

(root)/
lib/
python3.11/
lib2to3/
pgen2/
__pycache__/
driver.cpython-311.opt-1.pyc

eQdZdZddgZddlZddlZddlZddlZddlZddlm	Z	m
Z
mZmZm
Z
GddeZd	Z		dd
ZdZdZdZedkr$ejeedSdS)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>eZdZd	dZd
dZd
dZd
dZddZd
dZdS)rNcZ||_|tj}||_||_dS)N)rlogging	getLoggerloggerconvert)selfrrrs    H/BuggyBox/python/3.11.7/bootstrap/lib/python3.11/lib2to3/pgen2/driver.py__init__zDriver.__init__s.>&((FFc,tj|j|j}|d}d}dx}x}x}x}	}
d}|D].}|\}}}}	}
|||fkr/|\}
}||
kr|d|
|z
zz
}|
}d}||kr||
||z
}|}|t
jt
jfvr'||z
}|	\}}|dr|dz
}d}|tj
krtj|}|r-|j
dtj||||||||fr|r|j
dn>d}|	\}}|dr|dz
}d}0tjd||||f|jS)	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
Lt|44				1555u5u5sY$	A$	AI1:.D%Y(((%*"(H$$dh&788F%FFH$$ix88F%F((+666%!$>>$''aKFFux}U+
G!!"5"'."6vGGGzz$77
/K%%g...F NFF~~d##
!"#5#'AA
Azrc`tj|j}|||Sz*Parse a stream and return the syntax tree.)r	generate_tokensreadliner1)rstreamrr$s    rparse_stream_rawzDriver.parse_stream_rawVs*)&/::  ///rc.|||Sr3)r7)rr6rs   rparse_streamzDriver.parse_stream[s$$VU333rctj|d|5}|||cdddS#1swxYwYdS)z(Parse a file and return the syntax tree.r)encodingN)ioopenr9)rfilenamer<rr6s     r
parse_filezDriver.parse_file_s
WXsX
6
6
6	4&$$VU33	4	4	4	4	4	4	4	4	4	4	4	4	4	4	4	4	4	4s
;??ctjtj|j}|||S)z*Parse a string and return the syntax tree.)r	r4r=StringIOr5r1)rtextrr$s    rparse_stringzDriver.parse_stringds5)"+d*;*;*DEE  ///r)NN)F)NF)	__name__
__module____qualname__rr1r7r9r@rDrrrrs....`0000
44444444
000000rctj|\}}|dkrd}||zdt	t
tjzdzS)Nz.txtr.z.pickle)ospathsplitextjoinmapstrsysversion_info)gtheadtails   r_generate_pickle_namerVjsV!!"%%JD$v~~$;#c3+;"<"<===	IIrGrammar.txtTFc|tj}|t|n|}|st||s|d|tj|}|rZ|d|	||nV#t$r }|d|Yd}~n1d}~wwxYwn(tj
}|||S)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F2rNN7<<<!"%%	5KK6;;;
5r




5
5
50!44444444
5		5
O	r


Hs>B
B>B99B>ctj|sdStj|sdStj|tj|kS)z0Inquire whether file a was written since file b.FT)rKrLexistsgetmtime)abs  rrYrYsc
7>>!u
7>>!t
7A"'"2"21"5"555rc4tj|rt|St	tj|}t
j||}tj	}|
||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_namedatarcs     rload_packaged_grammarrtsx
w~~n%%,N+++()9)9.)I)IJJLG\22DAGGDMMMHrc|stjdd}tjtjtjd|D]}t
|dddS)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)rarb)rQargvr
basicConfigINFOstdoutr)argsrSs  rmainr}sl
x|gl3:,....00Rd$/////4r__main__)rWNTFN)__doc__
__author____all__r=rKr
rmrQrrrrr	r
objectrrVrrYrtr}rEexitintrHrr<module>rsF3
^
$
							



43333333333333J0J0J0J0J0VJ0J0J0ZJJJ'+04



*666


(zCHSSTTVV__r