我如何根据 JavaCC 中的用户输入多次调用一个方法?

How could I call several times a method based on the user input in JavaCC?

我多次尝试附加 returns 字符串的方法 group() 均未成功。我的代码仅在我调用该方法时运行良好,但无法附加用户调用 group() 的次数。

例如,以下代码会将 group() 调用的结果字符串追加三次。然后,当我键入“end”时,description() 将打印附加在 sb 中的三个字符串。 “start”是用于启动每个 group() 调用的令牌(start 在 group() 中使用)。

TOKEN : 
{
  < START: "start" >
| < END: "end" >
}
String description() :
{
  StringBuffer sb = new StringBuffer();
}
{
  {
    sb.append(group());
    sb.append(group());
    sb.append(group());
  }
  < END >
  {
    return sb.toString();
  }
}

但是,我真正想要实现的是,如果用户调用 group() 四次(使用标记“start”),描述方法将附加到字符串组。本质上,它会根据用户的输入附加字符串的数量。有人告诉我一个有用的方法是使用 (group())*。尽管如此,我还没有让它工作。

尝试这样的事情:

String description() :
{
  StringBuffer sb = new StringBuffer();
  Object o;
}
{
  (
    o=group() {sb.append(o);}
  )*
  <END>
  {
    return sb.toString();
  }
}