3 \Œã@s°dZddgZddlZddlZddlZddlZddlZddlZddlm Z m Z m Z m Z m Z Gdd„deƒZdd „Zdd d„Zdd„Zdd„Zdd„Zedkr¬ejeeƒ ƒƒdS)z#Guido van Rossum ÚDriverÚ load_grammaréNé)ÚgrammarÚparseÚtokenÚtokenizeÚpgenc@sHeZdZddd„Zddd„Zddd„Zdd d „Zdd d „Zdd d„ZdS)rNcCs&||_|dkrtjƒ}||_||_dS)N)rÚloggingÚ getLoggerÚloggerÚconvert)Úselfrr r ©rú,/usr/lib64/python3.6/lib2to3/pgen2/driver.pyÚ__init__ s zDriver.__init__FcCsvtj|j|jƒ}|jƒd}d}d}}}} } d} �x4|D�]} | \}}}} } |||fkr¤|\} }|| krˆ| d| |7} | }d}||kr¤| | ||…7} |}|tjtjfkrÜ| |7} | \}}|jdƒr@|d7}d}q@|t j krðtj |}|�r|j j dt j||| ƒ|j||| |fƒ�r6|�r4|j j dƒPd} | \}}|jdƒr@|d7}d}q@Wtjd||| |fƒ‚|jS)NrrÚÚ z%s %r (prefix=%r)zStop.zincomplete input)rZParserrr ZsetuprÚCOMMENTÚNLÚendswithrÚOPZopmapr ÚdebugÚtok_nameZaddtokenZ ParseErrorZrootnode)rÚtokensrÚpÚlinenoÚcolumnÚtypeÚvalueÚstartÚendZ line_textÚprefixZ quintupleZs_linenoZs_columnrrrÚ parse_tokens'sR      zDriver.parse_tokenscCstj|jƒ}|j||ƒS)N)rÚgenerate_tokensÚreadliner#)rÚstreamrrrrrÚparse_stream_rawWs zDriver.parse_stream_rawcCs |j||ƒS)N)r')rr&rrrrÚ parse_stream\szDriver.parse_streamc Cs*tj|d|ƒ}z |j||ƒS|jƒXdS)NÚr)ÚcodecsÚopenr(Úclose)rÚfilenameÚencodingrr&rrrÚ parse_file`s zDriver.parse_filecCstjtj|ƒjƒ}|j||ƒS)N)rr$ÚioÚStringIOr%r#)rÚtextrrrrrÚ parse_stringhszDriver.parse_string)NN)F)F)F)NF)F) Ú__name__Ú __module__Ú __qualname__rr#r'r(r/r3rrrrrs   0   cCs:tjj|ƒ\}}|dkrd}||djtttjƒƒdS)Nz.txtrÚ.z.pickle)ÚosÚpathÚsplitextÚjoinÚmapÚstrÚsysÚ version_info)ÚgtÚheadÚtailrrrÚ_generate_pickle_namensrCú Grammar.txtTFcCs°|dkrtjƒ}|dkr t|ƒn|}|s4t||ƒ rš|jd|ƒtj|ƒ}|r¬|jd|ƒy|j|ƒWq¬tk r–}z|jd|ƒWYdd}~Xq¬Xnt j ƒ}|j |ƒ|S)Nz!Generating grammar tables from %szWriting grammar tables to %szWriting failed: %s) r r rCÚ_newerÚinfor Zgenerate_grammarÚdumpÚOSErrorrÚGrammarÚload)r@ZgpÚsaveÚforcer ÚgÚerrrrus     cCs8tjj|ƒsdStjj|ƒs dStjj|ƒtjj|ƒkS)NFT)r8r9ÚexistsÚgetmtime)ÚaÚbrrrrEŠs   rEcCsFtjj|ƒrt|ƒSttjj|ƒƒ}tj||ƒ}tj ƒ}|j |ƒ|S)N) r8r9ÚisfilerrCÚbasenameÚpkgutilÚget_datarrIÚloads)ÚpackageZgrammar_sourceZ pickled_nameÚdatarMrrrÚload_packaged_grammar“s   rZcGsF|stjdd…}tjtjtjdd�x|D]}t|ddd�q,WdS)Nrz %(message)s)Úlevelr&ÚformatT)rKrL)r>Úargvr Z basicConfigÚINFOÚstdoutr)Úargsr@rrrÚmain§s  raÚ__main__)rDNTFN)Ú __author__Ú__all__r*r0r8r rUr>rrrrrr ÚobjectrrCrrErZrar4ÚexitÚintrrrrÚs"P