语义规则建立了属性之间的依赖关系,在对语法分析树节点的一个属性求值之前,必须首先求出这个属性值所依赖的所用属性值。
依赖图
- 依赖图是一个描述了分析树种节点属性间依赖关系的有向图
- 分析树中每个标号为
X的节点的每个属性a都对应着依赖图中的一个结点 - 如果属相
X.a的值依赖于属性Y.b的值,则依赖图中有一条从Y.b的结点指向X.a的结点的有向边
例如:
属性值的计算顺序
- 可行的求值顺序是满足下列条件的结点序列
$N_1,N_2,...,N_k$:如果依赖图中有一条从结点$N_i$到$N_j$的边$(N_i \rightarrow{N_j})$,那么$i<j$(即在结点序列中,$N_i$排在$N_j$前面)- 这样的排序讲一个有向图变成了一个线性排序,这个排序称为这个图的拓扑排序 。
注:画红线的部分代表它们之间互不依赖,也就是说它们之间的顺序是可调的。
- 对于只具有综合属性的SDD,可以按照任何自底向上的顺序计算它们的值。
- 对于同时具有继承属性和综合属性的SDD,不能保证存在一个顺序来对各个结点上的属性进行求值。