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