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

我试图用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' '\'' 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 '''