我有一个简单的antlr4词法分析器,以下脚本有效,
lexer = MyLexer(InputStream(argv[1]))
stream = CommonTokenStream(lexer)
parser = MyParser(stream)
tree = parser.query()
v = MyVisitor()
v.visit(tree)
但我想知道我是否可以重用MyLexer
类对象?
如果是这样,我该如何重新设置输入字符串?
答案 0 :(得分:1)
可以通过lexer.setInputStream()
在词法分析器中设置输入流(甚至可以与之前相同)。然后还通过parser.setTokenSource()
在解析器中重新设置词法分析器(也可以是相同的)。如果您也重复使用,请拨打stream.reset()
和parser.reset()
。
仅供参考:如果您想重新使用输入流,可以在其上调用input.load(text)
来加载新输入。