ANTLR3 注释词法分析器规则的例外



我正在修改已经存在的ANTLR语法文件,以允许能够解析特定的注释。目前存在一个词法分析规则,用于过滤隐藏通道的所有注释。该规则如下所示:

 COMMENT : '//' .* ('n' | 'r') {$channel = HIDDEN;};

我想修改此规则以允许评论通过,如果它是//@key.我试图使用否定语句来尝试通过使用似乎有效的//~('@')来阻止//@key语句匹配,但还有其他//@标签,我想继续过滤到此语句允许通过的隐藏通道。

在词法分析中,如果输入可以匹配多个规则,则使用最顶层的规则(按语法文件的顺序)。

所以你可以做:

SPECIAL_COMMENT : '//@key' .*  ('n' | 'r');
COMMENT : '//' .* ('n' | 'r') {$channel = HIDDEN;};

最新更新