《编译错误处理》PPT课件.ppt_第1页
《编译错误处理》PPT课件.ppt_第2页
《编译错误处理》PPT课件.ppt_第3页
《编译错误处理》PPT课件.ppt_第4页
《编译错误处理》PPT课件.ppt_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

词法错误 语法错误 语义错误 违反了语言的环境限制 数组维数太大 循环嵌套层数太多,错误处理,词法错误、语法错误和语义错误,超越系统限制:(计算机系统和编译系统),1. 数据溢出错误,常数太大,计算结果溢出。,2. 符号表、静态存储分配数据区溢出。,3. 动态存储分配数据区溢出。,语义规则,标识符先说明后引用 标识符引用要符合作用域规定 过程调用时实参与形参类型一致 参与运算的操作数类型一致 下标变量的下标不能越界,错误处理方法有两种: 错误校正法: 根据文法进行错误改正 错误局部化法: 把错误的影响限制在一个局部的范围,避免错误扩散和影响程序其他部分的分析,错误局部化法,词法分析:发现不合法字符,显示错误,并跳 过该标识符(单词)继续往下分析。,语法语义分析:跳过所在的语法成分(短语或语 句),一般是跳到语句右界符, 然后从新语句继续往下分析。,错误局部化处理的实现(递归下降分析法),err: 全局变量,存放错误信息。,用递归下降分析时,如果发现错误,便将有关错误信息(字符串或者编号)送err,然后转错误处理程序; 出错程序先打印或显示出错位置以及出错信息,然后跳出一段源程序,直到跳到语句的右界符或正在分析的语法成分的合法后继符号为止,然后再往下分析。,if_ statement( ) getsym( ); /*读下个单词符号*/ C( ) ; /*表达式处理程序*/ if not sym=“then” err :=“缺then” ; error( ); /*出错处理程序*/ else getsym( ); statement( ); if sym=“else” getsym( ); statement( ); ,if then else;,error( ) printf(linecnt, err); do getsym( ); while(sym!=“;” or sym!=“end” ) ,发现错误立即跳到语句结尾处(语句右界符 ; 或end),这样处理较粗糙,将跳过太多; 上例中,缺then,就将跳过整个条件语句,使得then后的语句都被跳过而不分析,其中有错误就发现不了,若有错,则可跳到then 若statement有错,则可跳到else,if then else;,6.3 PL/0编译程序的错误处理,这样就需跳过一些后面输入的单词符号,直到读入一个能使编译程序恢复正常语法分析工作的单词为止。 通常在它的入口和出口处,调用一个测试程序TEST。当语法分析进入这样的语法单元前,可用测试程序检查当前单词符号是否属于它们开始符号的集合,若不是则出错。 在语法单位分析结束时,调用test,检查当前符号是否属于调用该语法单位时应有的后继符号集合。若当前单词符号是属于所给集合,则语法分析正常进行,否则出错。,开始符号集合 symset=set of symbol; declbegsys, statbegsys, facbegsys:symset; 开始符号集合(*主程序*) declbegsys:=constsym,varsym,procsym; statbegsys:=beginsym,callsym,ifsym, whilesym,readsym,writesym; facbegsys:=ident,number,lparen;,后继符号集合fsys作为参数: procedure test(s1,s2:symset; n:integer); procedure block(lev,tx:integer; fsys:symset); procedure statement(fsys:symset); procedure expression (fsys:symset); procedure term (fsys:symset); procedure factor (fsys:symset);,在进入某个语法单位时或在语法单位分析结束时,调用TEST,检查当前单词是否属于该语法单元的开始符号或后跟符号集合。, TEST TEST,开始符号集合与后继符号集合,TEST测试过程流程图,因子的处理过程,例:因子的处理过程 procedure factor(fsys:symset); var i:integer; begin 入口: test(f

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论