JavaCC中的解析器和SKIP指令

时间:2010-10-05 11:10:34

标签: java parsing grammar javacc

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

/ * bla bla bla bla bla bla bla bla * / =>我想定义一种像

这样的语法

<OPEN_COMMENT> SKIP ~[] until <CLOSE_COMMENT>我希望即使“bla”是常规令牌也是如此

感谢您的帮助

2 个答案:

答案 0 :(得分:0)

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

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

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

String comment() :
{
  Token token;
}
{
 token=( <WORD> )+
 {
   return token.toString();
 }
}

答案 1 :(得分:0)

我认为这里通常的程序是使用带有MORE的词法状态和SKIP或SPECIAL_TOKEN。您可以通过JavaCC source distribution附带的Java语法处理注释的方式查看此示例。