2016-10-17 20 views
1

における再利用のレクサー・オブジェクト私は、単純なantlr4のレクサーを持って、次のスクリプトは動作しますが、antlr4 Pythonの対象

lexer = MyLexer(InputStream(argv[1])) 
    stream = CommonTokenStream(lexer) 
    parser = MyParser(stream) 
    tree = parser.query() 

    v = MyVisitor() 
    v.visit(tree) 

しかし、私はMyLexerクラスオブジェクトを再利用することができます場合、私は思ったんだけど?

もしそうなら、どうすれば入力文字列を再設定できますか?

答えて

1

入力ストリームをレクサーに設定すると(以前と同じこともあります)、lexer.setInputStream()で可能です。次に、parser.setTokenSource()を介してパーサ内のレクサー(同じものでもよい)を再設定します。最後に、stream.reset()parser.reset()も再使用してください。

FYI:入力ストリームを再利用したい場合は、input.load(text)を呼び出して新しい入力を読み込むことができます。

関連する問題