admin 管理员组

文章数量: 1086019


2025年1月1日发(作者:上海数据库培训哪里好)

精品文档

编译原理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();} )

E → while E do E ({ := max(, ) +1;} )

| id := E ({ := ;} )

| E + E ({ := max(, );} )

| id ({ := 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)

{

}

f2(int x)

{

}

{

}

long x;

x = 1;

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代表数字,定义标识符单词的正规式有(

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、分析单词串是如何构成语句和说明的

.

C )。

精品文档

C、分析语句和说明是如何构成程序的

D、分析程序的结构

7. 影响编译器存储分配策略的语言特征有( ABCD )。

A、过程能否递归

B、过程能否访问非局部变量

C、存储块是否必须显式地释放

D、存储块是否在程序控制下动态地分配

8. 一般程序设计语言都涉及(ABC )几个方面。

A、语法

B、语义

C、语用

D、程序基本符号的确定

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

1. 自上向下语法分析遇到的主要困难是左递归带来的无限循环和回溯。(对)

2. 下面所示的文法是LALR(1)文法。(对)

S → V = E | E

V → E | id

E → V

3. 通常程序设计语言的中的单词符号都能用正规式描述。( 对 )

4. 因为名字都是用标识符表示的,故名字与标识符没有区别。(错 )

5. 现今的程序语言一般用上下文无关文法来描述。(对 )

6. 算术表达式的括号不匹配属于语法错误。( 对 )

7. LALR分析中,同心集的和并不会引起新的移进-归约冲突。(对 )

8. (8-4)+2的后缀表示是8 4 – 2 + 。(对 )

9. 代码优化环节中,代码变换可以改变程序的含义。(错 )

10. 句柄的右边仅含终结符。如果文法二义,那么句柄可能不唯一。(对 )

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

.

精品文档

1. 为下面的算术表达式文法写一个语法制导的翻译方案,它将每个子表达式E的符号

(即值大于零还是小于零)记录在属性中(属性值分别用POS或NEG表示)。可以假

定所有的整数都不为零,这样就不用担心零的符号。在括号处写出每句文法对应的方案。

E → E * E ({if = then := POS else := NEG })

| + E ({ := })

| - E ({if = POS then := NEG else := POS})

| unsigned_integer ({ := POS} )

2. 对下面的文法G(S),FIRST(S)=( {a, b, d, e, ε} ),FIRST(T)=( {a, b, ε} ),

FIRST(R)=( {d, ε} ),FIRST(D)=( {a, b} ),FOLLOW(S)=( {#} ),FOLLOW(T)=( {#} ),

FOLLOW (R)=( {a, b, #} ),FOLLOW(D)=( {d, #} ),这个文法( 是 )LL(1)文法(填

是或不是)。

S → eT|RT

T → DR|ε

R → dR|ε

D → a|bd

3. 将下面的DFA化简后,(1)-(6)的括号中应该按顺序填写( b a b a b a )。

*

4. 将正规式( int | float ) id (, id ) ;改写成等价的上下文无关文法

D  T L ;

T  int | float

L  L, id | id )。

编译原理C

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

.

精品文档

1. 解释程序和编译程序的主要区别在于( D )。

A、单用户与多用的区别

B、对用户程序的查错能力

C、机器执行效率

D、是否生成目标代码

2. 要在某一台机器上为某种语言构造一个编译程序,必须掌握( BCD )

A、汇编语言

B、源语言

C、编译方法

D、目标语言

E、程序设计方法学

F、测试方法

3. 文法G(S)=({S,B},{b},{S→b|bB, B→bS},S),该文法描述的语言L(G(S))是( C )

A、{b|i>=0}

B、{b|i>=0}

C、{b

D、{b

4. 有文法G(I): I → I1|I0|Ia|Ic|a|b|c,下面属于这个文法句子的有(BCD )。

A、ab0

B、a0c01

C、aaa

D、bc10

5. 语法分析常用的方法有( AB )。

A、自上而下

B、自下而上

C、自左向右

D、自右向左

6. 在编译程序中安排中间代码生成的目的是( BC )。

A、便于程序空间的组织

B、利于中间代码优化

C、利于编译程序移植

D、有利于提高编译程序的质量

7. 过程信息表中必须包括( ABC )。

A、过程名

B、参数信息

.

2i+1

2i+1

2i

i

|i>=0}

|i>=1}

精品文档

C、过程入口地址

D、目标代码

8. 关于代码优化,下列说法中正确的有(ABCD )。

A、复写传播变换本身并不是优化,但它给其它优化带来机会

B、一些优化变换可能会引起死代码

C、代码外提是循环优化的一种

D、循环必须有唯一的入口点,叫做首结点,首结点是循环中所有结点的必经结点

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

1. 编译器是一种应用软件。( 错 )

2. 编译程序于具体的机器有关,与具体的语言无关。(错 )

3. 用高级语言书写的源程序都必须通过编译,产生目标代码后才能投入运行。(错 )

4. 文法G(S):S → S*S|S+S|(S)|a是二义性文法。( 对 )

5. 符号与字符的概念是相同的。(错 )

6. 存在一些语言,他们能被确定的有穷自动机识别,但不能用正规表达式表示。(错 )

7. LR(0)分析法名字中L的含义是从左到右进行分析。( 对 )

8. 语法制导翻译是在语法规则的制导下,通过计算语义规则,完成对输入符号串的翻

译。( 对 )

9. 符号表由词法分析程序建立,由语法分析程序使用。(错 )

10. 静态存储分配要求程序中每一个数据对象的大小在编译阶段能够确定。(对 )

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

1. 正规式( 1 | 01 ) 0所描述的语言是( 所有不含子串001的0和1的串 )。

2. 对下面的文法Follow(F)=( {*,+,#,)} ), FIRST(T’)=( {*,ε} )。

E → TE’

E’ → +TE’| ε

T → FT’

T’→ *FT’| ε

F → (E) |id

.

**

精品文档

3. 为下面的文法写一个语法制导的定义,用S的综合属性val给出下面文法中S产生

的二进制数的值。例如,输入101.101时,S. val := 5.625。在括号处写出每句文法对应

的方案。

S  L . R

S  L

L  L

1

B

L  B

R  B R

1

R  B

4. 表达式a * b – c – d $ e $ f – g – h * i中,运算符的优先级由高到低为-、

*、$,且均为右结合,则对应的后缀式是(a b c d - - * e f g h - - i * $ $ )。

(S.

val

:= L.

val

+ R.

val

)

(S.

val

:= L.

val

)

(L.

val

:= L

1

.

val

2 + B.

Val

)

(L.

val

:= B.

Val

)

(R.

val

:= (R

1

.

val

+ B.

val

)/2)

(R.

val

:= B.

val

/2 )

.


本文标签: 文法 语言 编译 代码 分配