慕课编译原理(习题集)

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

  • 0 目录
  • 1 引论
    • 1.1 什么是编译程序
    • 1.2 为什么要学习编译原理
    • 1.3 编译过程
    • 1.4 编译程序的结构
    • 1.5 编译程序的生成
    • 1.6 小结
    • 1.7 课后作业
  • 2 高级程序设计语言概论
    • 2.1 常用的高级程序设计语言
    • 2.2 程序设计语言的定义
    • 2.3 高级程序设计语言的一般特性
    • 2.4 小结
  • 3 高级程序设计语言的语法描述
    • 3.1 上下文无关文法
    • 3.2 文法与语言
    • 3.3 语法树与二义性
    • 3.4 形式语言鸟瞰
    • 3.5 小结
    • 3.6 课后作业
  • 4 词法分析1
    • 4.1 词法分析概述
    • 4.1 词法分析器的设计
    • 4.3 小结
  • 5 词法分析2
    • 5.1 词法规则形式化-正规集与正规式
    • 5.2 确定有限自动机
    • 5.3 非确定有限自动机
    • 5.4 小结
    • 5.5 词法分析作业1
  • 6 词法分析3
    • 6.1 有限自动机的等价性
    • 6.2 正规式与有限自动机的等价性
    • 6.3 词法分析程序自动生成
    • 6.4 词法分析作业2
  • 7 语法分析-自上而下分析1
    • 7.1 自上而下分析的基本问题
    • 7.2 LL(1)文法-消除文法的左递归
    • 7.3 LL(1)文法-消除回溯
    • 7.4 FIRST和FOLLOW集合的构造
    • 7.5 小结
  • 8 语法分析-自上而下分析2
    • 8.1 构造递归下降分析器
    • 8.2 扩充的巴科斯范式和语法图
    • 8.3 JavaCC简介
    • 8.4 小结
    • 8.5 课后作业
  • 9 语法分析-自上而下分析3
    • 9.1 预测分析程序
    • 9.2 预测分析表的构造
    • 9.3 小结
  • 10 语法分析-自下而上分析1
    • 10.1 自下而上分析
    • 10.2 短语与直接短语
    • 10.3 分析过程描述
    • 10.4 算符优先文法
    • 10.5 构造优先关系表
    • 10.6 算符优先分析算法
    • 10.7 小结
    • 10.8 课后作业
  • 11 语法分析-自下而上分析2
    • 11.1 句柄和规范归约
    • 11.2 LR分析法
    • 11.3 小结
  • 13 语法分析-自下而上分析4
    • 13.1 SLR(1)分析法
    • 13.2 LR(1)分析法
    • 13.3 分析器产生工具
    • 13.4 小结
  • 14 属性文法和语法制导翻译1
    • 14.1 属性文法
    • 14.2 属性计算
  • 15 属性文法和语法制导翻译2
    • 15.1 S-属性文法
    • 15.2 L-属性文法
    • 15.3 翻译模式
    • 15.4 递归下降翻译器的设计
    • 15.5 小结
  • 16 语义分析和中间代码生成1
    • 16.1 中间语言
    • 16.2 常见的中间语言形式
    • 16.3 小结
  • 17 语义分析和中间代码生成2
    • 17.1 赋值语句的翻译
    • 17.2 数组元素引用的翻译
    • 17.3 类型转换
    • 17.4 小结
  • 18 语义分析和中间代码生成3
    • 18.1 布尔表达式及其计算
    • 18.2 按数值表示法翻译布尔表达式
    • 18.3 待优化翻译布尔表达式
    • 18.4 小结
  • 19 语义分析和中间代码生成4
    • 19.1 常用的控制语句
    • 19.2 控制语句的属性文法
    • 19.3 控制语句的属性计算
    • 19.4 一遍扫描翻译控制语句
    • 19.5 一遍扫描翻译控制语句示例
    • 19.6 小结
  • 23 优化1
    • 23.1 优化概述
    • 23.2 局部优化-基本块划分
    • 23.3 局部优化-基本块优化

0 目录

1 引论

1.1 什么是编译程序

刚才这种翻译模式属于:
A.编译B.解释C. D.

==正确答案:A ==

1.2 为什么要学习编译原理

1.3 编译过程

可以直接运行的目标代码是:
A.汇编指令代码B.可重新定位指令代码C.绝对指令代码D.

正确答案:C

1.4 编译程序的结构

编译五个阶段的工作和编译前后端建立对应关系正确的是:
A.前端:词法分析,语法分析;后端:中间代码产生,优化,目标代码生成。
B.前端:词法分析,语法分析,中间代码产生;后端:优化,目标代码生成。
C.前端:词法分析,语法分析,中间代码产生,优化;后端:词法分析,目标代码生成。
D.前端:词法分析,语法分析,中间代码产生,优化;后端:优化,目标代码生成。

正确答案:D

1.5 编译程序的生成

1.6 小结

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.1 常用的高级程序设计语言

2.2 程序设计语言的定义

**下面哪种说法正确?
A.标识符是语义概念,名字是语法概念
B.标识符是语法概念,名字是语义概念C. D. **
正确答案:B

下面哪些属于程序语言的语义定义?
A.表达式中圆括号必须匹配
B.类的声明必须以class开头
C.关于函数调用时参数传递方法的描述
D.函数体必须用return语句结尾

正确答案:C

2.3 高级程序设计语言的一般特性

P2的代码能够调用P1吗?
A.可以B.不可以C. D.

正确答案:A

