Java Antlr异常:没有序列化的ATN

Java Antlr异常:没有序列化的ATN,java,antlr4,Java,Antlr4,我试图理解如何使用ParseTreePattern从输入中获取特定元素。 因此,首先我尝试了以下方法: ParseTreePattern p = parser.compileParseTreePattern("<NODE>", GraphParser.RULE_input); 既然这是我语法的一部分,为什么这个标记不被识别呢 当我使用规则名创建树模式时,这也是我语法的一部分,我最终得到: Exception in thread "main" java.lang.Unsupport

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

 ParseTreePattern p = parser.compileParseTreePattern("<NODE>", GraphParser.RULE_input);
既然这是我语法的一部分,为什么这个标记不被识别呢

当我使用规则名
创建树模式时,这也是我语法的一部分,我最终得到:

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(显然,
ParsetRePattern
不是4.1库的一部分)。

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

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

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)