在 JavaCC 中打印匹配的标记

And*_*yuk 2 javacc

我需要打印 javacc 匹配的令牌,但我不知道如何“存储它”。假设我的令牌定义是:

TOKEN :
{
    < BLAH: ["0"-"9"]> 
}
Run Code Online (Sandbox Code Playgroud)

我的 parser.input() 函数是:

void Input():
{}
{ (<BLAH> { System.out.println("I recognize BLAH"); } ) 
}
Run Code Online (Sandbox Code Playgroud)

然而,给定一些输入(假设为 5),我真正想要输出的是:

I recognize that BLAH is 5.
Run Code Online (Sandbox Code Playgroud)

有小费吗?谢谢

And*_*yuk 5

基本上,您在第一个大括号中声明变量并在第二个大括号中使用它们:

void Input():
{ Token t;   }
{ 
   (t=<BLAH> { System.out.println("I recognize BLAH is "  + t.image); } ) 
}
Run Code Online (Sandbox Code Playgroud)