0
点赞
收藏
分享

微信扫一扫

慕课编译原理(习题集)


慕课广西大学.编译原理.期末复习.习题汇总

  • ​​0 目录​​
  • ​​1 引论​​
  • ​​1.1 什么是编译程序​​
  • ​​1.2 为什么要学习编译原理​​
  • ​​1.3 编译过程​​
  • ​​1.4 编译程序的结构​​
  • ​​1.7 课后作业​​
  • ​​2 高级程序设计语言概论​​
  • ​​2.2 程序设计语言的定义​​
  • ​​2.3 高级程序设计语言的一般特性​​
  • ​​3 高级程序设计语言的语法描述​​
  • ​​3.6 课后作业​​
  • ​​5 词法分析2​​
  • ​​5.1 词法规则形式化-正规集与正规式​​
  • ​​5.2 确定有限自动机​​
  • ​​5.3 非确定有限自动机​​
  • ​​5.5 词法分析作业1​​
  • ​​6 词法分析3​​
  • ​​6.1 有限自动机的等价性​​
  • ​​6.4 词法分析作业2​​
  • ​​8 语法分析-自上而下分析2​​
  • ​​8.1 构造递归下降分析器​​
  • ​​8.5 课后作业​​
  • ​​10 语法分析-自下而上分析1​​
  • ​​10.2 短语与直接短语​​
  • ​​10.6 算符优先分析算法​​
  • ​​10.8 课后作业​​
  • ​​11 语法分析-自下而上分析2​​
  • ​​11.1 句柄和规范归约​​
  • ​​14 属性文法和语法制导翻译1​​
  • ​​14.1 属性文法​​
  • ​​15 属性文法和语法制导翻译2​​
  • ​​15.2 L-属性文法​​
  • ​​16 语义分析和中间代码生成1​​
  • ​​16.2 常见的中间语言形式​​
  • ​​18 语义分析和中间代码生成3​​
  • ​​18.3 待优化翻译布尔表达式​​
  • ​​23 优化1​​
  • ​​23.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)交叉编译程序(Cross Compiler),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∣ND N→0∣1∣2∣3∣4∣5∣6∣7∣8∣9
(1)G6的语言L(G6) 是什么?
(2)给出句子0127、34和568的最左推导和最右推导

慕课编译原理(习题集)_编译程序

2(10分)写一个文法,使其语言是奇数集,且每个奇数不以0开头。
慕课编译原理(习题集)_语法分析_02

3(20分)令文法为
E→T∣E+T∣E-T
T→F∣T
F∣T/F
F→(E)∣i
(1)给出i+ii、i(i+i)的最左推导和最右推导
(2)给出i+i+i、i+ii的语法树
慕课编译原理(习题集)_编译程序_03
慕课编译原理(习题集)_语法分析_04

4(10分)证明下面的文法是二义的:
S→iSeS∣iS∣i

慕课编译原理(习题集)_语法分析_05

5(40分)给出下面语言的相应文法:
慕课编译原理(习题集)_编译程序_06
慕课编译原理(习题集)_词法分析_07

6(10分)附加题:生成语言的文法G是什么?它是chomsky那一型的文法?
慕课编译原理(习题集)_语法分析_08
慕课编译原理(习题集)_词法分析_09

5 词法分析2

5.1 词法规则形式化-正规集与正规式

e是什么?
A.字符
B.字
C.正规式

Æ是什么?
A.集合
B.字
C.正规式

a (a ÎS)是什么?
A.字符
B.字
C.正规式

5.2 确定有限自动机

图中DFA M识别的L(M) 是什么?
A.L(M)={以aa或bb开头的字}
B.L(M)={含aa或bb的字}
C.L(M)={以aa或bb结尾的字}

哪个DFA识别{e} ?
A.双圈q0
B.单圈q0

5.3 非确定有限自动机

图中NFA M1识别的L(M1) 是什么?
A.L(M1)={以aa或bb开头的字}
B.L(M1)={含aa或bb的字}
C.L(M1)={以aa或bb结尾的字}

图中NFA M2识别的L(M2) 是什么?
A.L(M2)={abn | n³1}
B.L(M2)={anbn | n³1}
C.L(M2)={ambn | m,n³1}

