第7-8章语法制导翻译和中间代码生成 引言 ■ 8.1属性文法 ■ 8.2语法制导翻译概论 ■ 8.3中间代码形式(重点) 8.4简单赋值语句的翻译 ■ 8.5布尔表达式的翻译(重点) 8.6控制结构的翻译(重点难点) 8.7说明语句的翻译(略) 8.8数组和结构的翻译(略) ■ 作业 2025/413 课程目绿 ☒②1
2025/4/3 1 第7-8章 语法制导翻译和中间代码生成 引言 8.1 属性文法 8.2 语法制导翻译概论 8.3 中间代码形式(重点) 8.4 简单赋值语句的翻译 8.5 布尔表达式的翻译(重点) 8.6 控制结构的翻译(重点 难点) 8.7 说明语句的翻译(略) 8.8 数组和结构的翻译(略) 作业 课程目录
语义分析的任务p169 ■静态语义检查 ◆验证语法结构合法的程序是否真正有意义。 ◆例:类型检查、控制流检查、一致性检查、 相关名字检查。 ■动态语义处理一翻译 ◆对程序意义的解释,执行真正的翻译。 ◆例:变量的存储分配表达式的求值 例:语句的翻译(中间代码的生成) ■总目标 ◆生成等价的中间代码。 2025/4/3 ☒)2
2025/4/3 2 语义分析的任务 p169 静态语义检查 动态语义处理——翻译 总目标 验证语法结构合法的程序是否真正有意义。 例:类型检查、控制流检查、一致性检查、 相关名字检查。 对程序意义的解释,执行真正的翻译。 例:变量的存储分配 表达式的求值 例:语句的翻译(中间代码的生成) 生成等价的中间代码
编译中的语义分析 ■描述方法一属性文法 ◆利用属性文法描述如何将各种语句和表达式 翻译成中间代码 ◆为每个文法符号赋予相应属性,对应每一个 产生式编制一个语义子程序 ■工作方式一语法制导翻译 ◆当一个产生式获得匹配时,调用相应的语义 子程序实现语义检查与翻译 ◆每识别出一个语法结构时,完成相应的语义 检查与中间代码生成 2025/4/3 章节目录☑☑3
2025/4/3 3 编译中的语义分析 描述方法——属性文法 利用属性文法描述如何将各种语句和表达式 翻译成中间代码 为每个文法符号赋予相应属性,对应每一个 产生式编制一个语义子程序 工作方式——语法制导翻译 当一个产生式获得匹配时,调用相应的语义 子程序实现语义检查与翻译 每识别出一个语法结构时,完成相应的语义 检查与中间代码生成 章节目录
8.1属性文法p169 属性文法举例 属性文法定义 属性的分类 ◆综合属性 ◆继承属性 2025/4/3 章节目录 ☒D)4
2025/4/3 4 8.1 属性文法 p169 属性文法举例 属性文法定义 属性的分类 综合属性 继承属性 章节目录
简单计算器的设计 L 显示19 ◆ 例3*5+4n ■ 表达式的文法 E.val 19 n 1.L→En 2.E→E1+T E1.val T.val 4 3. E→T 15 4. T→T1F T.val 15 F.val 4 5.T→F 6. F→(E) 7.F→i TL val* F.val 5 i.lexval 4 3 4 ■要解决的问题 F.val 3 i.lexval 5 ◆表达式求值 5 综合属性自下 i.lexval 3 而上传递信息 2025/4/3 3 ☒☑5
2025/4/3 5 简单计算器的设计 例 3*5+4n 表达式的文法 1. L→En 2. E→E1+T 3. E→T 4. T→T1*F 5. T→F 6. F→(E) 7. F→i E n E1 + T T T1 * F F i 3 i 5 F i 4 要解决的问题 表达式求值 .val 3 .val 3 .val 5 .val 15 .val 15 .val 4 .val 4 .val 19 L 显示19 .lexval 3 .lexval 5 .lexval 4 综合属性自下 而上传递信息