ANTLR 4:跳过多参数行中的空格
我试图用ANTLR 4解析一行,如下所示:ANTLR 4:跳过多参数行中的空格,antlr,Antlr,我试图用ANTLR 4解析一行,如下所示: circle 'my circle' : posx = '800'; posy = '640'; 我希望能够在不考虑空格、制表符和新行的情况下解析它,例如: circle'my circle':posx='800';posy='640'; 或 我现在的语法是: grammar Circle; prog : statement* ; statement : circle ; circle : INDENT
circle 'my circle' : posx = '800'; posy = '640';
我希望能够在不考虑空格、制表符和新行的情况下解析它,例如:
circle'my circle':posx='800';posy='640';
或
我现在的语法是:
grammar Circle;
prog
: statement*
;
statement
: circle
;
circle
: INDENT? 'circle' '\'' VALUES '\'' ':' params
;
params
: param+
;
param
: ARG '=' '\'' VALUES '\'' ';'
;
INDENT : [ \t]+;
VALUES : ARG (ARG)* ;
ARG : [a-zA-Z0-9]+;
WS : [ \t\n\r]+ -> skip;
无论如何,正在尝试分析以下内容:
circle 'my circle' : posx='800'; posy = '640';
我得到:
line 1:5 mismatched input ' ' expecting '''
关于如何在跳过空格、制表符的情况下修复语法来解析行文本的想法, 这是因为在语法分析器规则中,你需要WS。 类似于圆<代码>缩进?“圈出“WS”\''值“\''WS”:“params,然后在lexer规则中跳过所有WS
[\t\n\r]+->skip代码>
line 1:5 mismatched input ' ' expecting '''
出现此错误是因为在ARG中可以有WS,所以需要在lexer ARG规则中添加“”。我不知道AntlR4,但在AntlR3中应该是这样的
ARG:('a'..'z'|'a'..'z'|'|'|''0'..'9'|'')+
是的,这是真的。事实上,我正试图得到一个类似python的缩进,但暂时没有成功。
line 1:5 mismatched input ' ' expecting '''