《编译错误处理》PPT课件.ppt
《《编译错误处理》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《编译错误处理》PPT课件.ppt(16页珍藏版)》请在三一办公上搜索。
1、词法错误语法错误语义错误违反了语言的环境限制数组维数太大循环嵌套层数太多,错误处理,词法错误、语法错误和语义错误,超越系统限制:(计算机系统和编译系统),1.数据溢出错误,常数太大,计算结果溢出。,2.符号表、静态存储分配数据区溢出。,3.动态存储分配数据区溢出。,语义规则,标识符先说明后引用标识符引用要符合作用域规定过程调用时实参与形参类型一致参与运算的操作数类型一致下标变量的下标不能越界,错误处理方法有两种:错误校正法:根据文法进行错误改正错误局部化法:把错误的影响限制在一个局部的范围,避免错误扩散和影响程序其他部分的分析,错误局部化法,词法分析:发现不合法字符,显示错误,并跳 过该标识符
2、(单词)继续往下分析。,语法语义分析:跳过所在的语法成分(短语或语 句),一般是跳到语句右界符,然后从新语句继续往下分析。,错误局部化处理的实现(递归下降分析法),err:全局变量,存放错误信息。,用递归下降分析时,如果发现错误,便将有关错误信息(字符串或者编号)送err,然后转错误处理程序;出错程序先打印或显示出错位置以及出错信息,然后跳出一段源程序,直到跳到语句的右界符或正在分析的语法成分的合法后继符号为止,然后再往下分析。,if_ statement()getsym();/*读下个单词符号*/C();/*表达式处理程序*/if not sym=“then”err:=“缺then”;err
3、or();/*出错处理程序*/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后的语句都被跳过而不分析,其中有错误就发现不了,(3)提高错误局部化程度的方法,若有错,则可跳到then若statement有错,则可跳到else,i
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 编译错误处理 编译 错误 处理 PPT 课件
链接地址:https://www.31ppt.com/p-5569033.html