JavaCC中的解析器和SKIP指令

JavaCC中的解析器和SKIP指令,java,parsing,grammar,javacc,Java,Parsing,Grammar,Javacc,我正在使用JavaCC构建一个复杂的解析器。在某一点上,我想跳过我看到的所有字符,直到语法中出现所需的标记。。。让我们以下面的例子为例 /*布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉*/=>我想定义一种语法,比如 跳过~[]直到我希望它是真的,即使“bla”是一个常规标记 感谢您的帮助您可以使用正则表达式来完成 您可以定义令牌和规则,如下所示: TOKEN : { < #DIGIT : [ "0"-"9" ] > | < #ALPHABET: ["a" - "z"]

我正在使用JavaCC构建一个复杂的解析器。在某一点上,我想跳过我看到的所有字符,直到语法中出现所需的标记。。。让我们以下面的例子为例

/*布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉*/=>我想定义一种语法,比如

跳过~[]直到
我希望它是真的,即使“bla”是一个常规标记


感谢您的帮助

您可以使用正则表达式来完成

您可以定义令牌和规则,如下所示:

TOKEN :
{
< #DIGIT : [ "0"-"9" ] >
| < #ALPHABET: ["a" - "z"] >
| < #CAPSALPHABET: ["A" - "Z"] >
| < WORD: ( <DIGIT> | <ALPHABET> | <CAPSALPHABET>)+ >
}

String comment() :
{
  Token token;
}
{
 token=( <WORD> )+
 {
   return token.toString();
 }
}
令牌:
{
<#数字:[“0”-“9”]>
|<#字母表:[“a”-“z”]>
|<#CAPSALPHABET:[“A”-“Z”]>
|
}
字符串注释():
{
代币;
}
{
令牌=()+
{
返回token.toString();
}
}

我认为这里通常的程序是将词法状态与更多以及SKIP或SPECIAL_标记一起使用。您可以从随附的Java语法处理注释的方式中看到一个例子

是的,我一开始就是这么想的。。。但问题是:我把你的语法当作参考。如果我添加标记:
:'bla'
,解析器将返回
,而不是
(取决于第一个定义的是哪个)。编译器会说“carrele,单词”bla“将由令牌匹配
@BlackLabrador:我无法清楚地理解您的问题。您能否提供有关预期输出和当前解析器提供的输出的更多详细信息?你想识别一条评论,对吗?你能告诉我,在我的回答中使用语法的解析器的输出是什么吗?