ANTLR错误:java.lang.NoSuchFieldError:InkingToken

ANTLR错误:java.lang.NoSuchFieldError:InkingToken,antlr,grammar,Antlr,Grammar,我已经编写了以下语法文件,并得到以下错误。我做了很多谷歌搜索,有人回答说语法有问题。但是下面的错误消息没有指明具体的位置,错误消息可能在哪里。你能告诉我为什么我会出现下面描述的错误吗 grammar ArchSpec; options { language = Java; } @lexer::header { package iotsuite.parser; } @parser::header { package iotsuite.parser; impor

我已经编写了以下语法文件,并得到以下错误。我做了很多谷歌搜索,有人回答说语法有问题。但是下面的错误消息没有指明具体的位置,错误消息可能在哪里。你能告诉我为什么我会出现下面描述的错误吗

grammar ArchSpec;  

options {
  language     = Java;  
}  

@lexer::header {
  package iotsuite.parser; 

}

@parser::header {
package iotsuite.parser;
import iotsuite.compiler.*; 
import iotsuite.semanticmodel.*;  

} 

@members {
  private SymbolTable context;     
} 

archSpec : 
     ('structs' ':' struct_def)*  
     'softwarecomponents' ':' (component_def)+
;   

component_def :
    'computationalService' ':' (cs_def)+   
; 

struct_def: 
    CAPITALIZED_ID 
    (structField_def ';')+       
;

structField_def:  
  lc_id ':' dataType 
; 

cs_def:
  CAPITALIZED_ID
   (csGeneratedInfo_def ';')+ 
    (csConsumeInfo_def ';')* 
    (csRequest_def  ';')*
    (cntrlCommand_def ';')* 
    (partition_def ';')+
   ;


csGeneratedInfo_def:
    'generate' lc_id ':'  CAPITALIZED_ID

;

csConsumeInfo_def:
    'consume' lc_id ('from' 'region-hops' ':' INT ':' CAPITALIZED_ID )?     

;

csRequest_def :
   'request' lc_id    
; 

cntrlCommand_def :
    'command'  name = CAPITALIZED_ID '(' (cntrlParameter_def)? ')' 'to'  'region-hops' ':' INT ':' CAPITALIZED_ID    
;

cntrlParameter_def :
    lc_id  (',' parameter_def )?   
; 

partition_def:  
    csDeploymentConstraint='partition-per' ':' CAPITALIZED_ID     
; 

lc_id: ID  
;

dataType: 
  primitiveType 
;

primitiveType:
  (id='Integer' | id='Boolean' | id='String' |  id = 'double' | id = 'long' | id='boolean' )
;

ID  : 'a'..'z'  ('a'..'z' | 'A'..'Z' )*
   ;

INT : '0'..'9'('0'..'9')*  ; 

CAPITALIZED_ID: 'A'..'Z' ('a'..'z' | 'A'..'Z' )*;

WS: ('\t' | ' ' | '\r' | '\n' | '\u000C')+ {$channel = HIDDEN;};
我在控制台上收到的错误消息如下

java.lang.NoSuchFieldError: offendingToken
    at org.deved.antlride.runtime.AntlrErrorListener.extractToken(AntlrErrorListener.java:111)
    at org.deved.antlride.runtime.AntlrErrorListener.report(AntlrErrorListener.java:79)
    at org.deved.antlride.runtime.AntlrErrorListener.message(AntlrErrorListener.java:63)
    at org.deved.antlride.runtime.AntlrErrorListener.error(AntlrErrorListener.java:53)
    at org.antlr.tool.ErrorManager.grammarError(ErrorManager.java:742)
    at org.antlr.tool.ErrorManager.grammarError(ErrorManager.java:750)
    at org.antlr.tool.NameSpaceChecker.lookForReferencesToUndefinedSymbols(NameSpaceChecker.java:133)
    at org.antlr.tool.NameSpaceChecker.checkConflicts(NameSpaceChecker.java:72)
    at org.antlr.tool.Grammar.checkNameSpaceAndActions(Grammar.java:804)
    at org.antlr.tool.CompositeGrammar.defineGrammarSymbols(CompositeGrammar.java:374)
    at org.antlr.Tool.process(Tool.java:484)
    at org.deved.antlride.runtime.Tool2.main(Tool2.java:24)
input I parse的一个实例如下所示:

softwarecomponents:
    computationalService:
        RoomAvgTemp 
            generate roomAvgTempMeasurement:TempStruct;
            consume tempMeasurement from region-hops:0:Room;
            partition-per : Room;       
        RoomController 
            consume roomAvgTempMeasurement from region-hops:0:Room;
            command SetTemp(setTemp) to region-hops:0:Room;
            partition-per : Room;

我有两个问题:在ANTLR-IDE之外测试语法时是否也会发生错误?如果是这样的话,你是否也可以发布触发此错误的输入?我可能无法正确理解你的问题。不过,让我试着以我的理解回答你的问题。我已经在Eclipse中安装了ANTLR插件。在eclipse控制台上,显示了上述错误。呃,您还没有回答我的任何问题:)。让我换一句话:(1)您是否尝试过在没有ANTLR-IDE(ANTLR插件)的情况下测试语法?和(2)你能发布你试图解析的输入吗?谢谢Bart提出的详细问题。(1) 在没有ANTLR插件的情况下,我没有尝试过测试我的语法,(2)为了供您参考,我用一个输入实例编辑了我的问题,我用这个语法解析它。