0

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

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

<OPEN_COMMENT> SKIP ~[] until <CLOSE_COMMENT>即使“bla”是常规标记,我也希望它是真的

谢谢你的帮助

4

2 回答 2

0

您可以使用正则表达式来做到这一点。

您可以按如下方式定义标记和规则:

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

String comment() :
{
  Token token;
}
{
 token=( <WORD> )+
 {
   return token.toString();
 }
}
于 2010-10-05T15:55:39.783 回答
0

我认为这里通常的程序是使用带有 MORE 和 SKIP 或 SPECIAL_TOKEN 的词法状态。您可以在JavaCC 源代码分发附带的 Java 语法处理注释的方式中看到一个示例。

于 2010-10-07T10:21:03.797 回答