Viewing File: /opt/alt/python38/lib64/python3.8/lib2to3/pgen2/__pycache__/driver.cpython-38.opt-1.pyc

U

,aQ@sdZdZddgZddlZddlZddlZddlZddlZddlm	Z	m
Z
mZmZm
Z
GdddeZd	d
ZdddZddZddZddZedkreeedS)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@sHeZdZdddZdddZdddZdd	d
ZdddZdd
dZdS)rNcCs&||_|dkrt}||_||_dS)N)rlogging	getLoggerloggerconvert)selfrr
rr9/opt/alt/python38/lib64/python3.8/lib2to3/pgen2/driver.py__init__s
zDriver.__init__FcCstt|j|j}|d}d}d}}}}	}
d}|D]}|\}}}}	}
|||fkr|\}
}||
kr|d|
|7}|
}d}||kr||
||7}|}|tjtjfkr||7}|	\}}|dr<|d7}d}q<|t	j
krtj|}|r
|j
dt	j||||||||fr6|r0|j
dqnd}|	\}}|dr<|d7}d}q<td||||f|jS)	z4Parse a series of tokens and return the syntax tree.rrN
z%s %r (prefix=%r)zStop.zincomplete input)rZParserrr
ZsetuprCOMMENTNLendswithrOPZopmaprdebugtok_nameZaddtokenZ
ParseErrorZrootnode)rtokensrplinenocolumntypevaluestartendZ	line_textprefixZ	quintupleZs_linenoZs_columnrrrparse_tokens&s^




zDriver.parse_tokenscCst|j}|||Sz*Parse a stream and return the syntax tree.)rgenerate_tokensreadliner#)rstreamrrrrrparse_stream_rawVszDriver.parse_stream_rawcCs|||Sr$)r()rr'rrrrparse_stream[szDriver.parse_streamc
Cs4tj|d|d}|||W5QRSQRXdS)z(Parse a file and return the syntax tree.r)encodingN)ioopenr))rfilenamer+rr'rrr
parse_file_szDriver.parse_filecCstt|j}|||S)z*Parse a string and return the syntax tree.)rr%r,StringIOr&r#)rtextrrrrrparse_stringdszDriver.parse_string)NN)F)F)F)NF)F)	__name__
__module____qualname__rr#r(r)r/r2rrrrrs

0


cCs:tj|\}}|dkrd}||dtttjdS)Nz.txtr.z.pickle)ospathsplitextjoinmapstrsysversion_info)gtheadtailrrr_generate_pickle_namejsrBGrammar.txtTFc
Cs|dkrt}|dkr t|n|}|s2t||s|d|t|}|r|d|z||Wqtk
r}z|d|W5d}~XYqXnt	
}|||S)z'Load the grammar (maybe from a pickle).Nz!Generating grammar tables from %szWriting grammar tables to %szWriting failed: %s)r
rrB_newerinfor	Zgenerate_grammardumpOSErrorrGrammarload)r?Zgpsaveforcergerrrrqs
 
cCs8tj|sdStj|s dStj|tj|kS)z0Inquire whether file a was written since file b.FT)r7r8existsgetmtime)abrrrrDs
rDcCsFtj|rt|Sttj|}t||}t	}|
||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.

    )r7r8isfilerrBbasenamepkgutilget_datarrHloads)packageZgrammar_sourceZpickled_namedatarLrrrload_packaged_grammars
rYcGsB|stjdd}tjtjtjdd|D]}t|dddq*dS)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)levelr'formatT)rJrK)r=argvr
ZbasicConfigINFOstdoutr)argsr?rrrmainsr`__main__)rCNTFN)__doc__
__author____all__r,r7r
rTr=rrrrrr	objectrrBrrDrYr`r3exitintrrrr<module>s(M
	

Back to Directory File Manager