ANTLR 4 $ channel =隐藏和选项

决定从v3切换到v4后,我需要有关ANTLR 4语法的帮助。我对ANTLR的经验不是很丰富,如果我的问题很愚蠢,我真的很抱歉;)

在v3中,我使用以下代码来检测Java风格的注释:

COMMENT

: '//' ~('\n'|'\r')* '\r'? '\n' {$channel=HIDDEN;}

| '/*' ( options {greedy=false;} : . )* '*/' {$channel=HIDDEN;}

;

在v4中,没有特定于规则的选项。动作(移至隐藏通道)也无效。

有人可以给我提示如何在ANTLR v4中做到吗?

回答:

相当于v4的样子:

COMMENT

: ( '//' ~[\r\n]* '\r'? '\n'

| '/*' .*? '*/'

) -> channel(HIDDEN)

;

这会将所有单行和多行注释添加到HIDDEN频道上。但是,如果您不对这些HIDDEN-token

做任何事情,那么您也可以选择skip这些令牌,如下所示:

COMMENT

: ( '//' ~[\r\n]* '\r'? '\n'

| '/*' .*? '*/'

) -> skip

;

注意,要告诉词法分析器或解析器匹配不贪心,您不再使用options {greedy=false;},而是?像许多regex实现一样附加一个。

以上是 ANTLR 4 $ channel =隐藏和选项 的全部内容, 来源链接: utcz.com/qa/418863.html

回到顶部