Your IP : 3.145.196.175
�
`Ofc@sdZdZddgZddlZddlZddlZddlZddlZddlZddl m
Z
mZmZm
Z
mZdefd��YZd �Zd
deedd�Zd�Zd
�Zd�Zedkrejee���ndS(sZParser driver.
This provides a high-level interface to parse a file into a syntax tree.
s#Guido van Rossum <guido@python.org>tDrivertload_grammari����Ni(tgrammartparsettokenttokenizetpgencBsVeZddd�Zed�Zed�Zed�Zded�Zed�Z RS(cCs:||_|dkr$tj�}n||_||_dS(N(RtNonetloggingt getLoggertloggertconvert(tselfRRR
((s,/usr/lib64/python2.7/lib2to3/pgen2/driver.pyt__init__ s
cCs=tj|j|j�}|j�d}d}d }}}} }
d}x�|D]�}|\}}}} }
|||fkr
||f|ks�t||f|f��|\}
}||
kr�|d|
|7}|
}d}n||kr
||
||!7}|}q
n|tjtj fkr`||7}| \}}|j
d�rQ|d7}d}qQqQn|tjkrtj
|}n|r�|jjdtj|||�n|j||||f�r�|r�|jjd�nPnd}| \}}|j
d�rQ|d7}d}qQqQWtjd||||f��|jS(
s4Parse a series of tokens and return the syntax tree.iius
s%s %r (prefix=%r)sStop.tsincomplete inputN(RtParserRRtsetupRtAssertionErrorRtCOMMENTtNLtendswithRtOPtopmapR
tdebugttok_nametaddtokent
ParseErrortrootnode(RttokensRtptlinenotcolumnttypetvaluetstarttendt line_texttprefixt quintuplets_linenots_column((s,/usr/lib64/python2.7/lib2to3/pgen2/driver.pytparse_tokens'sT
*
cCs"tj|j�}|j||�S(s*Parse a stream and return the syntax tree.(Rtgenerate_tokenstreadlineR)(RtstreamRR((s,/usr/lib64/python2.7/lib2to3/pgen2/driver.pytparse_stream_rawWscCs|j||�S(s*Parse a stream and return the syntax tree.(R-(RR,R((s,/usr/lib64/python2.7/lib2to3/pgen2/driver.pytparse_stream\scCs;tj|d|�}z|j||�SWd|j�XdS(s(Parse a file and return the syntax tree.trN(tcodecstopenR.tclose(RtfilenametencodingRR,((s,/usr/lib64/python2.7/lib2to3/pgen2/driver.pyt
parse_file`scCs+tjtj|�j�}|j||�S(s*Parse a string and return the syntax tree.(RR*tStringIOR+R)(RttextRR((s,/usr/lib64/python2.7/lib2to3/pgen2/driver.pytparse_stringhsN(
t__name__t
__module__RR
tFalseR)R-R.R5R8(((s,/usr/lib64/python2.7/lib2to3/pgen2/driver.pyRs0cCsRtjj|�\}}|dkr-d}n||djtttj��dS(Ns.txtRt.s.pickle(tostpathtsplitexttjointmaptstrtsystversion_info(tgttheadttail((s,/usr/lib64/python2.7/lib2to3/pgen2/driver.pyt_generate_pickle_namens sGrammar.txtcCs�|dkrtj�}n|dkr3t|�n|}|sOt||�r�|jd|�tj|�}|r�|jd|�y|j|�Wq�t k
r�}|jd|�q�Xq�nt
j�}|j|�|S(s'Load the grammar (maybe from a pickle).s!Generating grammar tables from %ssWriting grammar tables to %ssWriting failed: %sN(
RRR RHt_newertinfoRtgenerate_grammartdumptIOErrorRtGrammartload(REtgptsavetforceR
tgte((s,/usr/lib64/python2.7/lib2to3/pgen2/driver.pyRus
cCsNtjj|�stStjj|�s,tStjj|�tjj|�kS(s0Inquire whether file a was written since file b.(R=R>texistsR;tTruetgetmtime(tatb((s,/usr/lib64/python2.7/lib2to3/pgen2/driver.pyRI�s
cCsctjj|�rt|�Sttjj|��}tj||�}tj �}|j
|�|S(s�Normally, 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.
(R=R>tisfileRRHtbasenametpkgutiltget_dataRRNtloads(tpackagetgrammar_sourcetpickled_nametdataRS((s,/usr/lib64/python2.7/lib2to3/pgen2/driver.pytload_packaged_grammar�s
cGsc|stjd}ntjdtjdtjdd�x$|D]}t|dtdt�q?WtS(s�Main program, when run as a script: produce grammar pickle files.
Calls load_grammar for each argument, a path to a grammar text file.
itlevelR,tformats%(message)sRQRR(RCtargvRtbasicConfigtINFOtstdoutRRV(targsRE((s,/usr/lib64/python2.7/lib2to3/pgen2/driver.pytmain�s
t__main__(t__doc__t
__author__t__all__R0R=RR\R6RCRRRRRRtobjectRRHRRVR;RRIRcRkR9texittint(((s,/usr/lib64/python2.7/lib2to3/pgen2/driver.pyt<module>s$(P