我正在使用JavaCC来构建复杂的解析器。有一次,我想跳过我看到的所有角色,直到我的语法中出现一个所需的标记......让我们以下面的方式为例
/ * bla bla bla bla bla bla bla bla * / =>我想定义一种像
这样的语法 <OPEN_COMMENT> SKIP ~[] until <CLOSE_COMMENT>
我希望即使“bla”是常规令牌也是如此
感谢您的帮助
答案 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语法处理注释的方式查看此示例。