4 有代表性的SDD
语法制导定义(Syntax-Directed Definition, SDD)
抽象语法树的构造
- Leaf (op, val) 是一个叶子
- Node (op, c~1~, c~2~, ..., c~k~) 是一个内部节点,c~i~ 是这个节点的所有字段
下面是一个 SDD,每一个非终结符有综合属性 node,表示相应的抽象语法树节点。


这里的文法是有左递归的,也可以用没有的版本重新写 SDD
“类型” 的结构
- array (num, type) 表示一个数组,如 \textbf{int }[2][3] 的类型表达式为
array(2,array(3,\textbf{integer}))
这里给非终结符 C 引入:
- 继承属性 b,将一个基本类型沿着树向下传播,方便尾部知道自己的基本类型
- 综合属性 type,收集最终得到的结果


可见综合属性 type 是自底向上的,而继承属性 b 是自顶向下流动的。
本文阅读量