欢迎来到天天文库
浏览记录
ID:34145547
大小:429.29 KB
页数:16页
时间:2019-03-03
《北京航空航天大学《编译原理》第8章 错误处理》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第八章错误处理••概述概述••错误分类错误分类••错误的诊察和报告错误的诊察和报告••错误处理技术错误处理技术1北京航空航天大学计算机学院8.1概述1.必备功能之一正确的源程序:通过编译生成目标代码错误的源程序:通过编译发现并指出错误2.错误处理能力(1)诊察错误的能力(2)报错及时准确(3)一次编译找出错误的多少(4)错误的改正能力(5)遏止重复的错误信息的能力2北京航空航天大学计算机学院8.2错误分类从编译角度,将错误分为两类:语法错误和语义错误语法错误:源程序在语法上不合乎文法如:A[I,J:=B+*C语义错误主要包括:程序不符合语义规则或超越具
2、体计算机系统的限制3北京航空航天大学计算机学院语义规则:•标识符先说明后引用•标识符引用要符合作用域规定•过程调用时实参与形参要一致•参与运算的操作数类型一致•下标变量下标不能越界超越系统限制:•数据溢出错误•符号表、静态存储分配数据区溢出•动态存储分配数据区溢出4北京航空航天大学计算机学院8.3错误的诊察和报告错误诊察:1.违反语法和语义规则以及超过编译系统限制的错误。编译程序:语法和语义分析时(语义分析要借助符号表)2.下标越界,计算结果溢出以及动态存储数据区溢出。目标程序:目标程序运行时对此,编译程序要生成相应的目标程序作检查和进行处理5北京航空
3、航天大学计算机学院错误报告:1.出错位置:即源程序中出现错误的位置实现:行号计数器line_no单词序号计数器char_no一旦诊察出错误,当时的计数器内容就是出错位置2.出错性质:可直接显示文字信息可给出错误编码6北京航空航天大学计算机学院3.报告错误的两种方式:(1)分析完以后再报告(显示或者打印)编译程序可设一个保存错误信息的数据区(可用记录型数组),将语法语义分析所诊察到的错误送数据区保存,待源程序分析完以后,显示或打印错误信息。例:A[x,y:=B+*C源程序行号错误序号错误性质xx6缺少“]”xx10表达式语法错误7北京航空航天大学计算机学
4、院(2)边分析边报告可以在分析一行源程序时若发现有错,立即输出该行源程序,并在其下输出错误信息。Line-noA[x,y:=B+*C缺“]”orn表达式语法错m有时候报错不一定十分准确(位置和性质),需进一步分析错误编号例begin........i:=1step1untilndo............end8北京航空航天大学计算机学院8.4错误处理技术发现错误后,在报告错误的同时还要对错误进行处理,以方便编译能进行下去。目前有两种处理办法:1.错误改正:指编译诊察出错误以后,根据文法进行错误改正。如:A[i,j:=B+*C要正确地改正错误是很困难的
5、但不是总能做到,如A:=B-C*D+E)2.错误局部化处理:指当编译程序发现错误后,尽可能把错误的影响限制在一个局部的范围,避免错误扩散和影响程序其他部分的分析。9北京航空航天大学计算机学院(1)一般原则当诊察到错误以后,就暂停对后面符号的分析,跳过错误所在的语法成分然后继续往下分析。词法分析:发现不合法字符,显示错误,并跳过该标识符(单词)继续往下分析。语法语义分析:跳过所在的语法成分(短语或语句),一般是跳到语句右界符,然后从新语句继续往下分析。10北京航空航天大学计算机学院(2)错误局部化处理的实现(递归下降分析法)cx:全局变量,存放错误信息。
6、•用递归下降分析时,如果发现错误,便将有关错误信息(字符串或者编号)送CX,然后转出错误处理程序;•出错程序先打印或显示出错位置以及出错信息,然后跳出一段源程序,直到跳到语句的右界符(如:end)或正在分析的语法成分的合法后继符号为止,然后再往下分析。11北京航空航天大学计算机学院例:条件语句分析:ifthen[else];有如下分析程序:procedureif_stmt;procedureif_stmt;beginbeginnextsym;/*读下个单词符号*/nextsym;/*读下个单词符号*/B;/*调用布尔表达式
7、处理程序*/B;/*调用布尔表达式处理程序*/ifnotclass=‘then’thenifnotclass=‘then’thenbeginbegincx:=‘缺then’/*错误性质送cx*/cx:=‘缺then’/*错误性质送cx*/error;/*调用出错处理程序*/error;/*调用出错处理程序*/end;end;elseelsebeginbeginnextsym;nextsym;statementstatementend;end;ifclass=‘else’thenifclass=‘else’thenbeginbeginnextsym;ne
8、xtsym;statement;statement;endend北京航空航天大学计算机学院en
此文档下载收益归作者所有