编译原理第03章.ppt

  1. 1、本文档共95页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
编译原理第03章编译原理第03章

自学 本章后续内容。 程序的可靠性 * allege英音:[?led?] ? 及物动词 vt. (无充分证据而)断言,宣称[O2][+(that)] (作为理由、借口或论据等)提出[(+as)][+(that)] 断言,宣称;指控 宣称,申述,主张,断言 并行”是指无论从微观还是宏观,二者都是一起执行的,就好像两个人各拿一把铁锨在挖坑,一小时后,每人一个大坑。 而“并发”在微观上不是同时执行的,只是把时间分成若干段,使多个进程快速交替的执行,从宏观外来看,好像是这些进程都在执行,这就好像两个人用同一把铁锨,轮流挖坑,一小时后,两个人各挖一个小一点的坑,要想挖两个大一点得坑,一定会用两个小时。 从以上本质不难看出,“并发”执行,在多个进程存在资源冲突时,并没有从根本提高执行效率。 * C++引用参数 void swap(int x, int y) { x:=x+y; y:=x-y; x:=x-y; } swap(a,a); 若i=j swap(b[i],b[j]); 若p、q指向同一数据对象 swap(*p,*q); 问题 ③变参和全局变量表示同一数据对象时,也会引起别名。 procedure swap(var x:integer); begin x:=x+a; /*a是全局变量*/ a:=x-a; x:=x-a end; 调用swap(a); 将产生不正确的结果 ④别名也影响编译器生成优化的代 a:=(x-y*z)+w ; b:=(x-y*z)+u ; 若a与x、y或z中任一个是别名 ⑤别名的消除 废除可能引起别名的结构 限制使用指针、变参、全局变量等 异常:导致程序正常执行中止的事件 要靠发信号来引发 用异常条件来表示。 二. 隐式调用单元?异常处理 早期语言中除 PL/1外,通常没有专门的异常条件及异常处理程序。 后期开发的语言提供了异常处理机制,使涉及异常事件的处理独立出来. 不包括在程序的主流程中,以保证程序的逻辑按基本算法进行。 (1)异常如何说明,它的作用域是什么? (2)异常如何发生?(如何捕获异常) (3)发生异常时,流程如何转移? 有关异常处理的主要问题 (4)发生异常时,如何绑定相应的异常处理程序? (5)处理异常之后,控制流程转向何处? 在这些问题中,问题(5)的解决对语言处理异常机制的能力和可使用性有很大的影响。 方法1 语言设计中可能的基本选择是,相应的异常处理程序执行完之后,允许控制返回发生异常事件的执行点。 在这种情况下,异常处理程序可对执行的程序进行“修补”,终止相应的异常事件,以便程序继续正常地执行。 解决了程序继续执行的问题, 但并未真正消除发生异常的因素。 方法2 相应的异常处理程序执行完之后,终止引起异常的程序单元的执行,由异常处理程序进行控制的转移。 从概念上说,这意味着引起异常的单元不能恢复执行;从实现的观点来看,这意味着删除异常单元的活动记录。 1. PL/1异常处理 2. CLU的异常处理 3. Ada的异常处理 自学,了解。 4. C语言的出错处理 实现出错处理的方法是将用户函数与出错处理程序紧密地结合起来, 但将造成出错处理使用的不方便和难以接受。 用C标准库的assert宏进行出错处理 使用allege函数在运行时检查错误。 allege函数对一些小型程序很方便,对于复杂的大型程序,所编写的出错处理程序也将更加复杂。 5.C++语言的异常处理 异常处理是C++的一个主要特征, 它提出了出错处理更加完美的方法。 设置陷阱 抛出异常 捕获异常 try throw catch C++的异常处理语句的格式如下: try { … } catch (异常类型1) { 异常1处理程序 } catch (异常类型2) {异常2处理程序} …… catch (异常类型n) {异常n处理程序} 1. 两个或两个以上程序单元之间交错地执行,这样的程序称为协同程序。 三. SIMULA 67 协同程序 设有单元 C1 和 C2 ,由 C1 先开始执行,当执行到 C1的“ resume C2

文档评论(0)

cxiongxchunj + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档