版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第9章:错误处理,9.1概要9.2错误分类9.3错误诊断和报告9.4错误处理技术,9.1概要,1 .数据处理是必要的功能之一,一般来说,即使用户开发源程序,也不可避免地发生语法和语义错误。 另外,也有输入错误,通过正确的源程序:编译生成目标代码。 错误的源程序:通过编译,发现错误并指出错误。 编译器必须正确编译语法和意义正确的源程序,生成等效的目标程序,并不停止发现错误的源程序,而是检测出错误的性质和位置,在继续编译的同时,尽可能准确地发现错误。 2 .错误处理能力,(1)诊断错误的能力。 (2)错误立即正确(错误位置、错误的性质)。 (3)一次编译,找出错误的数量。 (4)错误的改革能力。
2、(5)抑制重复错误信息的能力。 用户希望使用高错误处理能力的编译,尽快获得语法上正确的源程序。 9.2从错误分类、编译的观点来看,将错误分为两类:语法错误和语义错误,语义错误主要是程序不符合语义规则或超出了具体的计算机系统限制:(计算机系统和编译系统),1 .数据溢出2 .符号表、静态存储分配数据区域溢出。 3 .动态存储分配数据区域溢出。 9.3错误诊断和报告,错误诊断:1 .违反语法和意义规则,超出编译系统限制的错误。 编译器在语法和语义分析过程中诊断了。 (语义分析利用符号表),2 .下标越过边界,计算结果溢出,动态存储数据区域溢出。 在对象程序正在执行时才被检测到,对对象程序进行诊断。
3、 对此,编译器生成适当的目标程序进行检查和处理。 错误报告:1 .错误地方:源程序中发生错误的地方,实现:设计行号计数器line-no设计单词编号计数器char-no,诊断时的计数器内容错误的地方,2 .错误性质:可以直接显示文字信息,提示错误代码,3 .错误代码分析后报告(显示或打印)编译器可以设置存储错误信息的数据区域(可用的记录类型数组),将语法语义分析诊断的错误存储在数据区域中,并显示或打印错误信息直到源程序分析完成。 例如: Ax,y :=B *C,源程序行号错误性质X6“”X10式语法错误没有,(2)在分析侧报告的同时分析源程序行时发现错误的情况下,立即输出该行源程序、Line-n
4、o Ax,y :=B *C,“”or,n,错误号,表达式语法错误,m,错误可能不一定正确(位置和性质),需要进一步分析,例如,begin . I :=1step1untingdo . 目前有两种处理方法:1.纠错:编译诊断后,根据语法进行纠错。 例如,Ai,j :=B *C,编译根据a的定义(声明),检查a是二维数据,添加“*”,然后根据表达式的定义删除“*”(但是,可能不一定匹配。 另外,也可以删除“”)。 A:=B-C*D E等,并非总是能做到。如果缺少左括号,应该在哪里校正,因此很难正确地改写错误。 2 .错误局部化处理:编译器发现错误后,尽可能地将错误的影响限制在一个局部范围内,以免影
5、响错误扩散和程序其他部分的分析。(1)一般原则,(2)实现错误局部化处理,(3)提高错误局部化程度的方法,(1)一般原则是,在被诊断为错误后,中止后续符号的分析,跳过错误所在地的语法成分(我认为跳过的话,该语法成分是正确的),前进到下一个分析。 词法分析:发现错误字符,显示错误,跳过其标识符(单词)继续分析。 语法语义分析:跳过地址的语法成分(短语或句子),通常跳至句子的右边界,从新句子继续分析。 (2)实现错误局部化处理(递归下降分析法),存储CX:全局变量和错误信息。 在递归下降分析中,如果发现错误,则将关于错误的信息(字符串或编号)发送给CX,用于转发错误处理程序的错误程序首先打印或显示
6、错误位置和错误信息,然后在语句的右边界符号(例如end )或正在分析的语法元素的合法后续符号上加上数字示例:条件语句分析:if then else; 有以下分析程序:程序if sa tement,begin nextsym; /*读以下单词符号*/B; /*布尔式处理程序*/if not class=thenthen begin CX :=then/*错误的性质传递给cx*/error调用错误处理程序*/end的else begin nextsym; satement end; if class=elsethenbeginnextsym; satement; 终止状态; 局部化处理错误程序为:
7、程序错误; begin write(cx,源程序行号,序号) repeat nextsym; untillclass= ; or class=endor class=elseend error; 时,如果发现错误,则会立即跳到语句的末尾(语句的右边界),这样的处理比较粗糙,跳过太多,在前一个示例中,如果缺少Then,则会跳过整个条件语句,Then后的语句不会被跳过并分析方法或(3)增加错误局部化程度的方法S1:的合法后续符号集(某语法分量的后续符号) s 23360停止符号集(跳过必须停止的符号集),且发现错误时为: error repeatnextsymuntil (class ins S1 orclassinss2) end,在上述例题的if语句中,如果有错误就跳至then,如果stmt有错误就检测和处理目标程序执行事故由于很难在目标程序和源程序间建立位置上的对应关
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026创意七夕情人节跑步交友运动会(心动跑七夕缘主题)活动策划方案
- 建筑幕墙吊装作业方案
- 风电项目经济效益和社会效益分析报告
- 人力资源HR实操技能培训
- 房地产项目高处作业安全管控实施报告
- 2026年幼儿关爱他人儿歌集
- 访客出入登记管理制度
- 压力管道元件制造标识追溯管理手册
- 农业多源卫星土壤信息解译设计报告
- 示波器项目节能评估报告
- 2026中国医疗器械行业竞争分析及发展趋势和前景预测研究报告
- 2026年草房子阅读测试题(附答案)
- 2026连南农商银行社会招聘(第二轮)笔试备考试题及答案详解
- 2026上海市就业援藏事业单位专项招聘9人备考题库含答案详解
- 2026四川宜宾数字经济产业发展集团有限公司及其子公司第二批员工招聘11人笔试参考题库及答案详解
- 2026年中考数学真题完全解读(广东省卷)
- 【中考真题】山西省2026年中考语文真题卷(含答案)
- 2026-2030中国疫苗行业市场深度分析及竞争格局与投资研究报告
- 2026年结核病防治知识竞赛题库及答案
- 城市轨道交通车站设备单元环境与设备监控系统
- 日立电梯MCA调试培训课件
评论
0/150
提交评论