云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > 第八章 语法制导翻译和中间代码生成

第八章 语法制导翻译和中间代码生成

  • 62 次阅读
  • 3 次下载
  • 2026/1/10 1:34:39

第8章 语法制导翻译和中间代码生成

课后习题

第8章 习题

第1题:

给出下面表达式的逆波兰表示(后缀式): (1)a*(-b+c)

(2) if(x+y)*z=0 then s∶=(a+b)*c else s∶=a*b*c

第2题:

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

第3题:

采用语法制导翻译思想,表达式E的\值\的描述如下: 产生式 语义动作

(0) S′→E {print E.VAL} (1) E→E1+E2 {E.VAL∶=E1.VAL+E2.VAL} (2) E→E1*E2 {E.VAL∶=E1.VAL*E2.VAL} (3) E→(E1) {E.VAL∶=E1.VAL}

(4) E→n {E.VAL∶=n.LEXVAL} 假如终结符n可以是整数或实数,算符+和*的运算对象类型一致,语义处理增加\类型匹配检查\,请给出相应的语义描述。

第4题:

请将下列语句

while (AD) then X:=Y+Z 翻译成四元式

第8章 语法制导翻译和中间代码生成

问答题答案

问答第1题

给出下面表达式的逆波兰表示(后缀式): (1) a*(-b+c) 答案:ab-c+*

(2) if(x+y)*z=0 then s∶=(a+b)*c else s∶=a*b*c

答案:xy+z*0=sab+c*:=sab*c*:=¥(注:¥表示if-then-else运算)

问答第2题

请将表达式-(a+b)*(c+d)-(a+b)分别表示成三元式、间接三元式和四元式序列。 答案:三元式 (1) (+ a, b) (2) (+ c, d) (3) (* (1), (2)) (4) (- (3), /) (5) (+ a, b) (6) (- (4), (5)) 间接三元式

间接三元式序列 间接码表 (1) (+ a, b) (1) (2) (+ c, d) (2) (3) (* (1), (2)) (3) (4) (- (3), /) (4) (5) (- (4), (1)) (1) (5) 四元式 (1) (+, a, b, t1) (2) (+, c, d, t2) (3) (*, t1, t2, t3) (4) (-, t3, /, t4) (5) (+, a, b, t5) (6) (-, t4, t5, t6)

问答第3题

采用语法制导翻译思想,表达式E的\值\的描述如下: 产生式 语义动作

(0) S′→E {print E.VAL} (1) E→E1+E2 {E.VAL∶=E1.VAL+E2.VAL} (2) E→E1*E2 {E.VAL∶=E1.VAL*E2.VAL} (3) E→(E1) {E.VAL∶=E1.VAL}

(4) E→n {E.VAL∶=n.LEXVAL}

假如终结符n可以是整数或实数,算符+和*的运算对象类型一致,语义处理增加\类型匹配检查\,请给出相应的语义描述。

第8章 语法制导翻译和中间代码生成

答案:

(0) S′→E { if error≠1 then print E.VAL}

(1) E→E1+E2 { if E1.TYPE=int AND E2.TYPE=int then begin

E.VAL:=E1.VAL + E2.VAL;

E.YTPE:=int; end

else if E1.TYPE=real AND E2.TYPE=real then begin

E.VAL:=E1.VAL + E2.VAL; E.YTPE:=real; end else error=1 }

(2) E→E1*E2 { if E1.TYPE=int AND E2.TYPE=int then begin

E.VAL:=E1.VAL * E2.VAL;; E.YTPE:=int; end

else if E.TYPE=real AND E.TYPE=real then begin

E.VAL:=E.VAL * E.VAL;; E.YTPE:=real; end else error=1

1

2

1

2

}

(3) E→(E1) { E.VAL:=E1.VAL; E.TYPE:=E1.TYPE } (4) E→n { E.VAL:=n.LEXVAL;

E.TYPE:=n.LEXTYPE } 第4题

请将下列语句

while (AD) then X:=Y+Z 翻译成四元式 答案:

假定翻译的四元式序列从(100)开始: (100) if A

第8章 语法制导翻译和中间代码生成

(107)

  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

第8章 语法制导翻译和中间代码生成 课后习题 第8章 习题 第1题: 给出下面表达式的逆波兰表示(后缀式): (1)a*(-b+c) (2) if(x+y)*z=0 then s∶=(a+b)*c else s∶=a*b*c 第2题: 请将表达式-(a+b)*(c+d)-(a+b+c)分别表示成三元式、间接三元式和四元式序列。 第3题: 采用语法制导翻译思想,表达式E的\值\的描述如下: 产生式 语义动作 (0) S′→E {print E.VAL} (1) E→E1+E2 {E.VAL∶=E1.VAL+E2.VAL} (2) E→E1*

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com