编译原理第五章语法制导翻译.ppt

第五章 语法制导翻译和 中间代码的生成 本章的主要内容 语法制导翻译的基本思想; 典型的中间代码表示法; 产生中间代码的语义子程序设计; 各种基本语言成分的自下而上分析的制导翻译; 类型检查的基本原理。 语义分析是干什么的? 其任务是对语法分析所识别出的各类语法范畴,分析其含义,并进行初步翻译。 包括两个方面的工作。 首先是对各种语法范畴进行静态语义检查,例如,变量是否定义、类型是否正确等等。 如果语义正确,则进行中间代码的翻译。 静态语义检查 (1)类型检查。验证程序中执行的每个操作是否遵守语言的类型系统的过程,编译程序必须报告不符合类型系统的信息。 (2)控制流检查。控制流语句必须使控制转移到合法的地方。例如,在C语言中break语句使控制跳离包括该语句的最小while、for或switch语句。如果不存在包括它的这样的语句,则就报错。 (3)一致性检查。在很多场合要求对象只能被定义一次。例如Pascal语言规定同一标识符在一个分程序中只能被说明一次,同一case语句的标号不能相同,枚举类型的元素不能重复出现等等。 (4)相关名字检查。有时,同一名字必须出现两次或多次。例如,Ada 语言程序中,循环或程序块可以有一个名字,出现在这些结构的开头和结尾,编译程序必须检查这两

文档评论(0)

1亿VIP精品文档

相关文档