ó ’,bc@sïdZdZddgZddlZddlZddlZddlZddlZddlm Z m Z m Z m Z m Z defd„ƒYZd „Zd deedd „Zd „Zd „Zedkrëejeeƒ ƒƒndS(sZParser driver. This provides a high-level interface to parse a file into a syntax tree. s#Guido van Rossum tDrivert load_grammariÿÿÿÿNi(tgrammartparsettokenttokenizetpgencBsVeZddd„Zed„Zed„Zed„Zded„Zed„Z RS(cCs:||_|dkr$tjƒ}n||_||_dS(N(RtNonetloggingt getLoggertloggertconvert(tselfRR R ((s*/usr/lib/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|t j krtj |}n|r¨|jjdt j||| ƒ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(RtParserRR tsetupRtAssertionErrorRtCOMMENTtNLtendswithRtOPtopmapR tdebugttok_nametaddtokent ParseErrortrootnode(R ttokensRtptlinenotcolumnttypetvaluetstarttendt line_texttprefixt quintuplets_linenots_column((s*/usr/lib/python2.7/lib2to3/pgen2/driver.pyt parse_tokens&sT  *              cCs"tj|jƒ}|j||ƒS(s*Parse a stream and return the syntax tree.(Rtgenerate_tokenstreadlineR)(R tstreamRR((s*/usr/lib/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/lib/python2.7/lib2to3/pgen2/driver.pyt parse_stream[scCs;tj|d|ƒ}z|j||ƒSWd|jƒXdS(s(Parse a file and return the syntax tree.trN(tcodecstopenR.tclose(R tfilenametencodingRR,((s*/usr/lib/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/lib/python2.7/lib2to3/pgen2/driver.pyt parse_stringgsN( t__name__t __module__RR tFalseR)R-R.R5R8(((s*/usr/lib/python2.7/lib2to3/pgen2/driver.pyRs  0  cCsRtjj|ƒ\}}|dkr-d}n||djtttjƒƒdS(Ns.txtRt.s.pickle(tostpathtsplitexttjointmaptstrtsyst version_info(tgttheadttail((s*/usr/lib/python2.7/lib2to3/pgen2/driver.pyt_generate_pickle_namems  s Grammar.txtcCsÞ|dkrtjƒ}n|dkr3t|ƒn|}|sOt||ƒ rÁ|jd|ƒtj|ƒ}trÚ|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_grammarR;tdumptIOErrorRtGrammartload(REtgptsavetforceR tgte((s*/usr/lib/python2.7/lib2to3/pgen2/driver.pyRts   cCsNtjj|ƒstStjj|ƒs,tStjj|ƒtjj|ƒkS(s0Inquire whether file a was written since file b.(R=R>texistsR;tTruetgetmtime(tatb((s*/usr/lib/python2.7/lib2to3/pgen2/driver.pyRIŒs cGsc|stjd}ntjdtjdtjddƒx$|D]}t|dtdtƒq?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)sRQRR(RCtargvRt basicConfigtINFOtstdoutRRV(targsRE((s*/usr/lib/python2.7/lib2to3/pgen2/driver.pytmain•s t__main__(t__doc__t __author__t__all__R0R=RR6RCRRRRRRtobjectRRHRRVR;RRIRaR9texittint(((s*/usr/lib/python2.7/lib2to3/pgen2/driver.pyt s       (P