根据上下文跳过ANTLR v4中的空格

时间:2015-03-16 13:39:04

标签: conditional whitespace antlr4

在我的ANTLR4语法中,我想跳过一般的空格,以保持语法尽可能简单。为此,我使用词法分析器WS : [ \t\r\n]+ -> skip;

但是,输入中可能存在某些部分,其中空格很重要。一个例子是制表符分隔或需要计算空格以找出哪个数字写在哪一列中的表。

如果我可以关闭跳过某些开始和结束符号(table{ ... })之间的空格,这将是完美的。有可能吗?

如果没有,是否还有其他解决方案可根据具体情况在不同词法规则之间切换?

1 个答案:

答案 0 :(得分:2)

使用词汇模式查看具有上下文感知力的令牌。它更深入地涵盖了最终的ANTLR 4"书 - 第12章。我认为你应该能够把它拉下来。

声明一条规则,该规则将更改为"跳过空格模式",然后返回默认模式。

OPEN: '<' -> mode (SKIP_SPACES);

mode: SKIP_SPACES;
CLOSE: '>' -> mode (DEFAULT_MODE);
WS : [ \t\r\n]+ -> skip;