在antlr4 python目标中重用lexer对象

时间:2016-10-17 10:55:53

标签: python antlr antlr4

我有一个简单的antlr4词法分析器,以下脚本有效,

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

    v = MyVisitor()
    v.visit(tree)

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

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

1 个答案:

答案 0 :(得分:1)

可以通过lexer.setInputStream()在词法分析器中设置输入流(甚至可以与之前相同)。然后还通过parser.setTokenSource()在解析器中重新设置词法分析器(也可以是相同的)。如果您也重复使用,请拨打stream.reset()parser.reset()

仅供参考:如果您想重新使用输入流,可以在其上调用input.load(text)来加载新输入。