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