文档详情

编译原理第11章-语义分析与中间代码生成.pptx

发布:2017-05-03约1.31千字共66页下载文档
文本预览下载声明
; 语义分析和中间代码生成在编译程序中的 逻辑位置; 语义分析和中间代码生成的重要数据结构; 语义分析; 与语义分析相关的工作; 静态语义检查; 类型检查程序(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
显示全部
相似文档