仅忽略解析器中的空格

Ignore whitespace in parser only

我正在使用 JSON grammar from the antlr4 grammar repository 来解析 JSON 文件。它工作正常并使用通常的规则忽略空格:WS: [ \t\n\r] + -> skip;

我想重新使用词法分析器来识别所有标记,以便在 eclipse 中突出显示语法。它还需要指定空白标记,但调用 JSONLexer.nextToken() 会跳过它们。

有没有办法在直接使用词法分析器时跳过空格?

使用以下内容:

WS: [ \t\n\r] + -> channel(HIDDEN);

它不会完全丢弃空格,它仍会创建 WS 个标记,但它们最终会出现在一个单独的通道中(名为 HIDDEN)。解析器只能 "listen" 到单个通道,但词法分析器仍然允许您从任何通道检索标记。