下面哪种说法正确?
A.标识符是语义概念,名字是语法概念
B.标识符是语法概念,名字是语义概念C. D.

正确答案:B

下面说法的是错误的是:
A.名字的绑定(binding)是指将标识符与所代表的程序数据或代码进行关联
B.名字的绑定总是发生在编译过程中
C.名字的绑定可以发生在运行过程中D.

正确答案:B

在C语言中,下面选项只具有右值、不具有左值的是:
A.变量B.下标变量C.a + 5D.指针变量P

正确答案:C

2.4 小结

3 高级程序设计语言的语法描述

3.1 上下文无关文法

3.2 文法与语言

3.3 语法树与二义性

3.4 形式语言鸟瞰

3.5 小结

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的最左推导和最右推导

慕课编译原理(习题集)_第1张图片

2(10分)写一个文法,使其语言是奇数集,且每个奇数不以0开头。
在这里插入图片描述

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的语法树
慕课编译原理(习题集)_第2张图片
慕课编译原理(习题集)_第3张图片

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

慕课编译原理(习题集)_第4张图片

5(40分)给出下面语言的相应文法:
在这里插入图片描述
慕课编译原理(习题集)_第5张图片

6(10分)附加题:生成语言的文法G是什么?它是chomsky那一型的文法?
在这里插入图片描述
慕课编译原理(习题集)_第6张图片

4 词法分析1

4.1 词法分析概述

4.1 词法分析器的设计

4.3 小结

5 词法分析2

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

e是什么?
A.字符B.字C.正规式D.
正确答案:B、C

Æ是什么?
A.集合B.字C.正规式D.
正确答案:A、C

a (a ÎS)是什么?
A.字符B.字C.正规式D.
正确答案:A、B、C

5.2 确定有限自动机

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

哪个DFA识别{e} ?
A.双圈q0
B.单圈q0
C. D.
正确答案:A

5.3 非确定有限自动机

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

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

5.4 小结

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
参考答案:
慕课编译原理(习题集)_第7张图片

2(10分)令A、B和C是任意正规式,证明一下关系成立:1、A∣A=A
参考答案:
在这里插入图片描述

3(10分)令A、B和C是任意正规式,证明一下关系成立:(A*)= A
参考答案:
在这里插入图片描述

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

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

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停止于非终态
C. D.
正确答案:B

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

6.2 正规式与有限自动机的等价性

6.3 词法分析程序自动生成

6.4 词法分析作业2

1(15分)构造下列正规式相应的DFA
1(0∣1)*101
正确答案:
慕课编译原理(习题集)_第10张图片

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

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

4(20分)将图将下图确定化和最少化。
慕课编译原理(习题集)_第13张图片
正确答案:
慕课编译原理(习题集)_第14张图片

5(20分)将下图确定化和最少化。
慕课编译原理(习题集)_第15张图片
正确答案:
慕课编译原理(习题集)_第16张图片

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

7.1 自上而下分析的基本问题

7.2 LL(1)文法-消除文法的左递归

7.3 LL(1)文法-消除回溯

7.4 FIRST和FOLLOW集合的构造

7.5 小结

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

8.1 构造递归下降分析器

E’实现了吗 ?
A.实现了B.没实现C. D.
正确答案:A

E’不考虑Follow集合有问题吗 ?
A.有问题B.没有问题C. D.
正确答案:B

8.2 扩充的巴科斯范式和语法图

8.3 JavaCC简介

8.4 小结

8.5 课后作业

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

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

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

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

9 语法分析-自上而下分析3

9.1 预测分析程序

9.2 预测分析表的构造

9.3 小结

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

10.1 自下而上分析

10.2 短语与直接短语

你认为什么是可归约串?
A.连续出现的单词序列B.短语C. D.
正确答案:B

10.3 分析过程描述

10.4 算符优先文法

10.5 构造优先关系表

10.6 算符优先分析算法

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

10.7 小结

10.8 课后作业

1( 20分 )令文法G1为

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

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

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

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

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

11.1 句柄和规范归约

对照句子的语法树,判断改句子的句柄是:
慕课编译原理(习题集)_第28张图片
A.i_{1}B.i_{2}C.i_{3}D.
正确答案:A

11.2 LR分析法

11.3 小结

13 语法分析-自下而上分析4

13.1 SLR(1)分析法

13.2 LR(1)分析法

13.3 分析器产生工具

13.4 小结

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.aD.
正确答案:C

14.2 属性计算

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

15.1 S-属性文法

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.否C. D.
正确答案:B

15.3 翻译模式

15.4 递归下降翻译器的设计

15.5 小结

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

16.1 中间语言

16.2 常见的中间语言形式

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

16.3 小结

17 语义分析和中间代码生成2

17.1 赋值语句的翻译

17.2 数组元素引用的翻译

17.3 类型转换

17.4 小结

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

18.1 布尔表达式及其计算

18.2 按数值表示法翻译布尔表达式

18.3 待优化翻译布尔表达式

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

18.4 小结

19 语义分析和中间代码生成4

19.1 常用的控制语句

19.2 控制语句的属性文法

19.3 控制语句的属性计算

19.4 一遍扫描翻译控制语句

19.5 一遍扫描翻译控制语句示例

19.6 小结

23 优化1

23.1 优化概述

23.2 局部优化-基本块划分

23.3 局部优化-基本块优化

下面图中哪个是有向无环图(DAG)?
A.
慕课编译原理(习题集)_第29张图片
B.
慕课编译原理(习题集)_第30张图片
C.
D.
B

你可能感兴趣的:(慕课资源)