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