编译原理简明教程(第2版)[冯秀芳,崔冬华,段富][电子教案] 第12章课件.pptVIP

编译原理简明教程(第2版)[冯秀芳,崔冬华,段富][电子教案] 第12章课件.ppt

  1. 1、本文档共51页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
编译原理简明教程(第2版)[冯秀芳,崔冬华,段富][电子教案] 第12章课件

;;第12章 出错处理;12.1 引言;12.1.1 错误存在的必然性;12.1.1 错误存在的必然性;12.1.2 错误的种类;12.1.2 错误的种类;12.1.2 错误的种类;12.1.2 错误的种类;12.1.2 错误的种类;12.1.2 错误的种类;12.1.3 错误复原;12.1.3 错误复原;12.1.3 错误复原;12.1.3 错误复原;12.1.3 错误复原;12.1.3 错误复原;12.1.3 错误复原;12.2 校正词法错误 ;12.2.1 词法错误的种类;12.2.1 词法错误的种类;12.2.2 词法错误的校正 ;12.2.2 词法错误的校正 ;12.2.2 词法错误的校正 ;12.3 校正语法错误 ;12.3.1 语法错误的复原;12.3.1 语法错误的复原;12.3.1 语法错误的复原;12.3.1 语法错误的复原;12.3.2 语法错误的校正 ;12.3.2 语法错误的校正 ;12.3.2 语法错误的校正 ;2.自底向上分析中错误的校正 ;这里仍以语句: i:=i+); 为例进行讨论。 假定扫描到上述语句中的符号“+”时进入状态Sk,则ACTION[Sk,)]当然为出错(空白元素)。假定引进的响应出错处理子程序Ei,其功能有二:删去当前输入符号和发出出错信息“不合法的输入符号:……”。那么,执行动作ACTION[Sk,)]将调用子程序Ei,因而,删去当前输入符号,并发出出错信息:“不合法的输入符号:)”。这时将扫描下一个符号继续分析下去,即读入符号,执行动作ACTION[Sk, ;],为出错,类似地引进出错处理子程序Ej,其功能可能如下:将一假想的标识符i及相应状态S1下推入分析栈,并发出出错信息:运算符分量缺少,然后执行动作ACTION[S1, i] ;这里, ACTION[Sk,i]=S1 因此,最终,上述语句校正为 i:=i+i; 其他出错处理子程序可类似地设计。 不言而喻,关于每个错误的修改信息应由出错处理子程序提供给用户(程序书写人员)以便参考,完成真正的校正。 其他各类分析技术,可以参照上述实现思想进行源程序语法错误的校正。;12.4 校正语义错误;12.4.1 语义错误的种类;12.4.1 语义错误的种类;2.动态语义错误 ;2.动态语义错误 ;2.动态语义错误 ;设有下列Pascal程序片段: P:=q; while P↑. nextNIL do begin P:= P↑. next; P↑. inf:= … end; 在While循环中的两个赋值语句可能带来致命的错误。原因在于,如果P的值为NIL,或者并未为P所指向的对象分配存储空间,这两个语句的赋值都是错误的。应该在这个程序片段之前对q置初值NIL,或者通过语句new(q)为q所指向的对象分配存储空间,并且把WHILE循环的重复条件 P↑. nextNIL 改写成 (P NIL)AND(P↑. nextNIL) 首先P必须不是空指针才可能对其值不是NIL的域变量next所指向的对象赋值。 ;12.4.2 语义错误检查措施 ;12.4.2 语义错误检查措施 ;展嘲栅俱平渗液欢身侮唆极碍孪厉霉诞醚拐涎胁昼氖炉攫嘴解触正殿求惠编译原理简明教程(第2版)[冯秀芳,崔冬华,段富][电子教案] 第12章课件编译原理简明教程(第2版)[冯秀芳,崔冬华,段富][电子教案] 第12章课件; ② 利用调试工具。静态模拟检查是静态地由人模拟计算机的运行,进行变量追踪,同时也进行了控制路径的追踪。采用这种办法可以查出程序中相当比例的错误。然而,一个明显的不足是工作量大,尤其当变量增多,控制结构又较复杂时,此不足更为突出。利用软件工具将大大减轻人的负担。 ; 编译程序可看成这样的软件工具。当发生下标表达式值越界或对值为NIL的指针变量及其域变量进行存取时发现相应的出错信息,只需在目标代码中增加相应的判别指令。当发生除以零溢出时也发出相应的出错信息,这可通过中断设施来实???。 ;然而毕竟目标代码是机器指令级的,用户并不容易找到出错信息与源程序中符号的对应关系。 调试程序是为了发现程序中的错误并进行校正而开发的工具软件,尤其是符号调试程序可以在源程序级上进行调试,给用户带来了极大的方便。调试程序的重要特征之一是允许对变量和控制路径进行动态追踪。首先在源程序中需进行追踪检查的语句处设置断点,当程序运行到断点处,便自动暂停,可以查看被追踪的变量值,然后按逐个语句执行的步进方式查看每执行一个语句后变量值的变化,从而检查运行的正确性。;目前的编译程序,更确切地说是编译系统,如TURBO Pascal,TURBO C与BORLAND C++等都是作为程序设计语言支持

文档评论(0)

xcs88858 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档