以下规则中的构造basename =
是什么?
tabname:
(ID'.')? basename = ID
;
语法中出现basename
这一次。
由于
答案 0 :(得分:2)
在该语法中使用equals会创建一个名为basename
的变量,然后可以在操作中引用该变量:
tabname:
(ID '.')? basename=ID {
if ($basename.equals("CAT"))
System.out.println("CAT found");
};
答案 1 :(得分:1)
用于命名变量。
如果你想在解析器中运行一些代码,这可能非常有用。
考虑java计算器示例:
expr returns [float r]
{
float a,b;
r=0;
}
: #(PLUS a=expr b=expr) {r = a+b;}
| #(STAR a=expr b=expr) {r = a*b;}
| i:INT {r = (float)Integer.parseInt(i.getText());}
;
这里我们说当我们匹配一个具有PLUS或STAR标记后跟2个表达式的树时,我们将匹配表达式并分别命名为a
和b
。
在我们使用那些我们在java语句中匹配的变量之后。此语句包含在{
和}
括号内。这里我们使用java语句来实际进行计算。