Java 初始化我的Lexer会在Antlr4中抛出一个错误
大家好,Java 初始化我的Lexer会在Antlr4中抛出一个错误,java,parsing,antlr,antlr4,antlrworks2,Java,Parsing,Antlr,Antlr4,Antlrworks2,大家好, 我是Antlr的新手,我花了4天时间学习、安装、运行教程并与我的IDE集成( 我可以在终端中成功运行此[tutorial][1]。我现在的目标是使用AntlrWorks2在Netbeans中运行相同的教程,我从[Here][2]中拆下了主教程。 代码可以编译,但是当我运行时,我从Lexer的init中得到一个“java.lang.ExceptionInInitializerError” 1: 2:) 语法: grammar Split; @header { package
我是Antlr的新手,我花了4天时间学习、安装、运行教程并与我的IDE集成( 我可以在终端中成功运行此[tutorial][1]。我现在的目标是使用AntlrWorks2在Netbeans中运行相同的教程,我从[Here][2]中拆下了主教程。 代码可以编译,但是当我运行时,我从Lexer的init中得到一个“java.lang.ExceptionInInitializerError” 1:
2:) 语法:
grammar Split;
@header {
package PlayGround.AutoGen;
}
hi : HELLO ID ; // match keyword hello followed by an identifier
ID : [a-z]+ | [A-Z]+; // match lower-case identifiers
WS : [ \t\r\n]+ -> skip ; // skip spaces, tabs, newlines
HELLO : '[H|h]ello';
主要内容:
}
错误:
run:
Exception in thread "main" java.lang.ExceptionInInitializerError
at PlayGround.MyMain.MyAttempt(MyMain.java:28)
at PlayGround.MyMain.main(MyMain.java:21)
Caused by: java.lang.UnsupportedOperationException: java.io.InvalidClassException: org.antlr.v4.runtime.atn.ATN; Could not deserialize ATN with version 2 (expected 3).
at org.antlr.v4.runtime.atn.ATNSimulator.deserialize(ATNSimulator.java:132)
at PlayGround.AutoGen.SplitLexer.<clinit>(SplitLexer.java:78)
... 2 more
Caused by: java.io.InvalidClassException: org.antlr.v4.runtime.atn.ATN; Could not deserialize ATN with version 2 (expected 3).
... 4 more
Java Result: 1
BUILD SUCCESSFUL (total time: 1 second)
运行:
线程“main”java.lang.ExceptionInInitializeError中出现异常
MyMain.mytrunt(MyMain.java:28)
在操场上.MyMain.main(MyMain.java:21)
原因:java.lang.UnsupportedOperationException:java.io.InvalidClassException:org.antlr.v4.runtime.atn.atn;无法反序列化版本为2(应为3)的ATN。
反序列化(ATNSimulator.java:132)
在操场上.AutoGen.SplitLexer.(SplitLexer.java:78)
... 还有两个
原因:java.io.InvalidClassException:org.antlr.v4.runtime.atn.atn;无法反序列化版本为2(应为3)的ATN。
... 4更多
Java结果:1
生成成功(总时间:1秒)
回答:听起来可能有版本问题。ANTLR生成具有特殊格式的序列化ATN(增强转换网络),该格式可以在不同版本之间更改,如4.0到4.1。在NetBeans中加载从命令行生成的一个版本和最新AW2的源代码时,您可能试图用另一个版本读取它。“您的解析器是用ANTLR 4.0生成的,但您正试图用ANTLR 4.1执行它。最可能的原因是使用ANTLRWorks 2.0生成解析器,该解析器在内部使用ANTLR 4.0。我正在发布ANTLRWorks 2.1,它将纠正这种不匹配。“-280Z28
是的,我在这里找到了答案。
run:
Exception in thread "main" java.lang.ExceptionInInitializerError
at PlayGround.MyMain.MyAttempt(MyMain.java:28)
at PlayGround.MyMain.main(MyMain.java:21)
Caused by: java.lang.UnsupportedOperationException: java.io.InvalidClassException: org.antlr.v4.runtime.atn.ATN; Could not deserialize ATN with version 2 (expected 3).
at org.antlr.v4.runtime.atn.ATNSimulator.deserialize(ATNSimulator.java:132)
at PlayGround.AutoGen.SplitLexer.<clinit>(SplitLexer.java:78)
... 2 more
Caused by: java.io.InvalidClassException: org.antlr.v4.runtime.atn.ATN; Could not deserialize ATN with version 2 (expected 3).
... 4 more
Java Result: 1
BUILD SUCCESSFUL (total time: 1 second)