Antlr的行为规则和属性作用域 Rule Actions Attribute Scopes

来源:互联网 发布:ios免费杂志软件 编辑:程序博客网 时间:2024/06/06 07:02

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



0 0