编译原理第11章-语义分析与中间代码生成.pptx
文本预览下载声明
; 语义分析和中间代码生成在编译程序中的
逻辑位置; 语义分析和中间代码生成的重要数据结构; 语义分析; 与语义分析相关的工作; 静态语义检查; 类型检查程序(type checker)负责类型检查
验证语言结构是否匹配上下文所期望的类型
为相关阶段搜集及建立必要的类型信息
实现某个类型系统(type system)
静态类型检查
编译期间进行的类型检查
动态类型检查
目标程序运行期间进行的类型检查; 以下是定义某个简单语言的上下文无关文法
(将用于本讲的设计示例)G[P] :; 类型表达式(type expressions)
由基本类型,类型名字,类型变量,及类型构造子
(type constructor)归纳定义的表达式
类型系统(type systems)
将类型表达式赋给程序各个部分的规则集合; 类型表达式
分四类定义
基本数据类型表达式,积类型表达式,过程类型表达式,
专用类型表达式
基本数据类型表达式
纯量类型表达式:bool, int, real
有界数组类型表达式:array(I,T)
T ? { bool, int, real };I 代表一个整数区间,如 1..10
指针数据类型表达式:pointer(T)
T ? { bool, int, real }; 积类型表达式
T1, T2, …, Tn
T1, T2, …, Tn 为上述数据类型表达式;若n=0,则表示为
过程类型表达式
fun(T)
T 是上述积类型表达式
专用类型表达式
type_error 专用于有类型错误的程序单元
ok 专用于没有类型错误的程序单元 ; 语法制导的方法
将类型表达式作为属性值赋给程序各个部分
设计恰当的翻译模式
可实现相应语言的一个类型系统; 处理声明的翻译模式; 处理表达式的翻译模式;; 处理语句、过程声明及程序的翻译模式;语义分析; 增加处理:break 只能在某个循环语句内部;语义分析; 静态作用域
通过符号表实现
(参见第七讲)
动态作用域
通过运行时活动记录实现
(参见下一讲);中间代码生成;中间代码生成;中间代码生成;中间代码生成;中间代码生成;中间代码生成;中间代码生成;中间代码生成;中间代码生成;中间代码生成;中间代码生成;中间代码生成;中间代码生成;中间代???生成;中间代码生成;中间代码生成;中间代码生成;中间代码生成;中间代码生成;中间代码生成;中间代码生成;中间代码生成;中间代码生成;中间代码生成;中间代码生成;中间代码生成;中间代码生成;中间代码生成;中间代码生成;中间代码生成;中间代码生成;中间代码生成;中间代码生成;中间代码生成;中间代码生成;中间代码生成;中间代码生成;中间代码生成;中间代码生成;中间代码生成;中间代码生成;中间代码生成;中间代码生成;中间代码生成;课后作业;Thank You
显示全部