2017-09-23 27 views
0

当在ID下添加注释行时没问题,但是在WS下添加注释行会导致出现错误。整个文件Hello.g4列在下面。Antlr4语法中的评论的奇怪行为

/** 
* Define a grammar called Hello 
*/ 
grammar Hello; 
r : 'hello' ID ;   // match keyword hello followed by an identifier 

ID : [a-z]+ ;    // match lower-case identifiers 
/**********************************************************************************************/ 

WS : [ \t\r\n]+ -> skip ; // skip spaces, tabs, newlines 

/**********************************************************************************************/ 

输出我在控制台中得到的是如下:

ANTLR Tool v4.4 (/tmp/antlr-4.4-complete.jar) 
Hello.g4 -o /home/me/workspace/TestComment/target/generated-sources/antlr4 -listener -no-visitor -encoding UTF-8 
error(50): Hello.g4:13:0: syntax error: '<EOF>' came as a complete surprise to me 
1 error(s) 

BUILD FAIL 
Total time: 168 millisecond(s) 

运行Eclipse版本:Neon.3版本(4.6.3),默认ANTLR4项目。

ANTLR4为什么要关心尾随的注释行?

回答

1

ANTLR 4语法将JavaDoc注释定义为可选地允许作为标题和每个规则。没有规则在最后的'注释行'之后,所以它被解释为规则的无效开始。

将您的评论行更改为/*----*/以避免该错误。