【发布时间】:2018-09-27 12:45:21
【问题描述】:
我尝试了一个 Antlr4 语法文件。当我更改 ID 属性的定义时
ID :[A-Z]+;
到
ID: [A-Z][A-Za-z0-9_]* ;
我收到了这个错误。
第 1:7 行不匹配的输入 'E550' 期望 {'W', 'I'}
第 1:12 行不匹配的输入 ';'期待 {'W', 'I'}
其实我知道原因。其中最长的数学。但我必须使用 ID Like 错误的方式。我的 foo 必须是 E 或 I 和 Number。我怎样才能让它发生?感谢任何帮助。
这是我的代码 sn-p 导致错误。
QUEST E550 ;
这是我的语法
grammar test;
block: foo+;
foo:ID op=(WARNING|INFORMATION)INT SCOL;
SCOL :';';
WARNING :'W';
INFORMATION :'I';
ID: [A-Z]+ ;
//if I change to ID: [A-Z][A-Za-z0-9_]* ; error occurs
INT : [0-9]+;
SPACE: [ \t\r\n] -> skip;
OTHER: . ;
【问题讨论】:
-
QUEST E550 ;无法被您发布的语法解析。但我可以做出有根据的猜测,您忘记在示例语法中添加ERROR : 'E';。