Antlr Syntax error: mismatched input 'p' expecting WS
Antlr Syntax error: mismatched input 'p' expecting WS
我有以下语法:
grammar myProject;
program: WS EOF myRules;
WS: [ \t\r\n]+ -> skip;
myRules: myRule+;
myRule: SELECTOR OPEN declarations CLOSE;
declarations: declaration+;
declaration: PROPERTY EQ value ENDSYMBOL;
value: INT | STRING | COLOR;
SELECTOR : (('#'CHAR+)|('.'CHAR+)|CHAR+);
PROPERTY : [A-z-]+;
STRING : '"' .*? '"';
INT : [0-9]+ ;
COLOR : '#' [0-9a-fA-F] [0-9a-fA-F] [0-9a-fA-F] [0-9a-fA-F] [0-9a-fA-F] [0-9a-fA-F];
CHAR: [A-z];
EQ : ':' ;
OPEN : '{';
CLOSE : '}';
ENDSYMBOL : ';' ;
现在我的输入是这样的:
p {
color: #054593;
width: 100px;
}
现在,当我解析它时出现以下错误:
语法错误:输入不匹配 'p' 需要 WS
我在堆栈上有很多问题,并且已经用谷歌搜索了很多,但我简单地找不到答案。我在语法上做错了什么?
为什么程序需要 WS,我该如何解决这个问题。
非常非常感谢!
你在语法中做的第一件事就是要求 WS:
program: WS EOF myRules;
因此,缺少任何空白字符,您的解析失败。我只是建议:
program: myRule*;
因为您已经使用跳过选项丢弃了空格。
我有以下语法:
grammar myProject;
program: WS EOF myRules;
WS: [ \t\r\n]+ -> skip;
myRules: myRule+;
myRule: SELECTOR OPEN declarations CLOSE;
declarations: declaration+;
declaration: PROPERTY EQ value ENDSYMBOL;
value: INT | STRING | COLOR;
SELECTOR : (('#'CHAR+)|('.'CHAR+)|CHAR+);
PROPERTY : [A-z-]+;
STRING : '"' .*? '"';
INT : [0-9]+ ;
COLOR : '#' [0-9a-fA-F] [0-9a-fA-F] [0-9a-fA-F] [0-9a-fA-F] [0-9a-fA-F] [0-9a-fA-F];
CHAR: [A-z];
EQ : ':' ;
OPEN : '{';
CLOSE : '}';
ENDSYMBOL : ';' ;
现在我的输入是这样的:
p {
color: #054593;
width: 100px;
}
现在,当我解析它时出现以下错误:
语法错误:输入不匹配 'p' 需要 WS
我在堆栈上有很多问题,并且已经用谷歌搜索了很多,但我简单地找不到答案。我在语法上做错了什么? 为什么程序需要 WS,我该如何解决这个问题。 非常非常感谢!
你在语法中做的第一件事就是要求 WS:
program: WS EOF myRules;
因此,缺少任何空白字符,您的解析失败。我只是建议:
program: myRule*;
因为您已经使用跳过选项丢弃了空格。