pfc@sdZdZddgZddlZddlZddlZddlZddlZddlm Z m Z m Z m Z m Z defdYZd deedd Zd Zd Zed krejee ndS(sZParser driver. This provides a high-level interface to parse a file into a syntax tree. s#Guido van Rossum tDrivert load_grammariNi(tgrammartparsettokenttokenizetpgencBsVeZdddZedZedZedZdedZedZ RS(cCs:||_|dkr$tj}n||_||_dS(N(RtNonetloggingt getLoggertloggertconvert(tselfRR R ((s,/usr/lib64/python2.7/lib2to3/pgen2/driver.pyt__init__s    cCstj|j|j}|jd}d}d }}}} } d} x|D]} | \}}}} } |||fkr|\} }|| kr| d| |7} | }d}n||kr| | ||!7} |}qn|tjtjfkr6| |7} | \}}|j drQ|d7}d}qQqQn|t j krUtj |}n|r~|j jdt j||| n|j||| |fr|r|j jdnPnd} | \}}|j drQ|d7}d}qQqQWtjd||| |f|jS( s4Parse a series of tokens and return the syntax tree.iius s%s %r (prefix=%r)sStop.tsincomplete inputN(RtParserRR tsetupRRtCOMMENTtNLtendswithRtOPtopmapR tdebugttok_nametaddtokent ParseErrortrootnode(R ttokensRtptlinenotcolumnttypetvaluetstarttendt line_texttprefixt quintuplets_linenots_column((s,/usr/lib64/python2.7/lib2to3/pgen2/driver.pyt parse_tokens&sR                cCs"tj|j}|j||S(s*Parse a stream and return the syntax tree.(Rtgenerate_tokenstreadlineR((R tstreamRR((s,/usr/lib64/python2.7/lib2to3/pgen2/driver.pytparse_stream_rawVscCs|j||S(s*Parse a stream and return the syntax tree.(R,(R R+R((s,/usr/lib64/python2.7/lib2to3/pgen2/driver.pyt parse_stream[scCs;tj|d|}z|j||SWd|jXdS(s(Parse a file and return the syntax tree.trN(tcodecstopenR-tclose(R tfilenametencodingRR+((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((R ttextRR((s,/usr/lib64/python2.7/lib2to3/pgen2/driver.pyt parse_stringgsN( t__name__t __module__RR tFalseR(R,R-R4R7(((s,/usr/lib64/python2.7/lib2to3/pgen2/driver.pyRs  0  s Grammar.txtc Cs*|dkrtj}n|dkr~tjj|\}}|dkrTd}n||djttt j d}n|st || r |j d|t j|}|r&|j d|y|j|Wq tk r}|j dt|q Xq&ntj}|j||S( s'Load the grammar (maybe from a pickle).s.txtRt.s.pickles!Generating grammar tables from %ssWriting grammar tables to %ssWriting failed:N(RRR tostpathtsplitexttjointmaptstrtsyst version_infot_newertinfoRtgenerate_grammartdumptIOErrorRtGrammartload( tgttgptsavetforceR theadttailtgte((s,/usr/lib64/python2.7/lib2to3/pgen2/driver.pyRms&    *!  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.pyRDs cGsc|stjd}ntjdtjdtjddx$|D]}t|dtdtq?WtS(sMain 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)sRMRN(RBtargvRt basicConfigtINFOtstdoutRRT(targsRK((s,/usr/lib64/python2.7/lib2to3/pgen2/driver.pytmains t__main__(t__doc__t __author__t__all__R/R<RR5RBRRRRRRtobjectRRRTR:RRDR_R8texittint(((s,/usr/lib64/python2.7/lib2to3/pgen2/driver.pyt s      (P