在antlr4 python目标中重用词法分析器对象



我有一个简单的antlr4词法分析器,下面的脚本可以工作,

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

但是我想知道我是否可以重用MyLexer类对象?

如果是,我如何重新设置输入字符串?

可以通过lexer.setInputStream()在词法分析器中设置输入流(甚至可以与以前相同)。然后通过parser.setTokenSource()重新设置解析器中的词法分析器(也可以是相同的)。最后调用stream.reset()parser.reset(),如果你也重用它们。

供参考:如果你甚至想重用输入流,你可以调用input.load(text)来加载新的输入。

相关内容

  • 没有找到相关文章

最新更新