2020秋《编译原理》试题及参考答案

  • 格式:pdf
  • 大小:224.29 KB
  • 文档页数:6

《编译原理》参考资料

一、 单选题

1.现代多数实用编译程序所产生的目标代码都是一种可重定位的指令代码,在运

行前必须借助于一个(C)把各个目标模块,包括系统提供的库模块连接在一起,

确定程序变量或常数在主存中的位置,装入内存中制定的起始地址,使之成为一

个可运行的绝对指令代码的程序。

A.重定位程序 B.解释程序 C.连接装配程序 D.诊断程

2.一个句型中的( A)称为该句型的句柄。

A.最左直接短语 B.最右直接短语 C.终结符 D.非终结

3.将编译程序分成若干个“遍”是为了(B)。

A.提高程序的执行效率 B.使程序的结构更加清晰

C.利用有限的机器内存并提高机器的执行效率 D.利用有限的机器内存但降低

了机器的执行效率

4.语法分析器接收以(C)为单位的输入,并产生有关信息供以后各阶段使用。

A.表达式 B.产生式 C.单词 D.语句

5.词法分析器用于识别(C )

A.句子 B.产生式 C.单词 D.句型

6.语言的词法规则一般用Chomsky的(D)型文法来描述

A.0 B.1 C.2 D.3

7.由文法的开始符经0步或多步推导产生的文法符号序列是(C)。

A.短语 B.句柄 C.句型 D.句子

8.LR(k)文法(A )

A.都是无二义性的 B.都是二义性的 C.一部分是二义性的 D.无法判

9.Chomsky把文法分成四种类型,其中,(D)也称正规文法

A.0型 B.1型 C.2型 D.3型

10.( C)不是编译程序的组成部分。

A.词法分析程序 B.代码生成程序 C.设备管理程序 D.语法分

析程序

11.编译程序绝大多数时间花在(D)上。

A.出错处理 B.词法分析 C.目标代码生成 D.管理表

12.设G为算符优先文法,G的任意终结符对a、b有以下关系成立(C)。

A.若f(a)>g(b),则a>b B.若f(a)

C.a~b都不一定成立 D.a~b一定成立

13.使用(A)可以定义一个程序的意义。

A.语义规则 B.词法规则 C.产生规则 D.词法规

14.在运行空间的划分中有一个单独的区域叫堆,用来存放(C)。

A.目标代码 B.静态数据 C.动态数据 D.过程参

15.在语法分析处理中,FIRST集合.FOLLOW集合均是( B)

A.非终结符集 B.终结符集 C.字母表 D.状态集

16.一个数据类型通常包括三种要素,下面(C)不是

A.用于区别这种类型的数据对象的属性 B.这种类型的数据对象可以具有的

C.对这种类型的数据对象的内存分配 D.可以作用于这种类型的数据对象的

操作

17.在目标代码生成阶段,符号表用于( D)。

A.目标代码生成 B.语义检查 C.语法检查 D.地址分

18.在一棵语法树中的结点的继承属性和综合属性之间的相互依赖关系可以由

(C)来描述。

A.抽象语法树 B.语法规则 C.依赖图 D.三地址代

19.中间代码生成时所遵循的是(C)。

A.语法规则 B.词法规则 C.语义规则 D.等价变换规

20.语法分析器接收以( C )为单位的输入,并产生有关信息供以后各阶段

使用。

A.表达式 B.产生式 C.单词 D.语句;

21.LR语法分析栈中存放的状态是识别( B )的DFA状态。

A.前缀 B.可归前缀 C.项目 D.句

22.( A)是一种典型的解释型语言。 A.BASIC B.C C.FORTRAN D.PASCAL

23.在编译方法中,动态存储分配的含义是(A )。

A.在运行阶段对源程序中的数组.变量.参数等进行分配

B.在编译阶段对源程序中的数组.变量.参数进行分配

C.在编译阶段对源程序中的数组.变量.参数等进行分配,在运行时这些数组.变量.参数的地址

可根据需要改变 D.以上都不正确

24.在自底向上的语法分析方法中,分析的关键是(D )

A.寻找句柄 B.寻找句型 C.消除递归 D.选择候选

式 都不是

25.对应于产生式A→XY继承属性Y.y的属性计算,可能正确的语义规则是( C )。

A.A.a:=f(X.x,Y.y) B.Y.y:=f(A.a,Y.y) C.Y.y:=f(X.x)

D.A.a:=f(Y.y);

26.布尔表达式计算时可以采用某种优化措施,比如A and B用if-then-else

可解释为( B )。

A.if A then true else B; B.if A then B else false;

C.if A then false else true; D.if A then true else false;

27.为了便于优化处理,三地址代码可以表示成( D )。

A.三元式 B. 四元式 C.后缀式 D.间接

三元式

28.使用三元式是为了( B )。

A.便于代码优化处理 B.避免把临时变量填入符号表

C.节省存储代码的空间 D.提高访问代码的速度

29.表达式-a+b*(-c+d)的逆波兰式是( D )。

