我在javacc中解析一個url(例如/ books/id/1)。我如何讓這個方法返回整個url字符串?如何從javacc方法返回一個字符串?
void path() :
{}
{
(<SLASH> (<IDENTIFIER>))+
}
我試圖創建一個令牌噸吸收所有的令牌,但它不工作。
void path() :
{Token t = new Token();}
{
t = ((<SLASH> (<IDENTIFIER>))+)
}
我在javacc中解析一個url(例如/ books/id/1)。我如何讓這個方法返回整個url字符串?如何從javacc方法返回一個字符串?
void path() :
{}
{
(<SLASH> (<IDENTIFIER>))+
}
我試圖創建一個令牌噸吸收所有的令牌,但它不工作。
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;
}
}
你可以只捕獲第一和最後一個記號,然後創建通過遍歷導致鏈表的字符串。見Q5.2的常見問題解答:http://www.engr.mun.ca/~theo/JavaCC-FAQ
恕我直言最好的(也是最準確的方法)是定義一個令牌,然後使用它的方法:
TOKEN:
{
< PATH: (<SLASH> (<IDENTIFIER >))+ >
}
然後,你就可以消耗它在這樣的方法:
String path():
{ Token t; }
{
t = <PATH>
{
return t.image;
}
}
我喜歡這樣!感謝FAQ鏈接,它有很多有用的內容! – 2013-04-30 19:41:05