我有一个简单的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)
来加载新输入。
关于python - 在antlr4 python目标中重用词法分析器对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40084581/