gpt4 book ai didi

java - Antlr异常: there is no serialized ATN

转载 作者:行者123 更新时间:2023-12-01 13:28:32 25 4
gpt4 key购买 nike

我试图了解如何使用 ParseTreePattern为了从我的输入中获取特定元素。所以首先我尝试了以下方法:

 ParseTreePattern p = parser.compileParseTreePattern("<NODE>", GraphParser.RULE_input);

哪里NODE是我语法中的一个标记,我最终得到

Unknown token NODE in pattern: <NODE>

那么为什么这个标记不被识别,因为它是我语法的一部分?

当我使用规则名称<quantifier>的树模式时这又是我最终得到的语法的一部分:

Exception in thread "main" java.lang.UnsupportedOperationException: there is no serialized ATN
at org.antlr.v4.runtime.Recognizer.getSerializedATN(Recognizer.java:134)
at org.antlr.v4.runtime.Parser.getATNWithBypassAlts(Parser.java:458)
at org.antlr.v4.runtime.tree.pattern.ParseTreePatternMatcher.tokenize(ParseTreePatternMatcher.java:414)
at org.antlr.v4.runtime.tree.pattern.ParseTreePatternMatcher.compile(ParseTreePatternMatcher.java:218)
at org.antlr.v4.runtime.Parser.compileParseTreePattern(Parser.java:506)
at org.antlr.v4.runtime.Parser.compileParseTreePattern(Parser.java:492)
at main.Main.main(Main.java:47)

那么第二个错误是什么意思呢?只是为了澄清我正在使用 ANTLR 4.2(显然 ParseTreePattern 不是 4.1 库的一部分)。

最佳答案

这意味着您的语法是使用 ANTLR 4.1 生成的。我们非常小心地确保从 4.1 升级到 4.2 的用户的现有代码不会中断,但要使用 4.2 中的新功能,您需要使用最新版本的工具重新生成解析器。

如果您还没有这样做,我强烈建议您将解析器生成过程集成到您的构建系统(例如 Maven、Ant)中,以确保始终使用正确的版本。

关于java - Antlr异常: there is no serialized ATN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21687043/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com