1、第四章 语法制导的翻译 本章内容1、介绍语义描述的一种形式方法: 语法制导的翻译 ,它包括两种具体形式 语法制导的定义 翻译方案2、介绍语法制导翻译的实现方法4.1 语法制导的定义 例 简单计算器的语法制导定义产 生 式 语 义 规 则 L E n print (E.val) E E1 + T E.val = E1 .val + T.val E T E.val = T.val T T1 F T.val = T1.val F.val T F T.val = F.val F (E) F.val = E.val F digit F.val = digit.lexval4.1 语法制导的定义4.1.1
2、 语法制导定义的形式 基础文法 每个文法符号有一组属性 每个文法产生式 A 有一组形式为 b=f(c1, c2, , ck )的语义规则 , 其中b和 c1, c2, , ck 是该产生式文法符号的属性,f 是函数 综合属性: 如果 b是 A的属性, c1 , c2 , , ck 是产生式右部文法符号的属性或 A的其它属性 继承属性 :如果 b是右部某文法符号 X的属性4.1 语法制导的定义4.1.2 综合属性S属性定义 : 仅使用综合属性的语法制导定义产 生 式 语 义 规 则 L E n print (E.val) E E1 + T E.val = E1 .val + T.val E T
3、E.val = T.val T T1 F T.val = T1.val F.val T F T.val = F.val F (E) F.val = E.val F digit F.val = digit.lexval4.1 语法制导的定义注释分析树 :结点的属性值都标注出来的分析树8+5*2 n的注释分析树digit.lexval = 2LE.val = 18 nT.val = 10E.val = 8T.val = 8F.val = 8digit.lexval = 8T.val = 5+F.val = 5F.val = 2digit.lexval = 54.1 语法制导的定义分析树各结点属性的
4、计算可以自下而上地完成digit.lexval = 2LE.val = 18 nT.val = 10E.val = 8T.val = 8F.val = 8digit.lexval = 8T.val = 5+F.val = 5F.val = 2digit.lexval = 54.1 语法制导的定义分析树各结点属性的计算可以自下而上地完成digit.lexval = 2LE.val = 18 nT.val = 10E.val = 8T.val = 8F.val = 8digit.lexval = 8T.val = 5+F.val = 5F.val = 2digit.lexval = 54.1 语法
5、制导的定义分析树各结点属性的计算可以自下而上地完成digit.lexval = 2LE.val = 18 nT.val = 10E.val = 8T.val = 8F.val = 8digit.lexval = 8T.val = 5+F.val = 5F.val = 2digit.lexval = 54.1 语法制导的定义分析树各结点属性的计算可以自下而上地完成digit.lexval = 2LE.val = 18 nT.val = 10E.val = 8T.val = 8F.val = 8digit.lexval = 8T.val = 5+F.val = 5F.val = 2digit.lexval = 54.1 语法制导的定义分析树各结点属性的计算可以自下而上地完成digit.lexval = 2LE.val = 18 nT.val = 10E.val = 8T.val = 8F.val = 8digit.lexval = 8T.val = 5+F.val = 5F.val = 2digit.lexval = 5