ImageVerifierCode 换一换
格式:DOCX , 页数:24 ,大小:187.42KB ,
资源ID:15125575      下载积分:12 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/15125575.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(编译原理作业集第七章Word文档格式.docx)为本站会员(b****2)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

编译原理作业集第七章Word文档格式.docx

1、 b. if A then B else false ;c. if A then false else true; d. if A then true else false ;2.为了便于优化处理,三地址代码可以表示成 。a. 三元式 b. 四元式 c. 后缀式 d. 间接三元式3.使用三元式是为了 :a. 便于代码优化处理 b. 避免把临时变量填入符号表c. 节省存储代码的空间 d. 提高访问代码的速度4.表达式 -a+b*(-c+d) 的逆波兰式是 。a. ab+-cd+-* ; b. a-b+c-d+* ;c. a-b+c-d+* ; d. a-bc-d+*+ ;5.赋值语句 x:=-(

2、a+b)/(c-d)-(a+b*c) 的逆波兰式表示是 。a. xab+cd-/-bc*a+-:= ; a. xab+/cd-bc*a+-: a. xab+-cd-/abc*+-:a. xab+cd-/abc*+-:6.在一棵语法树中结点的继承属性和综合属性之间的相互依赖关系可以由 来描述。a. 抽象语法树; b. 语法规则; c. 依赖图; d. 三地址代码;7.按照教材中的约定,三地址语句 if x relop y then L 表示成四元式为 。a. (relop , x, y , L) ; b. (relop,L,x,y);c. (relop ,x, L ,y) ; d. (L,x,y

3、,relop);8.在编译程序中, 不是常见的中间语言形式。a.波兰式; b. 三元式; c. 四元式; d. 抽象语法树;9.在编译程序中安排中间代码生成的目的是 。a. 便于提高编译效率; b. 便于提高分析的正确性;c. 便于代码优化和目标程序的移植; d.便于提高编译速度;10.按照教材中的约定,下面 不是类型表达式:a. boolean; b. type-error ; c. real;d. DAG ;11.一个 Pascal 函数function f ( a, b:char ) : integer;其作用域类型是 :a. charinteger;b. char char; c. c

4、har pointer(integer) ; d. integer integer;12.因为标识符可用于多种情况,比如常量标识符、变量标识符、过程标识符等等。因此, 在符号表中为了给出各个符号的标志, 常给标识符引入一个属性 kind ,然后在相应产生式的 语义动作中添加给 kind 属性赋值的语句。比如,在在产生式 D id:T 的语义动作中添加赋 值语句 id.kind= 。a. VAR; b. CONSTANT ;c. PROC;d. FUNC;13.下面 情况下,编译器需要创建一张新的符号表。a. 过程调用语句; b. 标号说明语句; c. 数组说明语句; d.记录说明语句;14.函

5、数 function f(a,b:char): integer; 所以 f 函数的类型表达式为: char pointer(integer) ; b. char char pointer;c. char char integer; d. char char integer (pointer)15.如果一个语言的编译器能保证编译通过的程序,在运行时不会出现类型错误,则称该语a. 静态的; b. 强类型的; c. 动态的; d. 良类型的;一答案: 1. b; 2. d; 3. b 4. d 5. c ; 6. c.; 7. a ; 8. a ; 9. c; 10. d11. b12. a;13.

6、 d;14. a; 15. b;、填空题:1.语法分析是依据语言的语法规则进行的,中间代码产生是依据语言的 规则进行的。2.多目运算 x:=yi 的三元式表示为两部分: 和 。3.生成三地址代码时,临时变量的名字对应抽象语法树的 。4.一个类型表达式或者是基本类型,或者由 施加于其它类型表达式组成。5.在程序设计语言中,布尔表达式有两个基本的作用:一个是 ; 另一个是 。6.允许嵌套过程的语言, 其过程说明语句的翻译用两个栈 tblptr 和 offset 分别保存尚未处理 完的过程的 和它们的 offset,这两个栈顶的元素分别是正在处理的过程的的符号表指针和 。7.在一些 pascal 的

7、实现中,如果说明中出现了没有名字的类型表达式,编译器这样处理: 建立一个 来和每个声明的变量标识符相联系。8.赋值语句 a:=b*-c+b*-c 的后缀式为 。9.多目运算 Xi:=y 的三元式表示为两部分:10.编译器遇到常量说明时,要把常量值登录入 并回送序号;在 中 为等号左边的标识符建立新条目,在该条目中填入常量标志、相应类型和常量表序号。11.典型的转移条件语句: if E then S1 else S2 中,作为转移条件的布尔表达式 E ,赋予它两 种“出口 ”:一是 ;二是 。12.类型表达式或者是 ,或者是 作用在其它类型表达式上得到的新的 类型表达式。13.pascal 变量

