ANTLR:空间缩进?

时间:2012-08-30 21:17:30

标签: java antlr lexer

我想用空格缩进创建一个非常简单的语法。每行由1个或多个单词组成,但缩进如python(4个空格或制表符是一个缩进),并且缩进没有关闭,例如:

if something cool occurs
    do this
else
    otherwise do this
    loop around something
       each time doing this
       and do that
say good byte

而不是读取每一行,计算缩进并手动构建树是否可以在ANTLR语法中完成所有这些操作?我的目标语言是Java。

1 个答案:

答案 0 :(得分:1)

这是可能的。您所要做的就是定义规则并跳过它。

你走了:

Ignore :  (' ' | '\t' | '\n' | '\r')+ {skip();}; 

或者如果您需要识别\ n或\ r

Ignore :  (' ' | '\t')+ {skip();}; 

将此添加到您的gramar中,将忽略所有空格和制表符。