5.5 词法分析作业1

1(30分)证明3.3.1中,关系交换律、结合律等五个关系
1、U | V=V | U
2、U | (V | W)=(U | V) |W
3、U(VW)=(UV)W
4、U(V | W)=UV | UW
5、U=U =U
参考答案:
慕课编译原理(习题集)_编译程序_10

2(10分)令A、B和C是任意正规式,证明一下关系成立:1、A∣A=A
参考答案:
慕课编译原理(习题集)_语法分析_11

3(10分)令A、B和C是任意正规式,证明一下关系成立:(A*)= A
参考答案:
慕课编译原理(习题集)_语法分析_12

4(15分)令A、B和C是任意正规式,证明一下关系成立: A*=ε∣A A*
参考答案:
慕课编译原理(习题集)_编译程序_13

5(15分)令A、B和C是任意正规式,证明一下关系成立:(AB)A=A(BA)
参考答案:
慕课编译原理(习题集)_词法分析_14

6(5分)给出下面正规式表达式:以01结尾的二进制数串
参考答案:

(0|1)*01

7(5分)给出下面正规式表达式:能被5整除的十进制整数;
参考答案:

(1|2|3|4|5|6|7|8|9)(0|1|2|3|4|5|6|7|8|9)*(0|5)|0|5

8(5分)给出下面正规式表达式:包含奇数个1或奇数个0的二进制数串;
参考答案:

0*1(0|10*1)*|1*0(0|10*1)*

9(5分)给出下面正规式表达式:不包含字串abb的由a和b组成的符号串的全体
参考答案:

b*(a*|(ba)*)*

6 词法分析3

6.1 有限自动机的等价性

两个状态s和t是可区分的,是指:
A.对于任意字a,要么s读出a停止于终态而t读出a停止于非终态,要么t读出a停止于终态而s读出a停止于非终态
B.存在一个字a,要么s读出a停止于终态而t读出a停止于非终态,要么t读出a停止于终态而s读出a停止于非终态

按照上述原则对DFA的状态集合S进行第一次划分,正确的分法是:
A.初态和非初态
B.终态和非终态
C.初态、终态、其他状态

6.4 词法分析作业2

1(15分)构造下列正规式相应的DFA
1(0∣1)*101
正确答案:
慕课编译原理(习题集)_语法分析_15

2(20分)对下面情况给出DFA及正规表达式:
{0,1}上的含有子串010的所有串;
正确答案:
​​​对于最后H步是5,1,6,Y,有小伙伴私信应为5,1,2,6,Y,添加H-F的路径​​​慕课编译原理(习题集)_编译程序_16

3(20分)一个人带着狼、山羊和白菜在一条河的左岸。有一条船,大小正好能装下这个人和其它三件东西中的一件。人和他的随行物都要到河的右岸。人每次只能将一件东西摆渡过河。但若人将狼和羊留在同一岸而无人照顾的话,狼将把羊吃掉。类似地,若羊和白菜留下来无人照看,羊将会吃掉白菜。请问是否有可能摆渡过河去,使得羊和白菜都不被吃掉?如果可能,请用有限自动机写出渡河的方法。
正确答案:
慕课编译原理(习题集)_语法分析_17

4(20分)将图将下图确定化和最少化。
慕课编译原理(习题集)_词法分析_18
正确答案:
慕课编译原理(习题集)_语法分析_19

5(20分)将下图确定化和最少化。
慕课编译原理(习题集)_编译程序_20
正确答案:
慕课编译原理(习题集)_语法分析_21

8 语法分析-自上而下分析2

8.1 构造递归下降分析器

E’实现了吗 ?
A.实现了
B.没实现

E’不考虑Follow集合有问题吗 ?
A.有问题
B.没有问题

8.5 课后作业

1(50分)
1、考虑下面文法G1:S→a∣ᴧ∣(T)T→T,S∣S
(1)消去G1的左递归
(2)给出所有非终结符的FIRST()和FOLLOW()集合。
(3)对每个非终结符,写出不带回溯的递归子程序。
(4)经改写后的文法是否是LL(1)的?给出它的预测分析表。
参考答案:
慕课编译原理(习题集)_词法分析_22
慕课编译原理(习题集)_词法分析_23

