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)为了供您参考,我用一个输入实例编辑了我的问题,我用这个语法解析它。