ANTLR:处理嵌套行注释

时间:2020-09-07 10:54:40

标签: antlr antlr4

通常,(用于语法着色)我使用以下ANTLR行(例如,对于Java或C ++源代码)来检测块注释(/* this is a comment */):

BlockComment
    :
      '/*' BlockCommentChar* '*/'
      -> skip
    ;

fragment BlockCommentChar
    : '*'  ~'/'
    | ~'*'
    ;

但是在V语言块中,允许嵌套注释。我可以想象以某种方式在检测到的/*处增加一个计数器,并在*/处减少它,但是如何做到这一点以及如何将/* fdksjfldjlf /* fjdsjfkds f */ jfdjf jd */之间的所有内容作为一个词法器令牌报告? >

1 个答案:

答案 0 :(得分:2)

类似的事情应该起作用:

BlockComment
 : '/*' ( BlockComment | '/' ~'*' | ~'/' )*? '*/'
 ;
相关问题