第四章 语法制导的翻泽 。本章内容 1、介绍语义描述的一种形式方法:语法制导的翻 译,它包括两种具体形式 语法制导的定义 翻译方案 2、介绍语法制导翻泽的实现方法
第四章 语法制导的翻译 • 本章内容 1、介绍语义描述的一种形式方法:语法制导的翻 译,它包括两种具体形式 –语法制导的定义 –翻译方案 2、介绍语法制导翻译的实现方法
4.1语法制导的定义 ·例简单计算器的语法制导定义 产生式 语义规则 L→En print (E.val) E→E,+T E.val E.val T.val E→T E.yal Tyal T→T,*F Tyal T.val Eyal T→F Tyal Eyal F→(E Eyal E.val F-→digit Fval digit.lexval
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.lexval
4.1语法制导的定义 4.1.1语法制导定义的形式 基础文法 每个文法符号有一组属性 每个文法产生式A→c有 一组形式为b=孔c1,c2,,c)的语义规则,其中 b和c1,C2,,Ck是该产生式文法符号的属性, f是函数 综合属性: 如果b是A的属性,C1,C2,· 是产生式右部文法符号的属性或A的其它属性 继承属性:如果b是右部某文法符号的属性
4.1 语法制导的定义 4.1.1 语法制导定义的形式 • 基础文法 • 每个文法符号有一组属性 • 每个文法产生式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→En print (E.val) E→E,+T E.val E.val T.val E→T E.yal T.val T→T1*F Tval T.val Eyal T→F Tyal Eyal F→(E) Eyal E.val F→digit Eval digit.lexval
4.1 语法制导的定义 4.1.2 综合属性 S属性定义:仅使用综合属性的语法制导定义 产 生 式 语 义 规 则 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.lexval
4.1语法制导的定义 注释分析树:结点的属性值都标注出来的分析树 8+5*2n的注释分析树 E.val 18 E.val 8 T.yal 10 T.val 8 T.yal 5 米 F.yal 2 F.val 8 F.val 5 digit.lexval 2 digit.lexval 8 digit.lexval 5
4.1 语法制导的定义 注释分析树:结点的属性值都标注出来的分析树 8+5*2 n的注释分析树 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.val 18 E.val 8 x T.yal 10 T.val 8 T.yal 5 米 F.val 2 F.val 8 F.yal 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
4.1语法制导的定义 分析树各结点属性的计算可以自下而上地完成 E.val 18 E.val 8 T.yal 10 T.yal 8 T.yal 5 米 F.val 2 F.val 8 F.yal 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
4.1语法制导的定义 分析树各结点属性的计算可以自下而上地完成 E.val 18 E.val 8 T.yal 10 T.yal 8 T.yal 5 米 F.val 2 F.val 8 F.yal 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
4.1语法制导的定义 分析树各结点属性的计算可以自下而上地完成 E.val 18 E.val 8 T.yal 10 T.yal 8 T.yal 5 米 F.val 2 F.yal 8 F.yal 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
4.1语法制导的定义 分析树各结点属性的计算可以自下而上地完成 E.val 18 E.val 8 T.yal 10 T.val 8 T.yal 5 米 F.val 2 F.val 8 F.yal 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