Hi Team,
我是Antlr的新手,我花了4天的時間學習,安裝,運行教程並與IDE集成。 :(初始化我的Lexer在Antlr4中拋出錯誤
我可以運行此[教程] [1]在終端成功。我現在的目標是運行NetBeans中的相同教程,AntlrWorks2我已經蠶食了主從[這裏] [2]。
代碼編譯,但是當我跑我得到一個 「java.lang.ExceptionInInitializerError」 由init詞法分析器的
1:http://www.antlr.org/wiki/display/ANTLR4/Getting+Started+with+ANTLR+v4
2:http://www.certpal.com/blogs/2011/01/antlr-tutorial-hello-antlr/)
語法:
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';
主要:
public class MyMain {
public static void main(String args[]) {
new MyMain().MyAttempt();
}
public void MyAttempt() {
try {
String string = "Hello World";
CharStream charStream = new ANTLRInputStream(string);
/*Line 28*/ SplitLexer lex = new SplitLexer(charStream); /*Line 28*/
org.antlr.v4.runtime.CommonTokenStream tokens;
tokens = new org.antlr.v4.runtime.CommonTokenStream(lex);
SplitParser parser = new SplitParser(tokens);
SplitParser.HiContext split = parser.hi();
String toString = split.toString();
System.out.println(toString);
} catch (Exception e) {
e.printStackTrace();
}
}
}
錯誤:
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)
解答:antlr4: ATN version 2 expected 3
是的,我剛剛在這裏找到答案。 http://stackoverflow.com/questions/18180103/antlr4-atn-version-2-expected-3 –
WOAH!剛剛意識到你是誰,謝謝你的迴應。 –