Antlr4:第 1:14 行 期望 {, '<EOF>;', } 的无关输入 'w'

  • 本文关键字:EOF 期望 Antlr4 antlr4
  • 更新时间 :
  • 英文 :


我试着写一个语法检查以下数据(csv文件)是否有效:

w;w;w;s;s;s;s
w;s;w;w;w;w;w
w;s;w;w;w;w;w
w;s;w;s;s;s;w
w;s;w;w;w;w;w
w;s;w;w;w;w;w
w;w;s;s;w;w;w

* Define a grammar Battlefield
 */
grammar Battlefield;
file : row* EOF;
row : value (Separator value)* (LineFeed |EOF) ;
value : SimpleValue ;
Separator : ';' ;
// line feed
LineFeed : 'n';
// w or s is allowed
SimpleValue : ('s'|'w'|'n')+ ;
WS : [ tr]+ -> skip ; // skip spaces, tabs

运行语法时,我得到以下错误代码:

line 1:14 extraneous input 'w' expecting {<EOF>, ';', '
'}

怎么了?

您的SimpleValue规则将始终使用末尾的n,因此不会生成LineFeed令牌。只需从SimpleValue规则中删除n alt。

最新更新