折叠ANTLR4中的空白

折叠ANTLR4中的空白,antlr,tokenize,antlr4,Antlr,Tokenize,Antlr4,在我的语法中,我有一个空白标记,它被发送到隐藏的频道: SP : [ \u00A0\u000B\t\r\n] -> channel(HIDDEN); 我知道我可以使用TokenStream\getText(Context)获取解析规则的文本,包括隐藏的标记。我希望当我调用它时,所有的空格都折叠起来 我还知道有一个TokenStreamRewriter用于重写特定的令牌,但我看不到重写所有特定类型令牌的方法 有没有办法将所有SP标记折叠为单个空格输出?这可以通过更改规则以匹配一个或多个空格

在我的语法中,我有一个空白标记,它被发送到
隐藏的
频道:

SP : [ \u00A0\u000B\t\r\n] -> channel(HIDDEN);
我知道我可以使用
TokenStream\getText(Context)
获取解析规则的文本,包括隐藏的标记。我希望当我调用它时,所有的空格都折叠起来

我还知道有一个
TokenStreamRewriter
用于重写特定的令牌,但我看不到重写所有特定类型令牌的方法


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

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

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

至少,这几乎是一个复制品。事实上。我先问了这个问题,然后意识到其中隐藏着一个更普遍的问题;我觉得这太不一样了,所以不适合编辑整个问题。