我如何根据 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();
}
}
我多次尝试附加 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();
}
}