除了在某些情况下,我的语法必须在大多数情况下忽略空格。 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毫无头绪。