计算机编译原理——编译程序构造实践(第二版)附录五以赋初值方式给出的各章实习题调试实例_第1页
计算机编译原理——编译程序构造实践(第二版)附录五以赋初值方式给出的各章实习题调试实例_第2页
计算机编译原理——编译程序构造实践(第二版)附录五以赋初值方式给出的各章实习题调试实例_第3页
计算机编译原理——编译程序构造实践(第二版)附录五以赋初值方式给出的各章实习题调试实例_第4页
计算机编译原理——编译程序构造实践(第二版)附录五以赋初值方式给出的各章实习题调试实例_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

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

文档简介

1、附录五以赋初值方式给出的各章实习题调试实例第二篇第一章1.3.1 实习题 1.1 文法的输入输出以赋初值方式给出实例一的文法规则如下:char input 10= e:=e+t , e:=t , t:=t*f|f, f:=(e)|i, 0 ;1.3.2 实习题 1.2 推导的建立以赋初值方式给出文法如下:char input 20= e:=e+t|t, t:=t*f|f, f:=(e)|i, 0 ; 1.3.3 实习题 1.3 chomsky文法类识别以置初值方式给出实例三的文法规则如下。规则类型文法 = 0 , s , “asbc,1,4, s , abc , 1,3, cb, cd, 2,

2、2, cd, bd, 2 ,2 , bd, bc ,2,2 , bb , bb , 2,2, bc , bc , 2 ,2 , cc , cc ,2,2 ;或先以下列赋初值方式给出文法字符串,然后再处理成上述存储表示:char input 10= s:=asbc , s:=abc , cb:=cd , cd:=bd , bd:=bc , bb:=bb, bc:=bc, cc:=cc;1.3.4 实习题 1.4 压缩文法的文法等价变换以赋初值方式给出实例一的文法如下:char input 10= z:=be, a:=ae|a|e, b:=ce|af, d:=f, 0 ; 1.3.5 实习题 1.

3、5 消去左递归的文法等价变换以赋初值方式给出实例一的文法如下:char input 20= e:=e+t|t , t:=t*f|f, f:=(e)|i, 0 ; 1.3.6 实习题 1.6 从推导建立语法分析树以赋初值形式给出实例一的推导如下:char drive2020= e , t , t*f , t*(e), t*(e+t), t*(e+f), t*(e+i), t*(t+i), t*(f+i), t*(i+i), f*(i+i), i*(i+i), 0; 第二篇第二章2.3.1实习题 2.1 状态转换图的生成以赋初值方式给出实例一的正则文法如下,char input 20= z:=za

4、|aa|bb, a:=ba|a, b:=ab|b, 0 ; 或直接给出:char rg 3= z , z , a , z , a, a,z, b, b , a, b, a , a, a, b, a, b , b, b ,0 ; 2.3.2 实习题 2.2 运行状态转换图以赋初值方式给出实例一的正则文法如下,char input 20= z:=za|aa|bb, a:=ba|a, b:=ab|b, 0 ; 或直接给出:char rg 3= z , z , a , z, a, a,z , b, b , a, b, a, a, a, b, a, b , b, b ,0 ;以赋初值方式给出实例一的状态

5、转换图如下:int 状态转换矩阵 3= 0, 0, 1,0, 0,1,3, 0,2,1, 0,2,3 ; 其中, k= z ,a,b, s ,各状态的序号分别是z:1,a:2,b:3, s :4。=a, b,序号各为a:1,b:2。请注意,序号为0 的元素不使用。2.3.3 实习题 2.3 有穷状态自动机fa的构造以赋初值方式给出实例一的正则文法如下:char input 20= z:=za|aa|bb, a:=ba|a, b:=ab|b, 0 ; 或直接给出:char rg 3= z , z , a ,z, a, a ,z , b, b , a, b, a,a, a, b, a, b,b,