2(30分)对下面的文法:
Expr→—Expr
Expr→(Expr)∣Var ExprTail
ExprTail→—Expr∣Ɛ
Var→id VarTail
VarTail→(Expr)∣Ɛ
(1)构造LL(1)分析表(要求给出所有非终结符的FIRST()和FOLLOW()集合)
(2)给出句子id——id(id)的分析过程
参考答案:
慕课编译原理(习题集)_编译程序_24
慕课编译原理(习题集)_编译程序_25

3(10分)下面文法,是否是LL(1)的,说明理由。
S→ABBA
A→a∣Ɛ
B→b∣Ɛ
参考答案:
慕课编译原理(习题集)_语法分析_26

4(10分)下面文法,是否是LL(1)的,说明理由。
S→Abc
A→a∣Ɛ
B→b∣Ɛ
参考答案:
慕课编译原理(习题集)_语法分析_27

10 语法分析-自下而上分析1

10.2 短语与直接短语

你认为什么是可归约串?
A.连续出现的单词序列
B.短语

10.6 算符优先分析算法

对于文法的句子来说,它的算符优先分析的结果就是语法树。
A.正确
B.错误

10.8 课后作业

1( 20分 )令文法G1为

E→E+T∣T
T→T*F∣F
F→(F)∣i

证明E+T*F是它的一个句型,指出这个句型所有的短语,直接短语和句柄。(给出语法树)
参考答案:
慕课编译原理(习题集)_编译程序_28

2( 40分 )考虑下面的表格结构文法G2:
S→a|Λ|(T)
T→T,S|S
(1)给出(a,(a,a))的最左和最右推导
(2)指出(((a,a),Λ,(a)),a)的规范规约及每一步的句柄。(3)根据这个规范规约,给出“移进——规约”的过程,并给出它的语法树自下而上的构造过程。
正确答案:
慕课编译原理(习题集)_编译程序_29
慕课编译原理(习题集)_语法分析_30

3( 40分 )考虑下面的表格结构文法G2:
S→a|Λ|(T)
T→T,S|S
(1)计算文法的FIRSTVT和LASTVT集合
(2)G2是算符优先文法吗?
(3)给出输入串(a,(a,a))的算符优先分析过程
(4)给出分析树和语法树,他们有什么区别?
正确答案:
慕课编译原理(习题集)_词法分析_31
慕课编译原理(习题集)_词法分析_32

11 语法分析-自下而上分析2

11.1 句柄和规范归约

对照句子的语法树,判断改句子的句柄是:
慕课编译原理(习题集)_词法分析_33
A.i_{1}
B.i_{2}
C.i_{3}

14 属性文法和语法制导翻译1

14.1 属性文法

考虑非终结符A,B和C,其中,A有一个继承属性a和一个综合属性b,B有综合属性c,C有继承属性d。产生式A→BC不可能有规则是:
A.C.d:=B.c+1
B.A.b:=B.c+C.d
C.B.c := A.a

15 属性文法和语法制导翻译2

15.2 L-属性文法

某属性文法包含下面的定义,该文法是L-属性文法吗?
产 生 式 语 义 规 则
A→LM L.i := g(A.i)
M.i :=m(L.s)
A→QR R.i := r(A.i)
Q.i :=q(R.s)
A.s :=f(Q.s)
A.是
B.否

16 语义分析和中间代码生成1

16.2 常见的中间语言形式

中缀表达式a+b+c的翻译成后缀式是:
A.ab+c+
B.a+bc+
C.abc++
D.abc+

18 语义分析和中间代码生成3

18.3 待优化翻译布尔表达式

照本节所讲的一遍扫描的翻译模式工作,当一个布尔表达式规约分析翻译完成时,该布尔表达式生成的所有四元式都是完整的,没有需要回填的四元式。
正确答案:错

23 优化1

23.3 局部优化-基本块优化

下面图中哪个是有向无环图(DAG)?
A.
慕课编译原理(习题集)_词法分析_34
B.
慕课编译原理(习题集)_编译程序_35


举报

相关推荐

0 条评论