A.ab+-cd+-* B.a-b+c-d+* C.a-b+c-d+*

D.a-bc-d+*+

30.教材介绍了三种符号表的构造和处理方法,其中( B )中常把符号表组织成

二叉树形式。

A.线性组织 B.排序组织和二分法 C.杂凑(散列)组织 D.非线

性组织

31.设有文法G[S]:S→S1|S0|Sa|Sc|a|b|c,下列符号串中是该文法的句子有( D) A.ab0 B.a0c01 C.a0b0a D.bc10

32.变量应当(C)。

A.持有左值 B.持有右值

C.既持有左值又持有右值 D.既不持有左值也不持有右值

33.两个不同过程的活动,其生存期是(B )。

A.重叠的,不嵌套的 B.不重叠的,嵌套的

C.重叠的,嵌套的 D.不重叠的,不嵌套的

34.在运行空间的划分中有一个单独的区域叫堆,用来存放( C )。

A.目标代码 B.静态数据 C.动态数据 D.过程参数

35.Fortran语言的编译程序采用( A)分配策略。

A.静态 B.最佳 C.堆式动态 D.栈式动态

36.以绝对机器代码为输出,所有地址均已定位,这种代码的优点是( A )。

A.可立即执行 B.可进一步优化

C.目标代码简短 D.目标代码执行效率高

37.以( B )作为输出,允许自程序单独编译。

A.绝对机器代码 B.可再定位机器语言

C.汇编语言程序 D.中间语言

38.评价一个代码生成器最重要的指标是( A )。

A.代码的正确性 B.代码的高效性

C.代码的简洁性 D.代码的维护性

39.( C )不是编译程序的组成部分。

A.词法分析程序 B.代码生成程序

C.设备管理程序 D.语法分析程序

40.现代多数实用编译程序所产生的目标代码都是一种可重定位的指令代码,在

运行前必须借助于一个( C )把各个目标模块,包括系统提供的库模块连接在

一起,确定程序变量或常数在主存中的位置,装入内存中制定的起始地址,使之

成为一个可运行的绝对指令代码的程序。

A.重定位程序 B.解释程序 C.连接装配程序 D.

诊断程序

41.如果一个编译程序能产生不同于其宿主机的机器代码,则称它为:( C )

A.诊断编译程序 B.优化编译程序

C.交叉编译程序 D.可变目标编译程序

42.许多广为使用的语言,如Fortran、C、Pascal等,属于( A )

A.强制式语言 B.应用式语言

C.基于规则的语言 D.面向对象的语言

43.设G是一个文法,S是开始符号。若SÞ*a,aÎ(VTÈVN)*,则称a是一个( B )

A.句子 B.句型 C.推导 D.

语言

44.一个数据类型通常包括三种要素,下面( C )不是:

A.用于区别这种类型的数据对象的属性 B.这种类型的数据对象可以具有的

C.对这种类型的数据对象的内存分配 D.可以作用于这种类型的数据对象

的操作

45.程序语言的单词符号一般可以分为5种,下面( D )不需要超前搜索

A.关键字 B.标识符 C.常数 D.算符

和界符

46.从左线性文法构造有限自动机时,通常自动机状态个数比文法非终结符号数

多( D )

A.4 B.2 C.0 D.1

47.正规表达式(ε|a|b)2表示的集合是( D )

A.{ε,ab,ba,aa,bb} B.{ab,ba,aa,bb}

C.{a,b,ab,aa,ba,bb} D.{ε,a,b,aa,bb,ab,ba}

48.高级语言编译程序常用的语法分析方法中,递归下降分析法属于( )分析

A.自左至右 B.自顶向下 C.自底向上 D.自右向左

49.上下文无关文法可以用( B )来描述

A.正则表达式 B.正规文法 C.扩展的BNF D.翻译

模式C

50.自上而下分析面临的四个问题中,不包括( D )

A.需消除左递归 B.存在回朔 C.虚假匹配 D.寻找可归约串

二、判断题

1.正则文法一定不是二义的。( 错误)

2.非终结符只有综合属性,由词法分析器提供。(正确 )

3.对于每一个左线性文法G1,不一定存在一个右线性文法G2,使得L(G1)=L(G2)。

(错误 )

4.对任何一个NFAM,都存在一个DFAM',使得L(M')=L(M)。( 正确)

5.LL(k)文法都不是二义性的。(正确)

6.如果E是一个常量或变量,则E的逆波兰式是E自身。(正确)

7.一个二义性文法可以是SLR文法或LALR文法。( 错误)

8.对任何正则表达式r,都存在一个NFAM,满足L(M)=L(r)。(正确 )

9.在程序设计语言中,一般来说,布尔表达式仅仅用于条件、循环等控制流语句中

的条件表达式计算。( 错误)

10.窥孔优化方法是通过考察一小段目标指令,并把这些指令替换为更短和更快

的一段指令,从而提高目标代码的质量。(正确 )

11.编译程序生成的目标程序都是可执行的程序。(错误 )