4.1语法制导的定义 分析树各结点属性的计算可以自下而上地完成 E.val 18 E.val 8 T.val 10 T.val 8 T.yal 5 米 F.yal 2 F.val 8 F.yal 5 digit.lexyal 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
4.1语法制导的定义 分析树各结点属性的计算可以自下而上地完成 E.va7=18 E.val 8 T.yal 10 T.val 8 T.yal 5 米 F.yal 2 F.val 8 F.yal 5 digit.lexyal 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
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 Lin L.in; addType(id.entry,L.in) L→id addType(id.entry,L.in)
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)
4.1语法制导的定义 ·例intid,id2,id3的标注了部分属性的分析树 不可能像像综合属性那样自下而上标注属性 T.type integer L.in integer int L.in integer id; L.in integer id
4.1 语法制导的定义 • 例 int id1 , id2 , id3的标注了部分属性的分析树 不可能像像综合属性那样自下而上标注属性 D int T.type = integer , id3 L.in = integer L.in = integer L.in = integer id2 id1
4.1语法制导的定义 4.1.4属性依赖图 例int id,,id,id3的分析树(虚线)的依赖图 (实线) D今TL L.in T.type in int id;3 entry id 2 entry id 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