6、b ,0 ; 2.3.4 实习题 2.4 nfa的确定化以赋初值方式给出实例一的nfa如下:状态转换组类型状态转换矩阵 4= 0,0 , 0,0 , 2,1 ,2 , 1 ,2 ,0 , 2,1 ,2 , 0 ,0 ,0 , 2,1 ,2 , 1 ,2 ;其中, t、z 与 s所对应的状态序号分别为1、2 与 3,输入字符0 与 1的序号分别为1 与 2。2.3.5 实习题 2.5 运行 fa 以赋初值方式给出dfa的映象如下:int dfa映象 3= 0, 0, 1,0, 0,1,3, 0,2,1, 0, 2,3 ; 其中, k=z ,a,b,s,各状态的序号分别是z:1,a:2,b:3,s

7、:4。=a, b,序号各为a:1,b:2。请注意,序号为0 的元素不使用。2.3.6 实习题 2.6 词法分析程序的实现以赋初值方式给出符号及其机内表示对照表如下:属性字类型符号机内表示对照表19= 1,0,1,4,3,+ , 1,0,1,4,4,- , 1,0,1,5,5,* , 1,0,1,5,6,/ , 1,0,1,3,7, , 1,0,1,3,8, , 1,0,1,3,10,= , 1,0,1,2,11,= , 1,0,1,2,12,!= , 1,0,1,1,13,= , 1,0,0,0,14,; , 1,0,0,0,15, , 1,0,0,0,16,( , 1,0,0,0,17,)

8、, 1,0,0,0,18, , 1,0,0,0,19, , 1,0,0,0,20, , 1,0,0,0,21, ; 以赋初值方式给出关键字表如下,其中同时给出相应属性字符号类:属性字类型属性字表 8= 1,0,0,0,22,void,1,1,0,0,23,int, 1,1,0,0,24,float, 1,0,0,0,25,if, 1,0,0,0,26,else, 1,0,0,0,27,while, 1,0,0,0,28,do , 1,0,0,0,29,return ; 以置初值方式给出存放在输入缓冲区input中的实例一源程序如下:char input5050= int a,c;,void m

9、ain( ), int x; , x=(a+c*c)/8; ,;第二篇第三章3.3.1 实习题 .1 文法之 first集合与 follow集合的计算以赋初值方式给出实例一的文法如下:规则类型文法 = 0,101 ,0 ,103,102 ,2, 102,0 ,1,103,102 , 3,102 ,0 ,0, 103,0 ,105,104 ,2 ,104 ,0 ,2,105,104,3 ,104,0 ,0,105 ,3 ,101,4 , 3 , 105,0 ,5 ,1 , 0 ;其中, vn=e,p,t, q ,f, e、p、t、q与 f 的序号分别是1、2、 3、4 与 5,vt=+ ,* ,

10、 (, ) ,i, +、*、 (、 )与 i 的序号分别是1、2、3、4 与 5。注意:数组0 号元素不使用。3.3.2 实习题 3.2 递归下降识别程序的构造以赋初值方式给出实例一的文法如下:规则类型文法 = 0,101 ,0 ,103,102 ,2,102 ,0 ,1,103,102,3 ,102,0 ,0,103 ,0 ,105,104 ,2,104 ,0 ,2,105,104,3 ,104,0 ,0,105 ,0 ,3,101,4 ,3 , 105 ,0 ,5 ,1 , 0 ;然后再处理为利用链表的数组结构的文法存储表示。3.3.3 实习题 3.3 ll(1)文法的判定以赋初值方式给出

