在Antlr4中基于每个解析器规则忽略空格

时间:2017-09-11 21:19:02

标签: parsing whitespace antlr4 xtext

除了在某些情况下,我的语法必须在大多数情况下忽略空格。 this question的答案建议定义特定词法规则来处理我想要的异常。

问题是(我认为)我无法在词法分析器级别处理这种情况,因为它们似乎在解析器级别被触发了。

更具体一点:我想识别像

这样的东西
MyRule:
   MyParseTree1 Operator MyParseTree2 // WS is skipped
   | MyParseTree1 WS SensitiveOperator WS MyParse // WS carries meaning

请记住我有一个 WS - >跳过规则,因为在我的大多数语法中都应该跳过空格。

Xtext中,规则可以在规则范围内指定隐藏令牌在规则范围内应用的内容:

MyRule (hidden COMMENTS):
  ... // WS reaches the parser, comments don't

MyRule2 (hidden WS, COMMENTS):
  ... // WS is skipped, comments too

但我对antlr4毫无头绪。

1 个答案:

答案 0 :(得分:1)

如果你想根据语法上下文跳过某个Tokens,你应该看看这个问题here,其中描述了跳过空格的给定过程(如你所愿)。