41语法制导的定义 分析树各结点属性的计算可以自下而上地完成 E.val= 18 n E.val= 8 Tval= 10 T.val= 8 Tval=5 F.val= 2 F.val= 8 F.val= 5 digit lexval= 2 digit. lexval=8 digit. lexval= 5
4.1 语法制导的定义 分析树各结点属性的计算可以自下而上地完成 digit.lexval = 2 L 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
41语法制导的定义 分析树各结点属性的计算可以自下而上地完成 E val= 18 n E.val= 8 Tval= 10 T.val= 8 Tval=5 F.val= 2 F.val= 8 F.val= 5 digit lexval= 2 digit. lexval=8 digit. lexval= 5
4.1 语法制导的定义 分析树各结点属性的计算可以自下而上地完成 digit.lexval = 2 L 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
41语法制导的定义 4.13继承属性 int id. id. id 产生式 语义规则 D→TL Lin=T type T→int T type= integer T→ realT!pe=real L→>11 id L1 in L add(id entry, Lin) L→>id addTypelid entry, Lin)
4.1 语法制导的定义 4.1.3 继承属性 int id, id, id 产 生 式 语 义 规 则 D → TL L.in = T.type T→ int T. type = integer T→ real T. type = real L→ L1 , id L1 .in = L.in; addType(id.entry, L.in) L→ id addType(id.entry, L.in)
41语法制导的定义 例 int id,idl,id3的标注了部分属性的分析树 不可能像像综合属性那样自下而上标注属性 D T type= integer Lin= integer int Lin= integer id Lin= integer id d
4.1 语法制导的定义 • 例 int id1 , id2 , id3的标注了部分属性的分析树 不可能像像综合属性那样自下而上标注属性 D int T.type = integer , id3 L.in = integer L.in = integer L.in = integer id2 id1
41语法制导的定义 4.1.4属性依赖图 例 int id,id2,id3的分析树(虚线)的依赖图 (实线) D→TLL.in=T.ype D T type in 5 L 6 in7 8 id 33 entry in 9 10 id 2 2 entry id 1 entry
4.1 语法制导的定义 4.1.4 属性依赖图 • 例 int id1 , id2 , id3的分析树(虚线)的依赖图 (实线) D → TL L.in = T.type 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