77范文网 - 专业文章范例文档资料分享平台

《编译原理》(陈火旺版)课后作业参考答案ch6-10

来源:网络收集 时间:2018-12-06 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:或QQ: 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

第6章 属性文法和语法制导翻译

7. 下列文法由开始符号S产生一个二进制数,令综合属性val给出该数的值:

试设计求S.val的属性文法,其中,已知B的综合属性c, 给出由B产生的二进位的结果值。例如,输入101.101时,S.val=5.625,其中第一个二进位的值是4,最后一个二进位的值是0.125。 【答案】

产生式 S→L1. L2 S→L L→L1B L→B B→0 B→1 语义规则 { S.val := L1.val + L2.val*2{ S.val:= L.val } { L.val:=L1.val*2+B.val; L. length:= L1.length +1 } { L.val:=B.val; L. length:= 1 } { B.val:= 0 } { B.val:=1 } -L2.length S→L.L∣L L→LB∣B B→0∣1 }

11. 设下列文法生成变量的类型说明:

L→ id L

L→, id L∣:T

T→ integer∣real

(1) 构造一下翻译模式,把每个标识符的类型存入符号表;参考例6.2。 【答案】

产生式 L→ id L1 L→, id L1 L→ :T T→ integer T→ real 语义规则 { S.val := L1.val + L2.val*2{ S.val:= L.val } { L.val:=L1.val*2+B.val; L. length:= L1.length +1 } { L.val:=B.val; L. length:= 1 } { B.val:= 0 } -L2.length }

1

第7章 语义分析和中间代码产生

1. 给出下面表达式的逆波兰表示(后缀式): 【答案】 原式 (1) a*(-b+c) (2) a+b*(c+d/e) (3) –a+b*(-c+d) (4) not A or not (C or not D) (5) (A and B) or (not C or D) (6) (A or B) and (C or not D and E) (7) if (x+y)*z=0 then (a+b)↑c else a↑b↑c ab-c+* abcde/+*+ a-bc-d+*+ A not C D not or not or A B and C not D or or A B or C D not E and or and if xy+z*0= then ab+c↑ else ab↑c↑ 后缀式

3. 请将表达式-(a+b)*(c+d)-(a+b+c)分别表示成三元式、间接三元式和四元式序列。 【答案】

四元式 三元式 间接三元式

(1) + a b T1 (1) + a b (1) + a b (2) - (3) (4) (5) (6) (7) + * + + - (1) c (2) a (5) (4) / d (3) b c (6) (2) - (3) (4) (5) (6) (7) (2) - (1) /

+ c d T3 (3) + c d

* T2 T3 T4 (4) * (2) (3) + a b T5 (5) + (1) c + T5 c T6 (6) - (4) (5)

- T4 T6 T7

间接码表:(1)→(2)→(3)→(4)→(1)→(5)→(6)

T1 / T2

4. 按7.3节所说的办法,写出下面赋值句A:=B*(-C+D) 的自下而上语法制导翻译过程。给

出所产生的三地址代码。 【答案】

四元式

(1) (2) (3) (4) uminus + * := c T1 B T3 / D T2 / T1 T2 T3 A 2

5. 按照7.3.2节所给的翻译模式,把下列赋值句翻译为三地址代码: A[i, j]:=B [i, j] + C[A [k, l]] + d [ i+j] 【答案】

中间代码 中间代码

(1) T1:=i*NA2 (13) T10:=WA*T8

(2) T1:=T1+j (14) T11:=T9[T10]

(3) T2:=A-CA (15) T12:=C-Cc

(4) T3:=WA*T1 (16) T13:=Wc*T11

(5) T4:=i* NB2 (17) T14:=T12[T13]

(6) T4:=T4+j (18) T15:=T7+ T14

(7) T5:=B-CB (19) T16:=i+j (8) T6:=WB*T4 (20) T17:=d-Cd

(9) T7:=T5[T6] (21) T18:=Wd*T16

(10) T8:=k* NA2 (22) T19:=T17[T18]

(11) T8:=T8+l (23) T20:=T15+ T19

(12) T9:=A-CA (24) T2[T3]:=T20

6. 按7.4.1和7.4.2节的翻译办法,分别写出布尔式A or ( B and not (C or D) )的四元式序列。 【答案】

用作数值计算时产生的四元式: 用作条件控制时产生的四元式:

四元式 (1) (2) (3) (4) or not and or C T1 B A D / T2 T3 T1 T2 T3 T4 (1) (2) (3) (4) 四元式 ( jnz, A, -, 0 ) ( j, -, -, (3)) (jnz, B, -, (5)) ( j, -, -, 0 ) (5) (6) (7) (8) 四元式 ( jnz, C, -, (4)) ( j, -, -, (7)) ( jnz, D, -, (5)) ( j, -, -, (1))

其中:右图中(1)和(8)为真出口,(4)(5)(7)为假出口。

7. 用7.5.1节的办法,把下面的语句翻译成四元式序列: While A

else while A≦D do A:=A+2; 【答案】

四元式

四元式 3

(1) (j<, A, C, (3)) (9) ( j, -, -, (1)) (2) ( j, -, -, 0) (10) ( j≦, A, D,(12)) (3) (j<, B, D, (5)) (11) ( j, -, -, (1)) (4) ( j, -, -, 0 ) (12) (+, A, 2, T2 ) (5) (j=, A, 1, (7)) (13) (:=,T2, -, A ) (6) ( j, -, -, (10) ) (14) ( j, -, -, (10)) (7) (+, C, 1, T1 ) (15) ( j, -, -, (1)) (8) (:=,T1, -, C ) 4

第9章 运行时存储空间组织

4. 下面是一个Pascal程序:

program PP (input, output); VAR k: integer; FUNCTION F (n: integer): integer; begin if n<=0 then F:=1 else F:=n*F(n-1); end; begin K:=F(10); … end. 当第二次( 递归地) 进入F后,DISPLAY的内容是什么?当时整个运行栈的内容是什么? 【答案】

第1次进入F后,运行栈的内容: 第2次进入F后,运行栈的内容:

10 4 17 11 9 0 16 0

8 n(形参) 15 n(形参) F 第2次F 7 1(形参个数) 14 1(形参个数) 6 2(全局display) 13 9(全局display) 5 返回地址 12 返回地址 4 0 11 4 3 k 10 4 2 0(display) 9 0 主程序P 1 返回地址 n( 8 形参 )

第1次F 0 0 1( 7 形参个数 ) 6 2(全局display)

第2次进入F后,Display内容为:

11

0

5 4 3 2 1 0

返回地址 0 k 0(display) 返回地址 0 主程序P

5. 对如下的Pascal程序,画出程序执行到(1)和(2)点时的运行栈。

program Tr (input, output); VAR i: integer; d: integer; procedure A ( k: real ); VAR p: char; 5

百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库《编译原理》(陈火旺版)课后作业参考答案ch6-10在线全文阅读。

《编译原理》(陈火旺版)课后作业参考答案ch6-10.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.77cn.com.cn/wenku/zonghe/348634.html(转载请注明文章来源)
Copyright © 2008-2022 免费范文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ: 邮箱:tiandhx2@hotmail.com
苏ICP备16052595号-18
× 注册会员免费下载(下载后可以自由复制和排版)
注册会员下载
全站内容免费自由复制
注册会员下载
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: