Antlr 语法错误:不匹配的输入'p'期望 WS



我有以下语法:

grammar myProject;
program: WS EOF myRules;
WS: [ trn]+ -> 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 以及如何解决此问题。提前非常感谢!

你在语法中做的第一件事就是要求WS:

program: WS EOF myRules;

因此,缺少任何空格字符,您的解析将失败。 我只是建议:

program: myRule*;

因为您已经使用跳过选项丢弃了空格。

相关内容

  • 没有找到相关文章

最新更新