]Y@sdZddgZddlZddlZddlZddlZddlZddlmZm Z m Z m Z m Z Gddde Zdd Zd dd d dd dZddZddZedkrejee dS)z#Guido van Rossum Driver load_grammarN)grammarparsetokentokenizepgenc@speZdZddddZdddZdddZdd d Zddd d Zdd dZdS)rNcCs7||_|dkr!tj}||_||_dS)N)rlogging getLoggerloggerconvert)selfrr r r+/opt/alt/python35/lib64/python3.5/driver.py__init__s     zDriver.__init__FcCstj|j|j}|jd}d}d}}}} } d} x|D]~} | \}}}} } |||fkr|\} }|| kr| d| |7} | }d}||kr| | ||7} |}|tjtjfkr*| |7} | \}}|jdrQ|d7}d}qQ|t j krFtj |}|rl|j j dt j||| |j||| |fr|r|j j dPd} | \}}|jdrQ|d7}d}qQWtjd||| |f|jS)Nrr z%s %r (prefix=%r)zStop.zincomplete input)rZParserrr ZsetuprCOMMENTNLendswithrOPZopmapr debugtok_nameZaddtokenZ ParseErrorrootnode)rtokensrplinenocolumntypevaluestartendZ line_textprefixZ quintupleZs_linenoZs_columnrrr parse_tokens&sR              zDriver.parse_tokenscCs"tj|j}|j||S)N)rgenerate_tokensreadliner$)rstreamrrrrrparse_stream_rawVszDriver.parse_stream_rawcCs|j||S)N)r()rr'rrrr parse_stream[szDriver.parse_streamc Cs;tj|d|}z|j||SWd|jXdS)Nr)codecsopenr)close)rfilenameencodingrr'rrr parse_file_szDriver.parse_filecCs+tjtj|j}|j||S)N)rr%ioStringIOr&r$)rtextrrrrr parse_stringgszDriver.parse_string) __name__ __module__ __qualname__rr$r(r)r0r4rrrrrs 0cCsOtjj|\}}|dkr*d}||djtttjdS)Nz.txtr.z.pickle)ospathsplitextjoinmapstrsys version_info)gtheadtailrrr_generate_pickle_namems rDz Grammar.txtTFcCs|dkrtj}|dkr0t|n|}|sLt|| r|jd|tj|}|r|jd|y|j|Wqtk r}z|jd|WYdd}~XqXnt j }|j ||S)Nz!Generating grammar tables from %szWriting grammar tables to %szWriting failed: %s) r r rD_newerinfor Zgenerate_grammardumpOSErrorrZGrammarload)rAZgpsaveforcer gerrrrts  &  cCsNtjj|sdStjj|s,dStjj|tjj|kS)NFT)r9r:existsgetmtime)abrrrrEs rEcGsf|stjdd}tjdtjdtjddx$|D]}t|ddddqBWdS) Nrlevelr'formatz %(message)srJTrK)r?argvr basicConfigINFOstdoutr)argsrArrrmains rY__main__) __author____all__r+r1r9r r?rrrrrr objectrrDrrErYr5exitintrrrrs      (P