11、实例一的数组结构的first集合与 follow集合:char inputfirst集合 10= 0 , ( , i , /*对应于 e*/ + ,/*对应于 p,用空格表示 */ ( , i , /*对应于 t*/ * ,/*对应于 q,用空格表示 */ ( , i /*对应于 f*/ ;char inputfollow集合 10= 0 , ) , # , 0 , /*对应于 e*/ ) , # , 0 , /*对应于 p */ + , ) , # , 0 , /*对应于 t*/ + , ) , # , 0 ,/*对应于 q*/ * , + , ) , # , 0 /*对应于 f*/ ;ch

12、ar input规则右部first集合 10= 0 , ( , i , 0 , /*对应于 tp*/ + , 0 , /*对应于 +tp*/ ( , i , 0 , /*对应于 fq*/ * , 0 , /*对应于 *fq*/ ( , 0 , /*对应于 (e)*/ i , 0 /*对应于 i*/ ;然后进行处理,把它们转换成链式结构,并且其中用序号代替符号。3.3.4 实习题 3.4 预测分析表的构造以赋初值方式给出实例一的文法如下:规则类型文法 = 0,101 ,0 ,103,102 ,2,102 ,0 ,1,103,102,3 ,102,0 ,0,103 ,0 ,105,104 ,2,1

13、04 ,0 ,2,105,104,3 ,104,0 ,0,105 ,0 ,3,101,4 ,3 , 105 ,0 ,5 ,1 ,0 ;以赋初值方式给出实例一的first集合与 follow集合如下:struct int first元素个数; int 终结符号序号5 ; 初始规则右部first集合 = 0,2,3 ,5 ,1 , 1 , 2 ,3 ,5 ,1 ,2 ,1 ,3 ,1 ,6 ;struct int first元素个数; int 终结符号序号5 ;/*的序号为0*/ 初始 first集合 = 0,2,3 ,5 ,2 , 1,0 , 2 , 3 ,5 ,2,2 ,0 ,2 ,3 ,5

14、;struct int follow元素个数; int 终结符号序号5 ;/*# 的序号为0*/ 初始 follow集合 = 0,2,4,0, 2, 4,0, 3,1,4,0,3,1,4,0,4, 1,2,4,0 ;然后把它们处理成链表结构。3.3.5 实习题 3.5 应用预测分析技术句型分析以赋初值方式给出实例一的文法规则与预测分析表如下:char 文法 g20= “0 ”, “e:=tr” , “ r:=+tr”, “r:= ”, “t:=fw”, “w:=*fw”, “ w:=”, “f:=(e)”, “f:=i”, “0 ”; 或直接给出文法的存储表示如下:规则类型文法 = 0,101

15、 ,0 ,103,102 ,2,102 ,0 ,1,103,102,3 ,102,0 ,0,103 ,0 ,105,104 ,2,104 ,0 ,2,105,104,3 ,104,0 ,0,105 ,0 ,3,101,4 ,3 , 105 ,0 ,5 ,1 , 0 ;int预测分析表 6= 0, 0 ,0,0,1,0,1 ,3,2,0,0, 3,0 ,0 ,0,0,4,0,4 ,6,6,5,0, 6, 0,0, 0 ,0,7,0,8 ; 其中, vn=e,r,t, w ,f, e、r、t、w与 f 的序号分别是1、2、 3、4 与 5,vt=+ ,* , (, ) ,i, +、 *、 (、 )

16、与 i 的序号分别是1、2、3、4 与 5, 而#的序号为0,因此实际上机时,可给出vt=# ,+,* , (, ) ,i 。第二篇第四章4.3.1 实习题 4.1 有穷字母表上关系传递闭包的计算(warshall算法)以赋初值方式给出实例一的布尔矩阵如下,int 布尔矩阵 4= 0, 0, 1, 1 , 0, 1, 0, 0,1, 0, 0, 1, 0, 0, 0, 1 ; 注意: c 语言数组元素的下标从零开始。4.3.2实习题 4.2 算符优先矩阵构造以赋初值方式给出实例一的文法如下,规则类型文法 = 0,101 ,0 ,101,1,102,3 ,101,0 , 102,1,102 ,0

17、 ,102,2,103,3 ,102,0 , 103,1,103 ,0 ,3,101, 4 ,3 ,103,0 , 5 ,1, 0 ;其中, vn=e,t,f,e、t 与 f的序号分别是1、2 与 3,vt=+ ,* , (, ) ,i, +、*、 (、 )与 i 的序号分别是1、2、3、4 与 5。注意: c语言数组0 号元素不使用。4.3.3 实习题 4.3 应用算符优先分析技术句型分析以赋初值方式给出实例一的算符优先矩阵如下:int 算符优先矩阵 6= 0, 0, 3, 1, 1, 3, 1, 0, 3, 3, 1, 3, 1, 0, 1, 1, 1, 2 1, 0, 3, 3, 0,

18、3, 0, 0, 3, 3, 0, 3, 0 , 0 ;4.3.4 实习题 4.4 优先函数构造以赋初值方式给出实例一的算符优先矩阵如下:int 算符优先矩阵 6= 0, 0, 3, 1, 1, 3, 1, 0, 3, 3, 1, 3, 1, 0, 1, 1, 1, 2, 1, 0, 3, 3, 0, 3, 0, 0, 3, 3, 0, 3, 0,0 ; 4.3.5 实习题 4.5 slr (1)分析表自动构造以赋初值方式给出实例一的文法如下:规则类型文法 = 0,101 ,0 ,101,1,102,3 ,101,0 , 102,1,102 ,0 ,102,2,103,3 ,102,0 , 1

19、03,1,103 ,0 ,3,101,4 , 3,103,0 ,5 , 1 , 0 ;其中, vn=e, t, f ,e、t 与 f 的序号分别是1、2 与 3,vt=+ ,* , (, ) ,i, +、*、 (、 )与 i 的序号分别是1、2、3、4 与 5。注意: c语言数组0 号元素不使用。4.3.6 实习题 4.6 应用 lr(1) 分析技术句型分析以赋初值方式分别给出实例一的文法与lr分析表如下:规则类型文法 = 0,101 ,0 ,101,1,102,3 ,101,0 , 102,1,102 ,0 ,102,2,103,3 ,102,0 , 103,1,103 ,0 ,3,101,

20、4 , 3,103,0 ,5 , 1 , 0 ;其中, vn=e,t,f,e、t 与 f的序号分别是1、2 与 3,vt=+ ,* , (, ) ,i, +、*、 (、 )与 i 的序号分别是1、2、3、4 与 5。注意:数组0 号元素不使用。int action 6= 0,0,0,4,0,5,999,6,0,0,0,0,2, 2,7,0, 2,0, 4, 4, 4,0, 4,0,0,0,0,4,0,5,6, 6, 6,0, 6,0, 0,0,0,4,0,5,0,0,0,4,0,5,0,6,0,0,11,0, 1, 1,7,0,1,0,3, 3, 3,0, 3,0, 5, 5, 5,0, 5,

21、0 ,0 ; int goto 4= 0,1,2,3,0,0,0,0, 0,0,0,0, 0,0,0,0,0,8,2,3, 0,0,0,0, 0,0,9,3,0,0,0,10,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0 ; 第二篇第五章5.3.1 实习题 5.1 注释分析树生成以赋初值方式给出语法制导定义与lr分析表如下:规则类型语法制导定义 8= 0, /*仅考虑单字符符号,符号名后跟的数字可不用下标*/ 101,0,102,1, 2, print(e.val) , 102,0,102,2,103,3, e.val:=e1.val+t.val, 102,0,103

22、, 1, e.val:=t.val , 103,0,103,3,104,3, t.val:=t1.val*f.val, 103,0,104, 1, t.val:=f.val , 104,0,4,102,5, 3, f.val:=e.val , 104,0,6, 1, f.val:=d.lexval ; 其中, vn=l ,e,t, f,l、 e、t 与 f 的序号分别是1、2、3 与 4,vt=,+,*,(,),d,=、 +、* 、( 、) 与 d 的序号分别是1、2、3、4、5 与 6。int action 7= /*#的序号是0*/ 0,0,0,0,5,0,6, 999,0,0,0,0,0

23、,0, 0,7,8,0,0,0,0, 0,-3,-3,9,0,-3,0, 0,-5,-5,-5,0,-5,0,0,0,0,0,5,0,6, 0,-7,-7,-7,0,-7,0,-1,0,0,0,0,0,0, 0,0,0,0,5,0,6, 0,0,0,0,5,0,6, 0,0,8,0,0,13,0, 0,-2,-2,9,0,-2,0, 0,-4,-4,-4,0,-4,0,0,-6,-6,-6,0,-6,0 ; int goto 5= 0,1,2,3,4, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,10,3,4, 0,0,0,0,0, 0,0,

24、0,0,0, 0,0,0,11,4, 0,0,0,0,12, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0 ; 5.3.2 实习题 5.2 基于自顶向下方式翻译方案的属性值计算以赋初值方式给出翻译方案与预测分析表如下。翻译规则类型翻译方案 7= 0, /*语义子程序序号出现于右部之中,计入规则右部长度*/ 101,0,103,1001,102,1002, 4,r.i:=t.val;e.val:=r.s, 102,0,1,103,1003,102,1004,5,r1.i:=r.i+t.val;r.s:=r1.s, 102,0,2,103,1005,102,

25、1004,5,r1.i:=r.it.val;r.s:=r1.s, 102,0,1006, 1,r.s:=r.i, 103,0,3,101,1007,4, 4,t.val:=e.val, 103,0,5,1008, 2,t.val:=n.lexval ; 其中, vn= e ,r,t , e、 r与 t 的序号分别是1、2 与 3,vt=+, ,(,),n, +、 ( 、) 与 n 的序号分别是1、2、3、4 与 5。规则序号类型预测分析表 6= /*#的序号是0*/ 0, 0,0,0,1,0,1, 4,2,3,0,4,0,0,0,0,5,0,6 ; 5.3.3 实习题 5.3 基于自底向上方式

26、翻译方案的属性值计算以赋初值方式给出翻译方案与lr分析表如下:翻译规则类型翻译方案 9= 0, /*语义子程序序号未计入规则右部长度*/ 101,0,102,1, 1001,2, print(e.val) , 102,0,102,2,103, 1002,3 , e.val:=e1.val+t.val, 102,0,102,3,103, 1003,3 , e.val:=e1.valt.val, 102,0,103, 1004,1, e.val:=t.val , 103,0,103,4,104, 1005,3 , t.val:=t1.val*f.val, 103,0,103,5,104, 1006

27、,3 , t.val:=t1.val/f.val, 103,0,104, 1007,1, t.val:=f.val , 104,0,6, 1008,1, f.val:=d.lexval ; 其中, vn=l ,e,t, f,l、 e、t 与 f 的序号分别是1、2、3 与 4,vt=,+,, *,/ ,d, =、+、, *、/ 与 d 的序号分别是1、2、3、4、5 与 6。int action 7= /*#的序号是0*/ 0,0,0,0,0,0,5, 999,0,0,0,0,0,0, 0,6,7,8,0,0,0, 0,-4,-4,-4,9,10,0,0,-7,-7,-7,-7,-7,0, 0

28、,-8,-8,-8,-8,-8,0, -1,0,0,0,0,0,0, 0,0,0,0,0,0,5,0,0,0,0,0,0,5, 0,0,0,0,0,0,5, 0,0,0,0,0,0,5, 0,-2,-2,-2,9,10,0, 0,-3,-3,-3,9,10,0,0,-5,-5,-5,-5,-5,0, 0,-6,-6,-6,-6,-6,0 ; int goto 5= 0,1,2,3,4, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,11,4, 0,0, 0,12,4, 0,0,0,0,13,0,0

29、,0,0,14, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0 ; 5.3.4 实习题 5.4 赋值语句目标代码生成以赋初值方式给出翻译方案与lr分析表如下:翻译规则类型翻译方案 7= 0, /*语义子程序序号未计入规则右部长度*/ 101,0,1,2,102, 1001,3, , /*语义动作参看 */ 102,0,102,3,102,1002,3, , /*问题分析部分 */ 102,0,102,4,102,1003,3, , 102,0,5,102, 1004,2, , 102,0,6,102,7, 1005,3, , 102,0,1, 1006,

30、1, ; 其中, vn=a,e,a与 e的序号分别是1 与 2,vt=i,=,+,*,(,), i 、=、+、* 、, (与)的序号分别是1、2、3、4、5、6 与 7。int action 8= /*#的序号是0*/ 0,2,0,0,0,0,0,0,999,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0, 0,7,0,0,0,5,6,0,-1,0,0,8,9,0,0,0, 0,7,0,0,0,5,6,0, 0,7,0,0,0,5,6,0,-6,0,0,-6,-6,0,0,-6,0,7,0,0,0,5,6,0, 0,7,0,0,0,5,6,0,-4,0,0,-4,-4,0,0,-4

31、,0,0,0,8,9,0,0,14, -2,0,0,-2,9,0,0,-2,-3,0,0,-3,-3,0,0,-3, -5,0,0,-5,-5,0,0,-5 ; int goto 3= 0,1,0, 0,0,0, 0,0,0, 0,0,4, 0,0,0, 0,0,10, 0,0,11,0,0,0, 0,0,12, 0,0,13,0,0,0, 0,0,0, 0,0,0, 0,0,0, 0,0,0 ; 5.3.5 实习题 5.5 条件语句目标代码生成以赋初值方式给出翻译方案与lr分析表如下。翻译规则类型翻译方案 17= 0, /*语义子程序序号未计入规则右部长度*/ 101,0,1,2,102,3

32、,101,4,101,1001, , , 101,0,1,2,102,3,101, 1002,, , 101,0,5,6,103, 1003,, , 102,0,102,7,102, 1004,, , 102,0,102,8,102, 1005,, , 102,0,9,102, 1006,, , 102,0,103,10,103, 1007,, , 102,0,103, 6,103, 1007,, , 102,0,103,11,103, 1007,, , 102,0,12, 1008,, , 102,0,13, 1009,, , 103,0,103,14,103, 1010,, , 103,0

33、,103,15,103, 1011,, , 103,0,16,103, 1012,, , 103,0,2,103,3, 1013,, , 103,0,5, 1014,, ; 其中, vn=s,b, e ,s、b与 e的序号分别是1、2 与 3,vt= if, (, ), else, i, =, &, |, !, ,true,false,+,*,-, if 、( 、) 、else 、i 、=、& 、| 、! 、true 、false 、+、* 与- 的序号分别是1、2、3、与 16。int action 17= /*#的序号是0*/ 0,2,0,0,0,3,0,0,0,0,0,0

34、,0,0,0,0,0, 999,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0, 0,0,12,0,0,13,0,0,0,7,0,0,9,10,0,0,11, 0,0,12,0,0,13,0,0,0,0,0,0,0,0,0,0,11, 0,0,0,15,0,0,0,16,17,0,0,0,0,0,0,0,0, 0,0,12,0,0,13,0,0,0,7,0,0,9,10,0,0,11, 0,0,0,0,0,0,20,0,0,0,19,21,

35、0,0,22,23,0, 0,0,0,-10,0,0,0,-10,-10,0,0,0,0,0,0,0,0, 0,0,0,-11,0,0,0,-11,-11,0,0,0,0,0,0,0,0, 0,0,12,0,0,13,0,0,0,0,0,0,0,0,0,0,11, 0,0,12,0,0,13,0,0,0,0,0,0,0,0,0,0,11, -16,0,0,-16,-16,0,-16,-16,-16,0,-16,-16,0,0,-16,-16,0, -3,0,0,0,-3,0,0,0,0,0,0,0,0,0,22,23,0, 0,2,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,

36、0,0,12,0,0,13,0,0,0,7,0,0,9,10,0,0,11, 0,0,12,0,0,13,0,0,0,7,0,0,9,10,0,0,11, 0,0,0,-6,0,0,0,-6,-6,0,0,0,0,0,0,0,0, 0,0,12,0,0,13,0,0,0,0,0,0,0,0,0,0,11, 0,0,12,0,0,13,0,0,0,0,0,0,0,0,0,0,11, 0,0,12,0,0,13,0,0,0,0,0,0,0,0,0,0,11, 0,0,12,0,0,13,0,0,0,0,0,0,0,0,0,0,11, 0,0,12,0,0,13,0,0,0,0,0,0,0,0,0,

37、0,11, -14,0,0,-14,-14,0,-14,-14,-14,0,-14,-14,0,0,-14,-14,0, 0,0,0,34,0,0,0,0,0,0,0,0,0,0,22,23,0, -2,0,0,0,35,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,-4,0,0,0,-4,-4,0,0,0,0,0,0,0,0, 0,0,0,-5,0,0,0,16,-5,0,0,0,0,0,0,0,0, 0,0,0,-7,0,0,0,-7,-7,0,0,0,0,0,22,23,0, 0,0,0,-8,0,0,0,-8,-8,0,0,0,0,0,22,23,0, 0,0,0,-9

38、,0,0,0,-9,-9,0,0,0,0,0,22,23,0, -12,0,0,-12,-12,0,-12,-12,-12,0,-12,-12,0,0,-12,23,0, -13,0,0,-13,-13,0,-13,-13,-13,0,-13,-13,0,0,-13,-13,0 -15,0,0,-15,-15,0,-15,-15,-15,0,-15,-15,0,0,-15,-15,0, 0,2,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0, -1,0,0,0,-1,0,0,0,0,0,0,0,0,0,0,0,0; int goto 4= 0,1,0,0, 0,0,0,0, 0,0

39、,0,0,0,0,0,0, 0,0,6,8, 0,0,0,14,0,0,0,0,0,0,18,8, 0,0,0,0, 0,0,0,0, 0,0,0,0,0,0,0,24, 0,0,0,25,0,0,0,0, 0,0,0,0,0,26,0,0, 0,0,27,8,0,0,28,8,0,0,0,0,0,0,0,29, 0,0,0,30,0,0,0,31,0,0,0,32,0,0,0,33, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,36,0

40、,0, 0,0,0,0 ; 5.3.6 实习题 5.6 while语句目标代码生成以赋初值方式给出翻译方案与lr分析表如下。翻译规则类型翻译方案 12= 0, /*语义子程序序号未计入规则右部长度*/ 101,0,1,2,102,3,101, 1001,5, , 101,0,4,5,103, 1002,3, , 102,0,103,104,103, 1003,3, , 103,0,103, 6,103, 1004,3, , 103,0,103, 7,103, 1005,3, , 103,0,2,103,3, 1006,3, , 103,0,4, 1007,1, , 103,0,8, 1008,

41、1, , 104,0,9, 1009,1, , 104,0,5 1010,1, , 104,0,10, 1011,1, ; 其中, vn=s,b, e , relop ,s、b、e与 relop的序号分别是1、2、3 与 4,vt= while,(,), i,=,+,*,n, while 、( 、) 、i 、=、+、 *、n、的序号分别是1、2、3、与 10。int action 11= /*#的序号是0*/ 0,2,0,0,3,0,0,0,0,0,0 , 999,0,0,0,0,0,0,0,0,0,0 , 0,0,4,0,0,0,0,0,0,0,0 , 0,0,0,0,0,5,0,0,0,0

42、,0 , 0,0,8,0,9,0,0,0,10,0,0 , 0,0,8,0,9,0,0,0,10,0,0 , 0,0,0,12,0,0,0,0,0,0,0, 0,0,0,0,0,17,14,15,0,16,18, 0,0,8,0,9,0,0,0,10,0,0, -7,0,0,-7,0,-7,-7,-7,0,-7,-7, -8,0,0,-8,0,-8,-8,-8,0,-8,-8, -2,0,0,0,0,0,14,15,0,0,0, 0,2,0,0,3,0,0,0,0,0,0, 0,0,8,0,9,0,0,0,10,0,0, 0,0,8,0,9,0,0,0,10,0,0, 0,0,8,0,9,0,

43、0,0,10,0,0, 0,0,-9,0,-9,0,0,0,-9,0,0, 0,0,-10,0,-10,0,0,0,-10,0,0, 0,0,-11,0,-11,0,0,0,-11,0,0, 0,0,0,24,0,0,14,15,0,0,0, -1,0,0,0,0,0,0,0,0,0,0, 0,0,0,-3,0,0,14,15,0,0,0, -4,0,0,-4,0,-4,-4,15,0,-4,-4, -5,0,0,-5,0,-5,-5,-5,0,-5,-5, -6,0,0,-6,0,-6,-6,-6,0,-6,-6 ; int goto 5= 0,1,0,0,0, 0,0,0,0,0, 0,0

44、,0,0,0, 0,0,0,0,0, 0,0,6,7,0, 0,0,0,11,0,0,0,0,0,0, 0,0,0,0,13, 0,0,0,19,0,0,0,0,0,0 0,0,0,0,0, 0,0,0,0,0, 0,20,0,0,0,0,0,0,21,0,0,0,0,22,0,0,0,0,23,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0 ; 5.3.7 实习题 5.7 赋值语句四元式序列生成翻译方案与lr分析表可如同实习题5.4 以赋初

45、值方式给出。5.3.8 实习题 5.8 条件语句四元式序列生成以赋初值方式给出翻译方案与lr分析表如下。翻译规则类型翻译方案 9= 0, /*语义子程序序号未计入规则右部长度*/ 101,0,102,105, 1001,2, , 102,0,1,2,103,3,105,101,106,4,105,102,1002,10, , 102,0,1,2,103,3,105,101,1003,6, , 102,0,5,6,104, 1004,3, , 103,0,103,7,105,103, 1005,4, , 103,0,103,8,105,103, 1006,4, , 103,0,9,103, 10

46、07,2, , 103,0,104,10,104, 1008,3, , 104,0,104,11,104, 1009,3, , 104,0,104,12,104, 1010,3, , 104,0,13,104, 1011,2, , 104,0,2,104, 3, 1012,3, , 104,0,5, 1013,1, , 105,0, 1014,0, , 106,0, 1015,0, ; 其中, vn=p,s ,b, e,m,n , p,s, b, e,m 与 n的序号分别是1、2、3、4、 5 与 6,vt= if, (, ), else, i, =, &, |, !,relop,+,

47、*,-, if 、( 、) 、else 、i 、=、& 、| 、! 、relop 、+、*与- 的序号分别是1、2、3、 12 与 13。int action 14= /*#的序号是0*/ 0,3,0,0,0,4,0,0,0,0,0,0,0,0, 999,0,0,0,0,0,0,0,0,0,0,0,0,0, -14,-14,0,0,0,-14,0,0,0,0,0,0,0,0, 0,0,6,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,7,0,0,0,0,0,0,0, -1,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,12,0,0,13,0,0,

48、0,9,0,0,0,11, 0,0,12,0,0,13,0,0,0,0,0,0,0,11, 0,0,0,15,0,0,0,16,17,0,0,0,0,0, 0,0,12,0,0,13,0,0,0,9,0,0,0,11, 0,0,0,0,0,0,0,0,0,0,19,20,21,0, 0,0,12,0,0,13,0,0,0,0,0,0,0,11, 0,0,12,0,0,13,0,0,0,0,0,0,0,11, -13,0,0,-13,-13,0,0,-13,-13,0,-13,-13,-13,0, -4,0,0,0,-4,0,0,0,0,0,0,20,21,0, -14,-14,0,0,0,-1

49、4,0,0,0,0,0,0,0,0, -14,-14,0,0,0,-14,0,0,0,0,0,0,0,0, -14,-14,0,0,0,-14,0,0,0,0,0,0,0,0, 0,0,0,-7,0,0,0,-7,-7,0,0,0,0,0, 0,0,12,0,0,13,0,0,0,0,0,0,0,11, 0,0,12,0,0,13,0,0,0,0,0,0,0,11, 0,0,12,0,0,13,0,0,0,0,0,0,0,11, -11,0,0,-11,-11,0,0,-11,-11,0,-11,-11,-11,0, 0,0,0,30,0,0,0,0,0,0,0,20,21,0, 0,3,0,

50、0,0,4,0,0,0,0,0,0,0,0, 0,0,12,0,0,13,0,0,0,9,0,0,0,11, 0,0,12,0,0,13,0,0,0,9,0,0,0,11, 0,0,0,-8,0,0,0,-8,-8,0,0,20,21,0, -9,0,0,-9,-9,0,0,-9,-9,0,-9,-9,21,0, -10,0,0,-10,-10,0,0,-10,-10,0,-10,-10,-10,0, -12,0,0,-12,-12,0,0,-12,-12,0,-12,-12,-12,0,-3,0,0,0,-15,0,0,0,0,0,0,0,0,0, 0,0,0,-5,0,0,0,-5,-5,0,0,0,0,0, 0,0,0,-6,0,0,0,-6,-6,0,0,0,0,0, 0,0,0,0,35,0,0,0,0,0,0,0,0,0, -14,-14,0,0,0,

温馨提示

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

评论

0/150

提交评论