Warning: session_start(): Session cannot be started after headers have already been sent in /home/tvrreohg/public_html/manga.php on line 13
3 \Œã@s´dZdZddgZddlZddlZddlZddlZddlZddlZddl m Z m Z m Z m Z mZGdd„deƒZd d „Zddd„Zdd„Zdd„Zdd„Zedkr°ejeeƒ ƒƒdS)zZParser driver. This provides a high-level interface to parse a file into a syntax tree. 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__FcCs”tj|j|jƒ}|jƒd}d}d}}}} } d} �xR|D�]4} | \}}}} } |||fkrÀ||f|ks|t||f|fƒ‚|\} }|| kr¤| d| |7} | }d}||krÀ| | ||…7} |}|tjtjfkrø| |7} | \}}|j dƒr@|d7}d}q@|t j k�rtj |}|�r,|j jdt j||| ƒ|j||| |fƒ�rT|�rR|j jdƒPd} | \}}|j dƒr@|d7}d}q@Wtjd||| |fƒ‚|jS) z4Parse a series of tokens and return the syntax tree.rrNÚÚ z%s %r (prefix=%r)zStop.zincomplete input)rZParserrr ZsetupÚAssertionErrorrÚ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'sT      zDriver.parse_tokenscCstj|jƒ}|j||ƒS)z*Parse a stream and return the syntax tree.)rÚgenerate_tokensÚreadliner$)rÚstreamrrrrrÚparse_stream_rawWs zDriver.parse_stream_rawcCs |j||ƒS)z*Parse a stream and return the syntax tree.)r()rr'rrrrÚ parse_stream\szDriver.parse_streamc Cs*tj|d|ƒ}z |j||ƒS|jƒXdS)z(Parse a file and return the syntax tree.ÚrN)ÚcodecsÚopenr)Úclose)rÚfilenameÚencodingrr'rrrÚ parse_file`s zDriver.parse_filecCstjtj|ƒjƒ}|j||ƒS)z*Parse a string and return the syntax tree.)rr%ÚioÚStringIOr&r$)rÚtextrrrrrÚ parse_stringhszDriver.parse_string)NN)F)F)F)NF)F) Ú__name__Ú __module__Ú __qualname__rr$r(r)r0r4rrrrrs   0   cCs:tjj|ƒ\}}|dkrd}||djtttjƒƒdS)Nz.txtrÚ.z.pickle)ÚosÚpathÚsplitextÚjoinÚmapÚstrÚsysÚ version_info)ÚgtÚheadÚtailrrrÚ_generate_pickle_namensrDú 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)z'Load the grammar (maybe from a pickle).Nz!Generating grammar tables from %szWriting grammar tables to %szWriting failed: %s) r r rDÚ_newerÚinfor Zgenerate_grammarÚdumpÚOSErrorrÚGrammarÚload)rAZgpÚsaveÚforcer ÚgÚerrrrus     cCs8tjj|ƒsdStjj|ƒs dStjj|ƒtjj|ƒkS)z0Inquire whether file a was written since file b.FT)r9r:ÚexistsÚgetmtime)ÚaÚbrrrrFŠs   rFcCsFtjj|ƒrt|ƒSttjj|ƒƒ}tj||ƒ}tj ƒ}|j |ƒ|S)aÙNormally, loads a pickled grammar by doing pkgutil.get_data(package, pickled_grammar) where *pickled_grammar* is computed from *grammar_source* by adding the Python version and using a ``.pickle`` extension. However, if *grammar_source* is an extant file, load_grammar(grammar_source) is called instead. This facilitates using a packaged grammar file when needed but preserves load_grammar's automatic regeneration behavior when possible. ) r9r:ÚisfilerrDÚbasenameÚpkgutilÚget_datarrJÚloads)ÚpackageZgrammar_sourceZ pickled_nameÚdatarNrrrÚload_packaged_grammar“s   r[cGsF|stjdd…}tjtjtjdd�x|D]}t|ddd�q,WdS)z�Main program, when run as a script: produce grammar pickle files. Calls load_grammar for each argument, a path to a grammar text file. rNz %(message)s)Úlevelr'ÚformatT)rLrM)r?Úargvr Z basicConfigÚINFOÚstdoutr)ÚargsrArrrÚmain§s  rbÚ__main__)rENTFN)Ú__doc__Ú __author__Ú__all__r+r1r9r rVr?rrrrrr ÚobjectrrDrrFr[rbr5ÚexitÚintrrrrÚ s$P