我有以下语法:
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
我在堆栈上有很多问题,并且已经搜索了很多问题,但我辛普利找不到一个anwser。我的语法错在哪里? 为什么程序需要WS,我该如何解决这个问题。 很多,非常感谢提前!
答案 0 :(得分:0)
你在语法中做的第一件事就是需求WS:
program: WS EOF myRules;
因此,缺少任何空白字符,您的解析失败。我只是建议:
program: myRule*;
因为您已经使用跳过选项丢弃了空格。