logo资料库

四元式优化.pdf

第1页 / 共101页
第2页 / 共101页
第3页 / 共101页
第4页 / 共101页
第5页 / 共101页
第6页 / 共101页
第7页 / 共101页
第8页 / 共101页
资料共101页,剩余部分请下载后查看
符 号 表 管 理 S.P 词法分析程序 语法分析程序 语义分析、生成中间代码 代码优化 生成目标程序 O.P 错 误 处 理
第八章 语法制导翻译和中间代码生成 学习目标: v 掌握: 常见语法成分的中间代码形式; 常见语法成分的属性文法或翻译方案 v 理解: 属性文法、语法制导翻译方法
语义分析的任务 根据语义规则对识别出的各种语法成分析其含义, 进行初步翻译,生成相应的中间代码或直接生成目 标代码。 (1)确定数据类型 (2)语义检查    动态语义检查:在运行时刻进行    静态语义检查:在编译时完成 (3)识别含义,进行真正的翻译
静态语义检查 ①类型检查。 ②控制流检查,确保控制语句有合法的转向点。例 如,C语言中的break语句使控制跳离包括该语句的 最小的switch,while或for语句。如果不存在包括它 的这样的语句,则应报错。
静态语义检查 ③一致性检查。很多情况下要求对象只能被定义一 次。例如,C语言中规定一个标识符在同一作用域中 只能被说明一次,同一case语句的标号不能相同,枚 举类型的元素不能重复出现等。 ④相关名字检查。有的语言中有时规定,同一名字 必须出现两次或多次。例如,Ada语言中,循环或程 序块可以有一个名字,它出现在这些结构的开头和结 尾,如同语句括号一般,编译程序必须检查它们的配 对情况。
语法制导的翻译 将静态语义检查和中间代码生成结合到语法分析 中进行的技术称为语法制导翻译技术(syntax- directed translation) 语法制导翻译方法 使用属性文法为工具来说明程序设计语言的语义。 语法制导翻译的基本思想是先给文法中的每个产 生式添加一个成分,这个成分常称为语义动作或 翻译子程序,在执行语法分析的同时,执行相应 产生式的语义动作。
第八章 语法制导翻译和中间代码生成 8.1 属性文法 8.2 语法制导翻译概论 8.3 中间代码形式 8.4 基本语言成分的自下而上语法制导翻译 8.5 自上而下的语法制导翻译
8.1 属性文法(Attribute Grammar) 属性 对文法的每一个符号,引进一些属性,这些属性 代表与文法符号相关的信息,如类型、值、存储 位置等。 语义规则 为文法的每一个产生式配备的计算属性的计算规 则,称为语义规则。 属性文法是带属性的一种文法 它的主要思想: Ø 首先对于每个文法符号引进相关的属性符号; Ø 其次对于每个产生式写出计算属性值的语义规则
分享到:
收藏