在我的语法中,我有一个发送到HIDDEN
频道的空白令牌:
SP : [ \u00A0\u000B\t\r\n] -> channel(HIDDEN);
我知道我可以使用TokenStream#getText(Context)
获取已解析规则的文本,包括隐藏的令牌。我打电话给那儿时,我想把所有的空白都弄掉。
我也知道有TokenStreamRewriter
用于重写特定令牌,但我没有看到重写所有特定类型的方法。
有没有办法将所有SP
令牌折叠为单个空格输出?
答案 0 :(得分:1)
这可以通过更改规则以匹配一个或多个空白字符(+
)并指定操作来完成:
SP : [ \u00A0\u000B\t\r\n]+ { _text = " "; } -> channel(HIDDEN);