通常,(为了语法着色(我使用以下ANTLR行(例如,对于Java或C++源代码(来检测块注释(/* this is a comment */
(:
BlockComment
:
'/*' BlockCommentChar* '*/'
-> skip
;
fragment BlockCommentChar
: '*' ~'/'
| ~'*'
;
但是在V语言块中允许嵌套注释。我可以想象在检测到的/*
上以某种方式增加计数器,在*/
上减少计数器,但如何做到这一点,以及如何将/* fdksjfldjlf /* fjdsjfkds f */ jfdjf jd */
之间的所有内容报告为一个lexer令牌?
这样的东西应该可以工作:
BlockComment
: '/*' ( BlockComment | '/' ~'*' | ~'/' )*? '*/'
;