ó ÿgdSc@s¨dZdZddgZddlZddlZddlZddlmZmZm Z m Z m Z de fd„ƒYZ d„Zd deedd „Zd „ZdS( sZParser driver. This provides a high-level interface to parse a file into a syntax tree. s#Guido van Rossum tDrivert load_grammariÿÿÿÿN(tgrammartparsettokenttokenizetpgencBsSeZddd„Zed„Zed„Zed„Zed„Zed„Z RS(cCs:||_|dkr$tjƒ}n||_||_dS(N(RtNonetloggingt getLoggertloggertconvert(tselfRR R ((ssphinx/pycode/pgen2/driver.pyt__init__s    cCsõtj|j|jƒ}|jƒd}d}d}}}} } d} tj} x˜|D]x\}}}} } |||fkr ||f|ks«t||f|fƒ‚|\} }|| krä| d| |7} | }d}n||kr | | ||!7} |}q n|tj tj fkrc| |7} | \}}|j dƒrZ|d7}d}qZqZn|t j kr| |}n|j||| |fƒržPnd} | \}}|j dƒrZ|d7}d}qZqZWtjd||| ƒ‚|jS(s4Parse a series of tokens and return the syntax tree.iits sincomplete inputN(RtParserRR tsetupRtopmaptAssertionErrorRtCOMMENTtNLtendswithRtOPtaddtokent ParseErrortrootnode(R ttokenstdebugtptlinenotcolumnttypetvaluetstarttendt line_texttprefixRts_linenots_column((ssphinx/pycode/pgen2/driver.pyt parse_tokens%sH  *             cCs"tj|jƒ}|j||ƒS(s*Parse a stream and return the syntax tree.(Rtgenerate_tokenstreadlineR'(R tstreamRR((ssphinx/pycode/pgen2/driver.pytparse_stream_rawTscCs|j||ƒS(s*Parse a stream and return the syntax tree.(R+(R R*R((ssphinx/pycode/pgen2/driver.pyt parse_streamYscCs2t|ƒ}z|j||ƒSWd|jƒXdS(s(Parse a file and return the syntax tree.N(topenR,tclose(R tfilenameRR*((ssphinx/pycode/pgen2/driver.pyt parse_file]s cCs(tjt|ƒjƒ}|j||ƒS(s*Parse a string and return the syntax tree.(RR(tgenerate_linestnextR'(R ttextRR((ssphinx/pycode/pgen2/driver.pyt parse_stringesN( t__name__t __module__RR tFalseR'R+R,R0R4(((ssphinx/pycode/pgen2/driver.pyRs  /   ccs5x|jtƒD] }|VqWxtr0dVq"WdS(s<Generator that behaves like readline without using StringIO.RN(t splitlinestTrue(R3tline((ssphinx/pycode/pgen2/driver.pyR1ks  s Grammar.txtc Cs2|d krtjƒ}n|d kr†tjj|ƒ\}}|dkrTd}n||ddjttt j d ƒƒd}n|sœt ||ƒ r|j d|ƒt j|ƒ}|r.|j d|ƒy|j|ƒWqtk r}|j d t|ƒƒqXq.ntjƒ}|j|ƒ|S( s'Load the grammar (maybe from a pickle).s.txtRs-sphinxt.is.pickles!Generating grammar tables from %ssWriting grammar tables to %ssWriting failed:N(RRR tostpathtsplitexttjointmaptstrtsphinxt version_infot_newertinfoRtgenerate_grammartdumptIOErrorRtGrammartload( tgttgptsavetforceR theadttailtgte((ssphinx/pycode/pgen2/driver.pyRss&    2!  cCsNtjj|ƒstStjj|ƒs,tStjj|ƒtjj|ƒkS(s0Inquire whether file a was written since file b.(R<R=texistsR7R9tgetmtime(tatb((ssphinx/pycode/pgen2/driver.pyRDŽs (t__doc__t __author__t__all__R<RRBtsphinx.pycode.pgen2RRRRRtobjectRR1RR9R7RRD(((ssphinx/pycode/pgen2/driver.pyt s    (O