繁体   English   中英

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

[英]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;
}

现在,当我解析此错误时,出现以下错误:

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

我在这里有很多红色问题,已经在Google上搜索了很多,但辛普利(Simpeley)找不到答案。 我的语法做错了什么? 该程序为什么需要WS,以及如何解决此问题。 非常感谢!

语法中要做的第一件事是需求WS:

program: WS EOF myRules;

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

program: myRule*;

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM