导致多行注释跳转中断-6ren"> 导致多行注释跳转中断-所以我遇到了 javacc 和跳过注释的问题。我有一个多行注释跳过,它本身可以包含多个注释(注释是出现在 /* 和 */ 中的任何内容),我也使用此代码段 跳过单行注释。两者相互独立,但结合使用时,单-6ren">
gpt4 book ai didi

regex - 在 javacc 中正确跳过单行注释的另一种方法? <"//"(~ ["\n"])* "\n"> 导致多行注释跳转中断

转载 作者:行者123 更新时间:2023-12-01 12:59:01 24 4
gpt4 key购买 nike

所以我遇到了 javacc 和跳过注释的问题。我有一个多行注释跳过,它本身可以包含多个注释(注释是出现在 /**/ 中的任何内容),我也使用此代码段 <"//" (~["\n"])* "\n">跳过单行注释。两者相互独立,但结合使用时,单行注释似乎打断了我的多行注释。

解析器不再识别多行注释,而是将其解析为 OTHER( /* )、ID 等的组合。

下面是我的多行注释和单行注释跳过的代码:

SKIP:
{
"/*" {commentnesting++;} : IN_COMMENT
}

<IN_COMMENT> SKIP :
{
"/*" {commentnesting++;}
| "*/" {commentnesting--;
if(commentnesting == 0) {
SwitchTo(DEFAULT);
}
}
| <~[]>
}

SKIP :
{
<"//" (~["\n"])* "\n">
}

我的问题是:

  • 单行注释怎么会导致多行注释中断,在我相对较新的眼里它们似乎具有完全不同的正则表达式?
  • 他们是否是一种编写单行注释 skip 的方法,以便它执行与以前相同的功能,但当两者一起使用时不会破坏多行注释?

最佳答案

看起来应该可行,只是您似乎缺少一些尖括号。而不是:

"/*" {commentnesting++;} : IN_COMMENT

...不应该是:

<"/*"> {commentnesting++;} : IN_COMMENT

...与您的第二条规则类似?

关于regex - 在 javacc 中正确跳过单行注释的另一种方法? <"//"(~ ["\n"])* "\n"> 导致多行注释跳转中断,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7904755/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com