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