2013-04-26 94 views
1

我在javacc中解析一個url(例如/ books/id/1)。我如何讓這個方法返回整個url字符串?如何從javacc方法返回一個字符串?

void path() : 
{} 
{ 
    (<SLASH> (<IDENTIFIER>))+ 
} 

我試圖創建一個令牌噸吸收所有的令牌,但它不工作。

void path() : 
{Token t = new Token();} 
{ 
    t = ((<SLASH> (<IDENTIFIER>))+) 
} 

回答

0

我設法使用下面的代碼來獲取字符串:

String path() : 
{String path = ""; 
Token slash = null; 
Token id = null;} 
{ 
    (slash = <SLASH> (id = <IDENTIFIER>) 
    { 
    path += slash.toString() + id.toString(); 
    })+ 
    { 
    return path; 
    } 
} 
1

你可以只捕獲第一和最後一個記號,然後創建通過遍歷導致鏈表的字符串。見Q5.2的常見問題解答:http://www.engr.mun.ca/~theo/JavaCC-FAQ

+0

我喜歡這樣!感謝FAQ鏈接,它有很多有用的內容! – 2013-04-30 19:41:05

0

恕我直言最好的(也是最準確的方法)是定義一個令牌,然後使用它的方法:

TOKEN: 
{ 
    < PATH: (<SLASH> (<IDENTIFIER >))+ > 
} 

然後,你就可以消耗它在這樣的方法:

String path(): 
{ Token t; } 
{ 
    t = <PATH> 
    { 
     return t.image; 
    } 
}