我在javacc中有这个方法来解析一个url(例如/ books / id / 1)。如何让这个方法返回整个url字符串?
void path() :
{}
{
(< SLASH > ( < IDENTIFIER >))+
}
我曾尝试创建令牌以吸收所有令牌,但它无效。
void path() :
{Token t = new Token();}
{
t = ((< SLASH > ( < IDENTIFIER >))+)
}
答案 0 :(得分:1)
我设法使用以下代码获取字符串:
String path() :
{String path = "";
Token slash = null;
Token id = null;}
{
(slash = < SLASH > ( id = < IDENTIFIER >)
{
path += slash.toString() + id.toString();
})+
{
return path;
}
}
答案 1 :(得分:1)
您可以捕获第一个和最后一个标记,然后通过遍历生成的链接列表来创建字符串。请参阅常见问题解答http://www.engr.mun.ca/~theo/JavaCC-FAQ
中的问题5答案 2 :(得分:0)
恕我直言最好(也是最准确的方法)是定义一个令牌,然后在方法中使用它:
TOKEN:
{
< PATH: (<SLASH> (<IDENTIFIER >))+ >
}
然后你就可以用这样的方法来消费它:
String path():
{ Token t; }
{
t = <PATH>
{
return t.image;
}
}