Parsing JavaCC重复()*

Parsing JavaCC重复()*,parsing,lexer,javacc,Parsing,Lexer,Javacc,我正在使用JavaCC生成解析 作为一种象征,我在写: TOKEN: { < #LETTER : ["a"-"z", "A"-"Z" ] > | < #DIGIT : [ "0"-"9" ] > | < IDENTIFIER: ("_" |< LETTER >) ("_" | < LETTER > | < DIGIT >)*> } 作为解析器方法: SimpleNode Identifier()

我正在使用JavaCC生成解析

作为一种象征,我在写:

TOKEN: 
{ 
     < #LETTER : ["a"-"z", "A"-"Z" ] >
   | < #DIGIT : [ "0"-"9" ] >
   | < IDENTIFIER: ("_" |< LETTER >) ("_" | < LETTER > | < DIGIT >)*>
}
作为解析器方法:

SimpleNode Identifier() :
{
  Token t;
}
{
      t=< IDENTIFIER >
      {
         String n = new String(t.image);
         jjtThis.jjtSetValue( n );
         return jjtThis;
      }
}

因此,它应该只接受uu,因为标识符的第二部分表示0或更多,但它只接受uu

输入是什么?异常是什么?我正在输入u,异常是:在第1行第1列遇到。期待:…看起来您的输入中可能有空格。你确定文件中只有一个字符吗?是的:如果有空格,我也会跳过:{}以跳过,但不起作用请记住.jj文件中的第一个正则表达式将获胜。因此,如果你有另一个r.e.匹配一个空格,第一个将获胜。