1 基本概念

Definition (语法制导定义 (Syntax-Directed Definition; SDD))

SDD 是一个上下文无关文法和属性及规则的结合。

Definition (语法制导的翻译方案 (Syntax-Directed Translation Scheme; SDT))

SDT 是在其产生式体中嵌入语义动作的上下文无关文法。

编译原理:L属性、S属性语法制导-冯金伟博客园

2 S属性

Definition (综合属性 (Synthesized Attribute))

节点 N 上的综合属性只能通过 N 的子节点或 N 本身的属性来定义。

Definition (S 属性定义 (S-Attributed Definition))

如果一个 SDD 的每个属性都是综合属性, 则它是 S 属性定义。

S 属性定义的依赖图描述了属性实例之间自底向上的信息流

当 LR 语法分析器进行归约时, 计算相应节点的综合属性值
在 LL 语法分析器中, 递归下降函数 A返回时, 计算相应节点 A 的综合属性值

2.1 例子

编译原理:L属性、S属性语法制导-冯金伟博客园

3 L属性

Definition (继承属性 (Inherited Attribute))

节点 N 上的继承属性只能通过N 的父节点、N 本身和 N 的兄弟节 点上的属性来定义。

Definition (L 属性定义 (L-Attributed Definition))

如果一个 SDD 的每个属性

要么是综合属性,

要么是继承属性, 但是它的规则满足如下限制: 对于产生式 A → X1X2 . . . Xn 及其对应规则定义的继承属性 Xi .a, 则这个规则只能使用

(a) 和产生式头 A关联的继承属性;

(b) 位于Xi 左边的文法符号实例 X1、X2、. . . 、Xi−1 相关的继承属性或综合属性;

(c) 和这个 Xi 的实例本身相关的继承属性或综合属性, 但是在由这个 Xi 的全部属性组成的依赖图中不存在环。

则它是 L 属性定义。

3.1 例子

编译原理:L属性、S属性语法制导-冯金伟博客园

4 转换

编译原理:L属性、S属性语法制导-冯金伟博客园

5 SDT

Definition (语法制导的翻译方案 (Syntax-Directed Translation Scheme; SDT))

SDT 是在其产生式体中嵌入语义动作的上下文无关文法。

语义动作可以嵌入在产生式体中的任何位置

编译原理:L属性、S属性语法制导-冯金伟博客园