8、说明:var A:array1.10 of integer与 A 相关的类型表达式为: 。14.若 T 是类型 表达式,则 pointer(T) 是类型表达式, 它表示 类型 。15.通过一遍扫描来产生布尔表达式和控制流语句的代码存在一个问题, 就是当生成某些转 移语句时可能还不知道该语句将要转移到的语句的地址是什么。采用 的办 法来解决这个问题。二1. 语义; 2. (0): ( =, y, i ) ,(1): ( assign, x, (0) ) ;3. 内部结点; 4. 类型构造符; 5. 计 算逻辑值;作控制流语句中的条件表达式; 6. 符号表指针,相对地址; 7. 隐含的类型名; 8

9、. a b c uminus * b c uminus * + assign ; 9. (0):(= ,x,i);(1):( assign,(0), y ); 10. 常量 表;符号表; 11. “真”出口,转向 S1;“假”出口,转向 S2;12. 基本类型;类型构造符; 13. array(1.10, integer) ;14. “指向 T 类型对象的指针 ”;15. “拉链回填 ”三、判断题:1.中间代码是独立于机器的,复杂性介于源语言和机器语言之间,便于进行与机器无关调 换代码优化工作。 ( )2.在程序设计语言中,一般来说,布尔表达式仅仅用于条件、循环等控制流语句中的条件 表达式计算

10、。3.回“填 ”技术用于对过程中的说明语句进行处理时把计算出的有关符号的属性填入符号表。( )4.如果 E是一个常量或变量,则 E的逆波兰式是 E自身。5.对于任何一个编译程序来说,中间代码的产生是不一定必要的。6.由于三元式中的三个域中,仅有两个域与地址有关,所以,三元式不是严格意义上的三 地址代码。7.两个类型表达式要么是同样的基本类型,要么是同样的类型构造符作用于结构等价的类 型,我们就说,这两个类型系统等价。8.对于 Pascal 这样允许嵌套过程的语言,每当遇到过程说明 D proc id ; D1; S 时,便创建一张新的符号表,也就是说,让每个过程说明都有自己一张独立的符号表。9

11、.记录类型的各个域变量分配存储区域的地址的确定是相对于为记录类型变量所分配存储 区域的首地址的,所以记录类型不应该建立自己的符号表。10.类型表达式中不可出现类型变量,即类型变量值不是类型表达式。11.所谓类型系统就是把类型表达式赋给语言各相关结构成分的规则的集合。同一种语言(比如 C+语言)的编译程序,在不同的实现系统里(比如微软的 Visual C+和 Linux 下的开源编译器 TCC ),可能使用不同的类型系统。12.四元式表示的是四地址代码,三元式表示的是三地址代码。13.生成三地址代码时,临时变量的名字对应抽象语法树的内部结点。14.后缀式是抽象语法树的线性表示形式,后缀式是树结点

12、的一个序列,其中每个结点 都 是在所有子结点之后立即出现的。15.后缀表示形式只是用于表达式的,其他的语法结构比如条件语句、循环语句等不能使用 后缀式。三答案:1. ;2. 3. 4. ;5. ;6. 7. ;8. ;9. 10. 11. ;12. 13. ; 14. ;15. 四、名词解释:1.三地址代码;2.回填;3.类型表达式;4.类型系统;5.静态语义检查 四答案:1.三地址代码是由下面一般形式的语句构成的序列: x:= y op z 。其中 x、 y、 z 为名字、常数或编译时产生的临时变量; op 代表运算符号如定点运算符、浮点运算符、逻辑运算符等 等,每个语句的右边只能有一个运算

13、符。2.通过一遍扫描来产生布尔表达式和控制流语句的代码的主要问题在于,当生成某些转移 语句时我们可能还不知道该语句将要转移到的标号是什么。 为了解决这个问题, 可以在生成 形成分支的跳转指令时, 暂时不确定跳转目标, 而建立一个链表, 把转向这个目标的跳转指令的标号键入这个链表, 一旦目标确定之后再把它填入有关的跳转指令中。 这种技术称为回 填。3.一个类型表达式或者是基本类型,或者由类型构造符施于其他类型表达式组成。基本类 型和类型构造符都因具体语言的不同而不同。. 一个基本类型是一个类型表达式。. 类型名是一个类型表达式. 类型构造符作用于类型表达式,其结果仍然是类型表达式. 类型表达式中可出现类型变量,即变量值是类型表达式。4.所谓类型系统就是把类型表达式赋给语言各相关成分的规则的集合。同一种语言的编译 程序,在不同的实现系统里,可能使用不同的类型系统。5.静态语义检查就是编译过程中进行的语义检查。主要工作有:类型检查、控制流检查、致性检查、相关名字检查,还有名字的作用域分析等。五、简答题:1.四元式和三元式有什么不同?2.为什么要使用中

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1