1、第五章 类 型 检 查 本章内容 静态检查中最典型的部分 类型检查:类型系统、类型检查、多态函数、重载 忽略其它的静态检查: 控制流检查、唯一性检查、关联名字检查语法分析器类型检查器中间代码生成器语法树语法树中间表示记号流5.1 类型在编程语言中的作用5.1.1 执行错误和安全语言介绍一些和程序运行有联系的概念5.1 类型在编程语言中的作用5.1.1 执行错误和安全语言1、程序运行时的执行错误分成两类 会被捕获的错误 ( trapped error)5.1 类型在编程语言中的作用5.1.1 执行错误和安全语言1、程序运行时的执行错误分成两类 会被捕获的错误 ( trapped error) 例
2、: 非法指令 错误5.1 类型在编程语言中的作用5.1.1 执行错误和安全语言1、程序运行时的执行错误分成两类 会被捕获的错误 ( trapped error) 例: 非法指令 错误 、非法内存 访问5.1 类型在编程语言中的作用5.1.1 执行错误和安全语言1、程序运行时的执行错误分成两类 会被捕获的错误 ( trapped error) 例: 非法指令 错误 、非法内存 访问 、 除数 为 零 引起 计 算立即停止 不会被捕获的错误 ( untrapped error) 例:下标变量的 访问 越 过 了数 组 的末端 例: 跳到一个 错误 的地址, 该 地址开始的内存正好代表一个指令序列
3、错误 可能会有一段 时间 未引起注意 5.1 类型在编程语言中的作用5.1.1 执行错误和安全语言2、良行为的程序 不同场合对良行为的定义略有区别 例如,没有任何不会被捕获错误的程序3、安全语言 任何 合法程序都是良行为的 通常是 设计 一个 类 型系 统 ,通 过 静 态 的 类 型 检查 来拒 绝 不会被捕 获错误 但是, 设计 一个 类 型系 统 ,它正好只拒 绝 不会被捕 获错误 是非常困 难 的5.1 类型在编程语言中的作用5.1.1 执行错误和安全语言 禁止错误 ( forbidden error) 不会被捕 获错误 集合 + 会被捕 获错误 的一个子集为语 言 设计类 型系 统 的目 标 是在排除 禁止错误良行为程序和安全语言也可基于禁止错误来定义5.1 类型在编程语言中的作用5.1.2 类型化语言和类型系统4、类型化的语言 变量的类型 变量在程序执行期间的取值范围5.1 类型在编程语言中的作用5.1.2 类型化语言和类型系统4、类型化的语言 变量的类型 类型化的语言 变量都被给定类型的语言 表达式 、语句等程序构造的类型都可以静态确定 例 如,类型 boolean的变量 x在程序每次运行时的值只能是布尔值 , not (x)总 有意义