use*_*330 31 java migration antlr antlr4
在决定从v3切换到v4后,我需要帮助我的ANTLR 4语法.我对ANTLR不太熟悉,所以如果我的问题很愚蠢,我真的很抱歉;)
在v3中,我使用以下代码来检测Java样式的注释:
COMMENT
: '//' ~('\n'|'\r')* '\r'? '\n' {$channel=HIDDEN;}
| '/*' ( options {greedy=false;} : . )* '*/' {$channel=HIDDEN;}
;
Run Code Online (Sandbox Code Playgroud)
在v4中,没有特定于规则的选项.操作(移至隐藏频道)也无效.
有人可以给我一个提示如何在ANTLR v4中做到这一点吗?
Bar*_*ers 40
v4等价物看起来像:
COMMENT
: ( '//' ~[\r\n]* '\r'? '\n'
| '/*' .*? '*/'
) -> channel(HIDDEN)
;
Run Code Online (Sandbox Code Playgroud)
这将把所有单行和多行注释放在HIDDEN频道上.但是,如果你没有对这些HIDDEN-tokens 做任何事情,你也可以使用skip这些令牌,如下所示:
COMMENT
: ( '//' ~[\r\n]* '\r'? '\n'
| '/*' .*? '*/'
) -> skip
;
Run Code Online (Sandbox Code Playgroud)
请注意,要告诉词法分析器或解析器不匹配,您不再使用options {greedy=false;},而是附加一个?,类似于许多正则表达式实现.
| 归档时间: |
|
| 查看次数: |
12269 次 |
| 最近记录: |