预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共20页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

慕课编译原理(习题集) 慕课⼴西⼤学.编译原理.期末复习.习题汇总 0⽬录 1引论 1.1什么是编译程序 刚才这种翻译模式属于: A.编译 B.解释C.D. 1.2为什么要学习编译原理 1.3编译过程 可以直接运⾏的⽬标代码是: A.汇编指令代码 B.可重新定位指令代码 C.绝对指令代码 1.4编译程序的结构 编译五个阶段的⼯作和编译前后端建⽴对应关系正确的是: A.前端:词法分析,语法分析;后端:中间代码产⽣,优化,⽬标代码⽣成。 B.前端:词法分析,语法分析,中间代码产⽣;后端:优化,⽬标代码⽣成。 C.前端:词法分析,语法分析,中间代码产⽣,优化;后端:词法分析,⽬标代码⽣成。 D.前端:词法分析,语法分析,中间代码产⽣,优化;后端:优化,⽬标代码⽣成。 1.7课后作业 1(15分)(1)什么是编译程序?编译程序有哪些类型?编译程序的结构是怎样的? 答:1编译程序是把某⼀种语⾔程序(称为源语⾔程序)等价地转换成另⼀种语⾔程序(称为⽬标语⾔程序)的程序 2编译程序有:1)诊断编译程序(Diagnostic优化编译程序Compiler),2)(Optimizing交叉编译程序Compiler),3)(CrossCompiler),4)可变⽬标编译涅序(Retargetable Compiler) 3编译程序的结构是1)编译程序总框,2)遍,3)编译前端与后端 2(10分)(2)编译程序和解释程序的区别是什么? 答:编译程序和解释程序的区别是: 解释程序(解释器),它或者直接解释执⾏源程序,或者将源程序翻译成某种中间表⽰形式后再加以执⾏; 编译程序(编译器),则是将源程序翻译成⽬标语⾔程序,然后在计算机上运⾏⽬标程序。 两种语⾔处理程序的根本区别是:在编译⽅式下,机器上运⾏的是与源程序等价的⽬标程序,源程序和编译程序都不再参与⽬标程序的执⾏过程,⽽在解释⽅式下, 解释程序和源程序(或某种等价表⽰)要参与到程序的运⾏过程中,运⾏程序的控制权在解释程序。 解释器翻译源程序时不⽣成独⽴的⽬标程序,⽽编译器则将源程序翻译成独⽴的⽬标程序。 3(15分)(3)学习编译原理的意义是什么? 答:学习编译原理的意义是 1学习编译程序构造原理,技术 1)提⾼对计算机系统总体认识 2)感悟计算思维 3)更好地理解"计算” 2更好地理解⾼级语⾔ 3运⽤编译原理和⽅法构造实⽤⼯具 1)⽤"计算"的眼光看世界 2)⽤计算解决实际问题 4(20分)(4)编译中,遍、编译前端与后端的概念?遍和编译阶段有什么区别? 答:1编译中,遍、编译前端与后端的概念是: 遍:所谓"遍",就是对源程序或源程序的中间表⽰从头到尾扫描⼀次 编译前端:与源语⾔有关的部分,如词法分析,语法分析,语义分析与中间代码产⽣,与机器⽆关的优化 编译后端:与⽬标机有关的部分,与⽬标机有关的优化,⽬标代码产⽣2遍和编译阶段的区别是:阶段与遍是不同的概念 1)⼀遍可以由若⼲段组成 2)⼀个阶段也可以分若⼲遍来完成 5(20分)(5)编译程序的⽣成有哪些⽅法?请简单说明之。 答:编译程序的⽣成的⽅法有: 1)以机器语⾔和汇编语⾔为⼯具:可以针对具体的机器,充分发挥计算机的系统功能;⽣成的程序效率⾼ 2)⾼级语⾔书写:程序易读,易理解,容易维护,⽣产的效率⾼;利⽤已有的某种语⾔的编译程序实现另⼀语⾔的编译程序 3)⾃编译⽅式 4)编译程序⾃动产⽣:编译程序⼀编译程序,编译程序产⽣器,编译程序书写系统 6(20分)(6)编译原理中⽤到的计算思维⽅法有哪些? 答:编译原理中⽤到的计算思维⽅法有: 1)抽象 2)⾃动化 3)问题分解 4)递归 5)权衡(折衷,Tradeoff) 2⾼级程序设计语⾔概论 2.2程序设计语⾔的定义 下⾯哪种说法正确? A.标识符是语义概念,名字是语法概念 B.标识符是语法概念,名字是语义概念 下⾯哪些属于程序语⾔的语义定义? A.表达式中圆括号必须匹配 B.类的声明必须以class开头 C.关于函数调⽤时参数传递⽅法的描述 D.函数体必须⽤return语句结尾 2.3⾼级程序设计语⾔的⼀般特性 P2的代码能够调⽤P1吗? A.可以 B.不可以 下⾯哪种说法正确? A.标识符是语义概念,名字是语法概念 B.标识符是语法概念,名字是语义概念 下⾯说法的是错误的是: A.名字的绑定(binding)是指将标识符与所代表的程序数据或代码进⾏关联 B.名字的绑定总是发⽣在编译过程中 C.名字的绑定可以发⽣在运⾏过程中 在C语⾔中,下⾯选项只具有右值、不具有左值的是: A.变量 B.下标变量 C.a+5 D.指针变量P 3⾼级程序设计语⾔的语法描述 3.6课后作业 1(20分)令⽂法G6为:N→D∣