如何从javacc方法返回字符串?

时间:2013-04-26 19:03:29

标签: java string parsing compiler-construction javacc

我在javacc中有这个方法来解析一个url(例如/ books / id / 1)。如何让这个方法返回整个url字符串?

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

我曾尝试创建令牌以吸收所有令牌,但它无效。

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

3 个答案:

答案 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;
    }
}