Rule Actions
(1)@init {...}
1)在生成代码之前插入包含的代码
可以用于在可选规则行为中定义声明局部变量
2)可以用于tree parser的多项式和term rules的前面
(2)@after {...}
1)在生成代码后,插入包含的代码(contained code)
Attribute Scopes
(1)Global scopes
1)可以在任何规则之外定义指定的范围
2)定义形式:
scope name{
type variable;
. . .
}
在规则中使用变量名的命令:scope name; 如果是使用多个变量名,把它们列举出来并用空格分隔它们。
3)行为规则如何获取scope中的属性?
通过命令:$name::variable
(2)Rule scopes
1)在规则内定义且没有名字
2)定义形式:
scope {
type variable;
...
}
3)调用形式:
$rule-name::variable