Antlr4:行 1:14 无关输入 'w' 期待 {<EOF>, ';', ' '}
Antlr4: line 1:14 extraneous input 'w' expecting {<EOF>, ';', ' '}
我尝试编写一个语法来检查以下数据(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 : [ \t\r]+ -> skip ; // skip spaces, tabs
当运行语法我得到以下错误代码:
line 1:14 extraneous input 'w' expecting {<EOF>, ';', '
'}
怎么了?
您的 SimpleValue
规则将始终使用尾随 \n
,因此永远不会生成 LineFeed
令牌。只需从 SimpleValue
规则中删除 \n
alt。
我尝试编写一个语法来检查以下数据(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 : [ \t\r]+ -> skip ; // skip spaces, tabs
当运行语法我得到以下错误代码:
line 1:14 extraneous input 'w' expecting {<EOF>, ';', '
'}
怎么了?
您的 SimpleValue
规则将始终使用尾随 \n
,因此永远不会生成 LineFeed
令牌。只需从 SimpleValue
规则中删除 \n
alt。