Viewing File: /opt/alt/python38/lib64/python3.8/lib2to3/pgen2/__pycache__/driver.cpython-38.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__FcCst|j|j}|d}d}d}}}}	}
d}|D]8}|\}}}}	}
|||fkr||f|ksxt||f|f|\}
}||
kr|d|
|7}|
}d}||kr||
||7}|}|tjtjfkr||7}|	\}}|	dr<|d7}d}q<|t
jkr
tj|}|r(|j
dt
j||||||||frT|rN|j
dqd}|	\}}|	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
ZsetupAssertionErrorrCOMMENTNLendswithrOPZopmapr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*r0r3rrrrrs

0


cCs:tj|\}}|dkrd}||dtttjdS)Nz.txtr.z.pickle)ospathsplitextjoinmapstrsysversion_info)gtheadtailrrr_generate_pickle_namejsrCGrammar.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
rrC_newerinfor	Zgenerate_grammardumpOSErrorrGrammarload)r@Zgpsaveforcergerrrrqs
 
cCs8tj|sdStj|s dStj|tj|kS)z0Inquire whether file a was written since file b.FT)r8r9existsgetmtime)abrrrrEs
rEcCsFtj|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.

    )r8r9isfilerrCbasenamepkgutilget_datarrIloads)packageZgrammar_sourceZpickled_namedatarMrrrload_packaged_grammars
rZcGsB|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)rKrL)r>argvr
ZbasicConfigINFOstdoutr)argsr@rrrmainsra__main__)rDNTFN)__doc__
__author____all__r-r8r
rUr>rrrrrr	objectrrCrrErZrar4exitintrrrr<module>s(M
	

Back to Directory File Manager