在ANTLR4中折叠空白

时间:2014-09-12 15:57:53

标签: antlr tokenize antlr4

在我的语法中,我有一个发送到HIDDEN频道的空白令牌:

SP : [ \u00A0\u000B\t\r\n] -> channel(HIDDEN);

我知道我可以使用TokenStream#getText(Context)获取已解析规则的文本,包括隐藏的令牌。我打电话给那儿时,我想把所有的空白都弄掉。

我也知道有TokenStreamRewriter用于重写特定令牌,但我没有看到重写所有特定类型的方法。

有没有办法将所有SP令牌折叠为单个空格输出?

1 个答案:

答案 0 :(得分:1)

这可以通过更改规则以匹配一个或多个空白字符(+)并指定操作来完成:

SP : [ \u00A0\u000B\t\r\n]+ { _text = " "; } -> channel(HIDDEN);