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

标签 python antlr antlr4

我有一个简单的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/

相关文章:

c# - 错误 - 词法分析器规则 'xxxx' 中的操作必须是单个最外层 alt 的最后一个元素

antlr - 从ANTLR生成EBNF

python - python列表中的冒号和逗号代表什么?

python - AutoMl Edge 模型仅显示图像

parsing - 使用 ANTLR 捕获(并保留)所有评论

pretty-print - 如何使用 ANTLR4 漂亮地打印作品和行号?

java - ANTLR:处理表情符号字符

java - ANTLR 输出及其顺序

python - 当 inf 存在时, np.percentile 返回与 np.median 不同的中位数

python - 如何实现子串算法