属性依赖图 例 int id,id2,id3的分析树(虚线)的依赖图 (实线) L→L1, id i in=L.in; D addType(id entry, Lin) t 4 type in 5 L6 int in l 8 id3 3 entry in 2 2 entry id1 1 entry
属性依赖图 • 例 int id1 , id2 , id3的分析树(虚线)的依赖图 (实线) L→ L1 , id L1 .in = L.in; addType(id.entry, L.in) D int T , id3 L L L id2 id1 , 1 entry 10 2 entry 3 entry in 9 in 7 8 4 type in 5 6
属性依赖图 ·例 int id,id2,id3的分析树(虚线)的依赖图 (实线) L→id D addType(id entry, Lin) t 4 type in 5 L6 int in l 8 id3 3 entry in9 10 id 2 2 enti id 1 entry
属性依赖图 • 例 int id1 , id2 , id3的分析树(虚线)的依赖图 (实线) L→ id addType(id.entry, L.in) D int T , id3 L L L id2 id1 , 1 entry 10 2 entry 3 entry in 9 in 7 8 4 type in 5 6
属性计算次序 拓扑排序:结点的一种排序,使得边只会从该次 序中先出现的结点到后出现的结点 ·例1,2,3,4,5,6,7,8,9,10 D t 4 type 5L6 int in7 l 8 id3 3 ent in id2 2 ent id1 1 entry
属性计算次序 • 拓扑排序:结点的一种排序,使得边只会从该次 序中先出现的结点到后出现的结点 • 例 1,2,3,4,5,6,7,8,9,10 D int T , id3 L L L id2 id1 , 1 entry 10 2 entry 3 entry in 9 in 7 8 4 type in 5 6
语义规则的计算方法 (1)构造输入的分析树;(2)构造属性依赖图; (3)对结点进行拓扑排序;(4)按拓扑排序的 次序计算属性 D t 4 type in5 l 6 int in7 l 8 id3 3 ent in id2 2 ent id1 1 entry
语义规则的计算方法 (1)构造输入的分析树;(2)构造属性依赖图; (3)对结点进行拓扑排序;(4)按拓扑排序的 次序计算属性 D int T , id3 L L L id2 id1 , 1 entry 10 2 entry 3 entry in 9 in 7 8 4 type in 5 6
语义规则的计算方法 (1)构造输入的分析树;(2)构造属性依赖图; (3)对结点进行拓扑排序;(4)按拓扑排序的 次序计算属性 L .val= i 8 E.val= 18 E.val s Tval= 10 Tval= 8 Tval= 5 F.val= 2 F.val= 8 Fval= 5 digit. lexval= 2 digit. lexval=8 digit. lexval=5
语义规则的计算方法 (1)构造输入的分析树;(2)构造属性依赖图; (3)对结点进行拓扑排序;(4)按拓扑排序的 次序计算属性 digit.lexval = 2 L.val = 18 E.val = 18 n E.val = 8 T.val = 10 T.val = 8 F.val = 8 digit.lexval = 8 T.val = 5 + F.val = 5 F.val = 2 digit.lexval = 5