编译原理模拟试卷1ABC

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

编译原理A

一、不定项选择题(每题5分,共8题,计40分)

1. 下面说法错误的有(CD)。

A、编译前端完成对源程序的分析

B、编译后端对源程序进行综合

C、编译器等同于解释器

D、编译器可以发现源程序的全部语法错误和全部语义错误

2. 下面(ACD )是编译程序的组成部分。

A、词法分析程序

B、设备管理程序

C、语法分析程序

D、代码生成程序

3. 不属于下面正规式定义的语言集合的元素有( C )。这里,id是字母开头,后跟字母或数字的,长度不超过10的字符串形式。

( int | float | double ) id (, id )* ;

A、int a;

B、int a,b,d;

C、float xyz abc;

D、double m;

4. C语言编译中的存储分配策略是( B )。

A、静态存储分配策略

B、动态存储分配策略

C、最佳分配策略

D、时钟分配策略

5. Java编译器生成的是( BCD )。

A、Javac

B、.class文件

C、Bytecode

D、字节码

6. 文法G(E): E → i | E+E | E*E | (E) 不可以产生的句子是( CD )。

A、(i)

B、i*(i+i)+(i*i)

C、i++

D、(i+())

7. 常用的中间代码表示形式有( ABC )。

A、后缀表示

B、图形表示

C、三地址码

D、中缀表示

8. 在编译过程中,符号表的主要作用有( CD )。

A、帮助错误处理

B、辅助语法错误的检查

C、辅助语义的正确性检查

D、辅助代码生成

E、辅助对目标程序的优化

二、判断题(每题2分,共10题,计20分,写对或错)

1. 编译的整个过程都要包括符号表管理和出错管理两个部分。(对)

2. 文法E → E + id | id是SLR(1)文法也是LR(1)文法。(对)

3. 对任何一个编译程序来说,产生中间代码是不可缺少的一部分。( 错 )

4. 如果一种程序语言允许数据对象能够自由地分配和释放,就需要采用堆式存储分配方法。(对)

5. 正规文法、正规式、确定有限自动机和非确定有限自动机在接收语言的能力上是互相等价的。(对)

6. 正规式能用于描述配对或嵌套的结构。(错)

7. 算符作用于不相容的运算对象,这属于语法错误。(错)

8. LR分析中四个文法的关系是LR(1)⊃ LALR(1)⊃ SLR(0)⊃ LR(0)。(对)

9. 后缀表示的优点是便于计算机处理表达式。(对)

10. 基本块是连续的语句序列,控制流从它的开始进入,从它的末尾离开。(对)

三、填空题(每题10分,共4题,计40分)

1. 为下面文法写一个语法制导的定义,它完成一个句子的while-do最大嵌套层次的计

算并输出这个计算结果。在括号处填上每句文法对应的方案。

S → E ({ print(S.loop);})

E → while E do E ({ E.loop := max(E1.loop, E2.loop) +1;} )

| id := E ({ E.loop := E1.loop;} )

| E + E ({ E.loop := max(E1.loop, E2.loop);} )

| id ({ E.loop := 0;} )

| (E) 此句文法不写

2. 正规式的三个基本运算符是( | ),( . )和(*),优先级最高的运算符是( *),优先级最低的运算符是( |)。

3. 对下面的文法G(S),若对句子 *i1=i2进行规范归约,其符号栈的操作步骤是(移入*,移入i1,i1归约为V,V归约为E,*E归约为V,移入=,移入i2,i2归约为V,V归约为E,V=E 归约为S。)。

S →V=E | E

V → *E | i

E → V

4. 对于下面C语言文件,某编译器编译时对函数f1有警告错误,提示内容是warning: declaration of ‘x’ shadows a parameter。对函数f2没有类似的警告错误的原因是(对于函数f1,局部变量x声明的作用域是整个函数体,导致在函数体中不可能访问形式参数x,由于这是一个合法的C语言函数,因此编译器给出警告错误;对于函数f2,由于局部变量x 的作用域只是函数体的一部分,不会出现上述问题,因而编译器不报错。)。

f1(int x)

{

long x;

x = 1;

}

f2(int x)

{

{

long x;

x = 1;

}

}

编译原理B

一、不定项选择题(每题5分,共8题,计40分)

1. 属于正规式(a|b)(0|1|2)*(a|b)定义的语言集合的元素有(ABD)。

A、a0a

B、aa

C、abda

D、a012b

2. 用l代表字母,d代表数字,定义标识符单词的正规式有( C )。

A、ld*

B、ll

C、l(l|d)*

D、ll*|d*

3. 编译器生成的目标代码的主要形式有(ABC)。

A、可立即执行的机器语言代码

B、汇编语言程序

C、待装配的机器语言代码模块

D、抽象语法树程序

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

A、前缀

B、活前缀

C、项目

D、句柄

5. 已知文法G(S)如下,该文法是(CD )。

S → LaR|R

L → bR|c

R → L

A、LR(0)文法

B、SLR(1)文法

C、LR(1)文法

D、LALR(1)文法

6. 编译过程中,以下属于语法分析器的任务的有(BCD)。

A、分析单词是怎样构成的

B、分析单词串是如何构成语句和说明的

相关文档
最新文档