第九章 错误处理
9.1 概述
编译器的必备功能之一:错误处理
正确的源程序:通过编译,生成目标代码
错误的源程序:通过编译,发现并指出错误
编译器的错误处理能力
- 诊察错误的能力
- 报错及时准确(出错位置、错误性质)
- 一次编译找出错误的多少(一般只找出20个)
- 改正错误的能力(如word会自动更正拼写错误)
- 遏制重复错误信息的能力
9.2 错误的分类
语法错误和语义错误
语法错误:程序结构不符合语法(包括词法)规则的错误
语义错误:程序不符合语义规则或超越具体计算机系统的限制
超越系统限制:
- 数据溢出错误,常数太大,计算结果溢出
- 符号表、静态存储分配数据区溢出
- 动态存储分配数据区溢出
- 0作为分母
9.3 错误的诊察和报告
错误诊察
1.违反语法和语义规则以及超过编译系统限制的错误。由编译程序在语法和语义分析过程中诊察出来。语义分析要借助符号表
2.下标越界、计算结果溢出以及动态存储数据区溢出等在目标程序运行时才能检