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