版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、1第八章第八章 错误处理错误处理 概述概述 错误分类错误分类 错误的诊察和报告错误的诊察和报告 错误处理技术错误处理技术28.1 概述概述1. 必备功能之一必备功能之一正确的源程序:通过编译生成目标代码错误的源程序:通过编译发现并指出错误2. 错误处理能力错误处理能力(1) 诊察错误的能力(2) 报错及时准确(3) 一次编译找出错误的多少(4) 错误的改正能力(5) 遏止重复的错误信息的能力38.2 错误分类错误分类从编译角度,将错误分为两类:从编译角度,将错误分为两类: 语法错误语法错误和和语义错误语义错误语法错误语法错误:源程序在语法上不合乎文法源程序在语法上不合乎文法 如:如: A I,
2、 J := B +* C语义错误语义错误主要包括:主要包括:程序不符合语义规则程序不符合语义规则或或 超越具体计算机系统的限制超越具体计算机系统的限制4超越系统限制:超越系统限制: 数据溢出错误数据溢出错误 符号表、静态存储分配数据区溢出符号表、静态存储分配数据区溢出 动态存储分配数据区溢出动态存储分配数据区溢出语义规则:语义规则: 标识符引用要符合作用域规定标识符引用要符合作用域规定 标识符先说明后引用标识符先说明后引用 参与运算的操作数类型一致参与运算的操作数类型一致 过程调用时实参与形参要一致过程调用时实参与形参要一致 下标变量下标不能越界下标变量下标不能越界58.3 错误的诊察和报告错
3、误的诊察和报告错误诊察:错误诊察: 1. 违反语法和语义规则以及超过编译系统限制的错误。违反语法和语义规则以及超过编译系统限制的错误。编译程序编译程序: 语法和语义分析时语法和语义分析时 (语义分析要借助符号表)(语义分析要借助符号表) 2. 下标越界,计算结果溢出以及动态存储数据区溢出。下标越界,计算结果溢出以及动态存储数据区溢出。 目标程序目标程序: 目标程序运行时目标程序运行时 对此,编译程序要生成相应的目标程序作检查对此,编译程序要生成相应的目标程序作检查 和进行处理和进行处理 6错误报告:错误报告:1. 出错位置:即源程序中出现错误的位置出错位置:即源程序中出现错误的位置实现:行号计
4、数器实现:行号计数器 line_no 单词序号计数器单词序号计数器 char_no2. 出错性质:出错性质:可直接显示文字信息可直接显示文字信息可给出错误编码可给出错误编码一旦诊察出错误,当时的计数器内容就是出错位置一旦诊察出错误,当时的计数器内容就是出错位置73. 报告错误的两种方式:报告错误的两种方式:(1) 分析完以后再报告分析完以后再报告(显示或者打印显示或者打印) 编译程序可设一个保存错误信息的数据区编译程序可设一个保存错误信息的数据区(可可用记录型数组用记录型数组),将语法语义分析所诊察到的错误,将语法语义分析所诊察到的错误送数据区保存,待源程序分析完以后,显示或打印送数据区保存,
5、待源程序分析完以后,显示或打印错误信息。错误信息。例:例:Ax , y :=B+*C源程序行号源程序行号 错误序号错误序号 错误性质错误性质 x x 6 缺少缺少“” x x 10 表达式语法错误表达式语法错误8(2) 边分析边报告边分析边报告 可以在分析一行源程序时若发现有错,立即输可以在分析一行源程序时若发现有错,立即输出该行源程序,并在其下输出错误信息。出该行源程序,并在其下输出错误信息。 有时候报错不一定十分准确有时候报错不一定十分准确(位置和性质),需进一步分析(位置和性质),需进一步分析Lineno Ax , y := B+ *C缺缺“”or n错误编号错误编号表达式语法错表达式语
6、法错 m例begin . i := 1 step 1 until n do .end98.4 错误处理技术错误处理技术1. 错误改正:指编译诊察出错误以后,根据文法进错误改正:指编译诊察出错误以后,根据文法进 行错误改正。行错误改正。如:如:Ai , j :=B+*C但不是总能做到但不是总能做到,如如A:=B-C*D+E)要正确地改正错误要正确地改正错误是很困难的是很困难的 发现错误后,在报告错误的同时还要对错误进行发现错误后,在报告错误的同时还要对错误进行处理,以方便编译能进行下去。目前有两种处理办法:处理,以方便编译能进行下去。目前有两种处理办法:2. 错误局部化处理:指当编译程序发现错误
7、后,尽可错误局部化处理:指当编译程序发现错误后,尽可 能把错误的影响限制在一个局部能把错误的影响限制在一个局部 的范围,避免错误扩散和影响的范围,避免错误扩散和影响 程序其他部分的分析。程序其他部分的分析。10(1) 一般原则一般原则 当诊察到错误以后,就暂停对后面符号的当诊察到错误以后,就暂停对后面符号的分析分析, 跳过错误所在的语法成分然后继续往下分析。跳过错误所在的语法成分然后继续往下分析。词法分析:词法分析:发现不合法字符,显示错误,并跳发现不合法字符,显示错误,并跳 过该标识符过该标识符(单词单词)继续往下分析。继续往下分析。语法语义分析:语法语义分析:跳过所在的语法成分跳过所在的语
8、法成分(短语或语短语或语 句句),一般是跳到语句右界符,一般是跳到语句右界符, 然后从新语句继续往下分析。然后从新语句继续往下分析。11(2) 错误局部化处理的实现(递归下降分析法)错误局部化处理的实现(递归下降分析法)cx: 全局变量,存放错误信息。全局变量,存放错误信息。出错程序先打印或显示出错位置以及出错信息,出错程序先打印或显示出错位置以及出错信息,然后跳出一段源程序然后跳出一段源程序, 直到跳到语句的右界符直到跳到语句的右界符(如:如:end)或正在分析的语法成分的合法后继符号)或正在分析的语法成分的合法后继符号为止为止, 然后再往下分析。然后再往下分析。用递归下降分析时,如果发现错
9、误,便将有用递归下降分析时,如果发现错误,便将有关错误信息(字符串或者编号)送关错误信息(字符串或者编号)送CX,然后转出,然后转出错误处理程序;错误处理程序;12例例:条件语句分析条件语句分析:if then else;有如下分析程序有如下分析程序:procedure if_stmt; begin nextsym; /*读下个单词符号读下个单词符号*/ B; /*调用布尔表达式处理程序调用布尔表达式处理程序*/ if not class=then then begin cx :=缺缺then /*错误性质送错误性质送cx*/ error; /*调用出错处理程序调用出错处理程序*/ end;
10、else begin nextsym; statement end; if class=elsethen begin nextsym; statement; end end if_stmt; 13局部化处理的出错程序为局部化处理的出错程序为:procedure error; begin write(源程序行号源程序行号, 序号序号, cx) repeat nextsym; until class = ; or class = end or class = elseend error;14(3) 提高错误局部化程度的方法提高错误局部化程度的方法设设 S1: 合法后继符号集合法后继符号集 (某语法
11、成分的后继符号某语法成分的后继符号) S2: 停止符号集停止符号集 (跳读必须停止的符号集跳读必须停止的符号集)进入某语法成分的分析程序时进入某语法成分的分析程序时: S1:= 合法后继符号合法后继符号 S2:= 停止符号停止符号15当发现错误时当发现错误时: error(S1,S2)procedure error(S1,S2) begin write(line_no, char_no, cx); repeat nextsym until(class in S1 or class in S2 ); endif then else 若若有错有错,则可跳到则可跳到then, 若若有错有错,则可跳到则可跳到else。163.目标程序运行时错误检测与处理目标程序运行时错误检测与处理. 在编译时生成检测该类错误的代码。在编译时生成检测该类错误的代码。下标变量下标值越界下标变量下标值越界 计算结果溢出计算结果溢出 动
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 快餐连锁店运营管理流程与标准
- 团队激励方案设计与员工福利模板
- 营销部门业绩考核及奖金分配方案模板
- 建筑工程项目合同管理流程规范
- 物业管理中的电气安全管理办法
- 基坑支护施工风险评估与防控措施
- 八年级篮球运球技能专项教学设计
- 幼儿园晨间活动组织与安排方案
- 智能家居系统方案设计与用户指南
- 标准家具买卖合同范本及法律风险提示
- 学堂在线 不朽的艺术:走进大师与经典 章节测试答案
- 腹部损伤考试试题及答案
- 寝室卫生评比活动方案
- 2025储能电站全钒液流电池储能系统管理指南
- 信息软件业内部控制质量、股权结构与审计费用的关系研究
- 沪教版2024 九年级化学上册-《义务教育教材(2024版)》内容解读
- T/CMAM W-3-2022维吾尔医常见病诊疗指南外科
- 终止供暖协议书
- 医院职业暴露教学课件
- 闪罐治疗面瘫技术解析
- 2025公需课《人工智能赋能制造业高质量发展》试题及答案
评论
0/150
提交评论