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



我多次尝试附加一个返回字符串的方法group((,但都没有成功。我的代码只在我调用方法的次数上运行良好,但未能附加用户调用group((的次数。

例如,下面的代码会将group((调用的结果字符串追加三次。然后,当我键入";结束";,description((将打印附加在sb中的三个字符串;"开始";是用于启动每个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();
}
}

最新更新