2012-02-23 129 views
0

我所知道的是它阻止antlr產生,我很抱歉。這裏的日誌文件:神祕的ANTLR錯誤

(10): internal error: /Bridge/bridge.g : java.lang.IllegalStateException: java.lang.NullPointerException 
org.deved.antlride.runtime.AntlrErrorListener$DynamicToken.invokeMethod(AntlrErrorListener.java:59) 
org.deved.antlride.runtime.AntlrErrorListener$DynamicToken.getLine(AntlrErrorListener.java:64) 
org.deved.antlride.runtime.AntlrErrorListener.report(AntlrErrorListener.java:131) 
org.deved.antlride.runtime.AntlrErrorListener.message(AntlrErrorListener.java:115) 
org.deved.antlride.runtime.AntlrErrorListener.warning(AntlrErrorListener.java:99) 
org.antlr.tool.ErrorManager.grammarWarning(ErrorManager.java:742) 
org.antlr.tool.ErrorManager.grammarWarning(ErrorManager.java:757) org.antlr.tool.Grammar.parseAndBuildAST(Grammar.java:655) 
org.antlr.Tool.getRootGrammar(Tool.java:626) org.antlr.Tool.process(Tool.java:459) 
org.deved.antlride.runtime.Tool2.main(Tool2.java:24) 
+1

可能不是一個ANTLR問題,但ANTLRIDE。嘗試使用org.antlr.Tool生成詞法分析器和/或解析器。從命令行執行:通過使用CLI驗證您是否得到相同的錯誤,請執行:java -cp antlr-3.4-complete.jar org.antlr.Tool bridge.g' – 2012-02-23 08:58:03

回答

0

我昨天有同樣的問題。不知道我的情況是否與你的情況相同,但值得一試。我有一個名爲註釋這樣的規則:

annotation 
    : AT class declaration? 
     -> ^(ANNOTATION class declaration?) 
    ; 

而且我想在大括號來解析子註解,所以我做:

subAnnotation: 
    : CURLY_START annotation CURLY_END 
     -> ^(ANNOTATION annotation) 
    ; 

這是給我同樣的錯誤了你的。所以,我最終懷疑它不工作。即使我不確定,我認爲問題是導致錯誤的註釋規則的遞歸。所以,我最終這樣做:

annotationValue: 
    : CURLY_START subAnnotation CURLY_END 
     -> ^(ANNOTATION subAnnotation) 
    ; 

subAnnotation 
    : AT class declaration? 
     -> ^(ANNOTATION class declaration?) 
    ; 

這解決了我的問題。就像我說的,我不知道這個修復是否可以應用於您的問題。此外,我認爲ANTLR能夠處理非左遞歸規則。也許有更好的工具知識的人可以證實它。

我必須承認我沒有嘗試@BartKiers的建議,也許它也會解決問題。

問候,
馬特

4

我用一個簡單的語法邏輯公式得到了同樣的錯誤。對我來說,問題是,ANTLR找不到明顯的起始規則,因爲我對我的預期起始規則進行了遞歸。指向遞歸的新規則添加了一條新規則(見http://thesoftwarelife.blogspot.com/2008/07/antlr-frustrations.html)。

很遺憾ANTLR IDE沒有正確地轉發錯誤信息。在命令行中我得到:

警告(138):Formula.g:0:1:語法公式:沒有開始規則(無規則顯然可以後跟EOF)

+0

。謝謝! – Donbhupi 2015-10-04 18:26:29