编译原理(王晓斌)编译第三章.ppt
《编译原理(王晓斌)编译第三章.ppt》由会员分享,可在线阅读,更多相关《编译原理(王晓斌)编译第三章.ppt(45页珍藏版)》请在三一办公上搜索。
1、第三章 控制结构,第一节 语句级控制结构控制结构:程序员用来规定程序各个成分的执行流程的控制部分。语句级控制结构:语言用来构造各种语句执行顺序的机制。传统语言的三种语句级控制结构:顺序、选择、重复。,一.顺序顺序运算符;语句括号begin.end 复合语句,二.选择 1.if语句ALGOL 60的选择结构引起二义性if x0 then if x10 then x:=0 else x:=1000PL/1和Pascal的“最近匹配原则”ALGOL 68中if语句的结束符号fi ALGOL 68和Ada对else if 进行缩写,2.多重选择PL/1的select结构SELECT:WHEN(A)S1
2、;WHEN(B)S2;WHEN(C)S3;OTHERWISE S4;END,多种语言的case语句var operator:char;operand1,operand2,result:boolean;case operator of.:result:=operand1 and operand2;+:result:=operand1 or operand2;=:result:=operand1=operand2;end,Dijkstra选择结构的非确定性if B1S1 B2 S2 B3 S3.BN SN其中,Bi是布尔表达式,称为卫哨。若有多个卫哨为真时执行任一Si。,三.重复 1.计数器制导
3、当预先知道重复次数时,在循环计数器值的有限集合上重复。FORTRAN的DO循环中,用标号控制循环体 DO 7 I=1,10 A(I)=0 B(I)=07 CONTINUE,Pascal的for 语句计数重复的值可在任何有序集上for.tofor.downto在循环外循环控制变量的值无定义,2.条件制导 while 循环:描述0或任意多次的重复 repeat until循环:至少一次以上的重复 ALGOL 68循环的一般形式:for i from j by k to m while b do.od,Ada 的循环结构 loop/*可以在loop前加重复说明*/循环体(语句序列)end loop;
4、重复说明可以是:while 或 for in 或 for in reverse 可由exit或exit when终止循环,Dijkstra的卫哨命令表示法do B1S1 B2S2.BNSNod,四.语句级控制结构讨论顺序、选择、重复是一定意义的抽象关于goto语句的讨论控制结构的选择五.用户定义控制结构 如:Pascal的计数控制变量可以是枚举类型,第二节 单元级控制结构,单元级控制结构:规定程序单元之间控制流程的机制四种单元级控制结构:显式调用,异常处理,协同程序,并发单元,一.显式调用从属单元 1.调用方式 由调用语句使用被调用单元的名字来进行调用 2.参数的两种绑定方式位置绑定 关键字绑
5、定,subprogram S(F1,F2,FN);end位置绑定:call S(A1,A2,AN)call S(A1,A3,A8,A10)关键字绑定:call S(A1=F1,A3=F3,A8=F8,A10=F10),3.副作用 对非局部环境的修改 副作用降低了程序的可读性 副作用限制了数学运算律的使用 如:w:=x+f(x,y)+z 副作用影响目标代码的优化 如:u:=x+z+f(x,y)+f(x,y)+x+z,x、y为变参z为全局变量,4.别名 在单元激活期间,两个变量表示(共享)同一数据对象FORTRAN的EQUIVALENCE语句Pascal的变参使得形参和实参共享同一数据对象,pro
6、cedure swap(var x,y:integer);begin x:=x+y;y:=x-y;x:=x-y;end;调用swap(a,a);swap(bi,bj);若i=jswap(p,q);若p、q指向同一数据对象,变参和全局变量表示同一数据对象时,也会引起别名procedure swap(var x:integer);/*a是全局变量*/begin x:=x+a;a:=x-a;x:=x-a;end;调用swap(a);将产生不正确的结果,别名也影响编译器生成优化的代码 a:=(x-y*z)+w/*若a与x、y或z中任一个 b:=(x-y*z)+u 是别名*/别名的消除.废除可能引起别名
7、的结构.限制使用指针、变参、全局变量、数组等,二.隐式调用单元异常处理 异常是指导致程序正常执行中止的事件,要靠发信号来引发,用异常条件来表示。,有关异常处理的主要问题:(1)异常如何说明,它的作用域是什么?(2)异常如何发生(或如何发信号)?(3)发出异常信号时,如何控制要执行的单元(异常处理程序)?(4)发生异常时,如何绑定相应的异常处理程序?(5)处理异常之后,控制流程转向何处?,1.PL/1异常处理 异常的说明 ON 异常的引发 SIGNAL,语言预定义了一些异常,如 ZERODIVIDE异常名可多次说明,以最新一个为准ON ZERODIVIDE BEGIN END可用“NO”限定异常
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 编译 原理 王晓斌 第三

链接地址:https://www.31ppt.com/p-6056764.html