编译原理基础——习题与上机题解答 教学课件 作者 刘坚 第1 5章 第4章.ppt

编译原理基础——习题与上机题解答 教学课件 作者 刘坚 第1 5章 第4章.ppt

  1. 1、本文档共59页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
  4.1 将下述语句分别翻译成后缀式、三元式、三地址码和树。   (1)? a*–(b+c)   (2) ?–(a+b)*(c+d)+(a+b–c)   (3) ?if i10 then i:=10 else i:=0   解:   (1) 后缀式:abc+–*   ???三元式:① (+, b, c) ② (@, ①, ) ③ (*, a, ②)   ???三地址码:T1:=b+c; T2:=-T1; T3:=a*T2;   树如题4.1图1所示。   (2) 后缀式:ab+–cd+*ab+c–+   三元式:① (+, a, b) ⑤ (+, a, b)   ② (–, ①, ) ⑥ (–, ⑤, c)   ③ (+, c, d) ⑦ (+, ④, ⑥)   ④ (*, ②, ③)   三地址码:T1:=a+b; T2:= –T1; T3:=c+d;   T4:=T2*T3; T5:=a+b;   T6:=T5–c; T7:=T4+T6;   树如题4.1图2所示。    题4.1图2   (3) 后缀式:i 10 i 10 := i 0 := if–then–else   或 ?i 10 P1 jez i 10 := P2 jump P1: i 0 := P2:   三元式:① (, i, 10) ④ (j, ⑥, _)    ② (jez, ①, ⑤) ⑤ (:=, i, 0)    ③ (:=, i, 10)   三地址码:① if i 10 goto ③ ④ goto ⑥    ② goto ⑤ ⑤ i:=0    ③ i:=10   树如题4.1图3所示。       题4.1图3   4.3 使用Pascal的作用域规则,确定下述程序中名字a和b的引用中属于哪个声明的作用域,并给出程序运行的结果。   program a (input, output); (1)    procedure b (u, v, x, y :integer); (2)    var a : record a, b : integer end; (3)   ???b : record b, a : integer end; (4)    begin (5)    with a do begin a := u; b := v end; (6)    with b do begin a := x; b := y end; (7)    writeln(a.a, a.b, b.a, b.b) (8)    end; (9)   begin b(1, 2, 3, 4) end. (10)   解: 续表   4.4 假定下述程序分别采用值调用、引用调用、复写-恢复和换名调用,请给出它们的打印结果。   program main(input, output);    procedure p(x, y, z);    begin y:= y+1; z:= z+x end;   begin a:=2; b:=3; p(a+b, a, a); print a end.   解:   引用调用和复写—恢复要求实参是左值,若实参为表达式,则可以有两种解决方案:① 语法错;② 为表达式分配一个临时变量t并将表达式的值放进t,然后将t看作实参,进行相应的参数传递。若按第二种解决方案,则   值调用结果:2;   引用调用结果:8;   复写-恢复调用结果:7;   换名调用结果:9。   4.5 对于例4.14中的Pascal程序,若以线性表方式组织符号表,请给出分析到第(14)行时符号表的状态。   解:   当程序分析到第(14)行时,符号表中可以被访问到的变量如下,它们是以栈的形式组织的,栈顶元素是partition中的j。程序中变量i出现在3个过程(readarray、quicksort、partition)中,当前状态已经出了readarray的作用域,因此readarray中的i不在当前符号表中,而在符号表中的两个i,仅有partition中的i

您可能关注的文档

文档评论(0)

118压缩包课件库 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档