当前位置:文档之家› 编译原理模拟试卷及答案

编译原理模拟试卷及答案

模拟试题四
发表日期:2009年6月14日出处:admin 作者:编译原理课程小组编辑:admin 阅读数:406
一、选择题(50分,每空2分, 无特别说明的均为单选题)
1、在使用高级语言编程时,首先可通过编译程序发现源程序的全部错误。

a. 语法
b. 语义
c. 语用
d. 运行
2、要在某台机器上为某种语言构造编译程序,必须掌握下述那些内容____。

a. 汇编语言
b. 高级语言
c. 源语言
d. 目标语言
e. 程序设计方法学
f. 机器语言
g. 编译方法
①abf ②afg ③cdg ④efg
3、用高级语言书写的源程序都必须通过编译,产生目标代码后才能投入运行。

这种说法_____。

a. 正确
b. 不正确
c. 不一定
d. 都不对
4、文法G所描述的语言是_____的集合。

a. 文法G的字汇表V中所有符号组成的符号串
b. 文法G的字汇表V的闭包V*中的所有符号串
c. 由文法的识别符号推出的所有符号串
d. 由文法的识别符号推出的所有终结符号串
5、给定文法, A::= bA | cc, 下面哪些符号串可由其推导出_____。

①cc ②b*cc ③b*cbcc ④bccbcc ⑤bbbcc
可选项有:
a.①
b.①③④⑤
c.①⑤
d.①②⑤
e.①②③④⑤
6、一个语言的文法是_____。

a.有限的
b.不唯一的
c.唯一的
7、若一个文法是递归的,则它所产生语言的句子个数______。

a.必定是无穷的
b.是有限个的
c.根据具体情况而定
8、语法分析常用的方法是_____。

①自顶向下②自底向上③自左向右④自右向左
可选项有:
a.①②③④
b.①②
c.③④
d.①②③
9、LR(k)方法是______。

a. 从左到右分析,每次走k步的一种编译方法。

b. 从左到右分析,共经过k步的一种编译方法。

c. 从左到右分析,每次向前预测k步的一种编译方法。

d. 从左到右分析,是否归约句柄要向后看k个输入符号的一种编译方法。

10(选2个)、在编译过程中,符号表的主要作用是_____。

a. 帮助错误处理
b. 辅助语法错误的检查
c. 辅助语义的正确性检查
d. 辅助代码生成
e. 辅助对目标程序的优化
11、LL(1)文法的条件是______。

a. 对形如U::=x1 | x2 | …| xn 的规则,要求First(xi)∩First(xj)=Φ,(i≠j);
b. 对形如U::=x1 | x2 | …| xn 的规则,若xi=>*ε, 则要求First(xj)∩Follow(U)=Φ,(i≠j)
c. a 和b
d. 都不是
12、LR(k)文法_______二义性的。

a.都是
b.都不是
c.不一定都是
13、描述语言L= { ambn | n≥m≥1 } 的文法为_____。

a. Z::=Abb A::=aA | a B::=bB | b
b. Z::=AB | b A::=Aa | a B::=aBb | b
c. Z::=Ab A::=aAb | a
d. Z::=aAb A::=Ab | aAb | ε
14、一个句型中的可归前缀为______。

a.短语
b.简单短语
c.句柄
d.规范前缀,且句柄位于该规范前缀的后端
15、Chmosky的3型语言是这样一种语言,其产生式限制为____。

a.A::= π
b. A::=a A::=aB
c.α::=β
d. αAβ::=απβ
16、高级语言编译程序常用的语法分析方法中,LL分析法属于______分析方法。

a.自左至右
b.自顶向下
c.自底向上
d.自右至左
17、LL(1) 分析法的名字中,第一个“L”的含义是_____,第二个“L”的含义是______。

a.自左至右
b.自顶向下
c.自底向上
d.自右至左
18、设有文法G[S]: S-> S*S | S+S | (S) | a, 该文法_____二义性文法。

a. 是
b. 不是
c. 不一定
19、动态存储分配时,可以采用的分配方法有______。

(1) 过程为单位的栈式动态存储分配
(2) 堆存储分配
(3) 最佳分配方法
a. (1)
b. (2)
c. (2)(3)
d. (1)(2)(3)
20. 过程调用时,参数的传递方法通常有________。

(1) 传值(2) 传地址(3) 传结果(4) 传名
a. (1)(2)
b.(1)(2)(3)
c. (1)(2)(4)
d. (1)(2)(3)(4)
21. 在编译方法中, 动态存储分配的含义是什么? 可选项有____.
a.在运行阶段对源程序中的量进行分配
b.在编译阶段对源程序中的量进行分配
c.在编译阶段对源程序中的量进行分配,在运行时这些量的地址可以根据需要改变
d.以上都不正确
22. 过程信息表中至少应该包括有_________。

(1) 过程名(2) 过程的静态层次(3) 过程入口地址
(4) 过程首部在源程序中的行号(5) 有关过程参数的信息
可选项有:
a.(1)(2)(3)
b.(1)(3)(4)
c.(1)(2)(3)(4)
d.(1)(3)(5)
e.(1)(2)(3)(4)(5)
23. 程序基本块是指________。

(1) 一个子程序
(2) 一个仅有一个入口和一个出口的语句
(3) 一个没有嵌套的程序段
(4) 一组顺序执行的程序段,仅有一个入口和一个出口
可选项有:
a. (1)
b. (2)
c. (3)
d. (4)
e. (1)(4)
f. (1)(2)
二、(15分)给定文法G[E] 如下所示:
E ::= j | (E) | EAE
A ::= + | - | * | /
1、分别求出该文法的Vn、Vt、Follow(E) 和Follow(A) 集合。

2、试用最右推导验证j+j*j 是否为该文法的句子;
3、试用画句子语法树的方法,说明该文法是否有二义性。

4、采用LL法分析时,是否需要消除左递归,怎样消除?若用LR法分析呢?
三、(7分)设有循环语句
for ( j=k; j<=k+100; j++)
{
a=x+y+z;
b=x-y;
c=c+a*b;
}
试写出其展开式、三元式和优化后三元式。

四、(15分)设有文法G[S]:
(1) S ::= E
(2) E ::= aA
(3) E ::= bB
(4) A::= cA
(5) A::= d
(6) B::=cB
(7) B::=d
构造其LR(0)分析表并利用此分析表判断符号串acccd 是否为文法G[S]的句子。

五(13分)、在一个移入-归约的分析中采用以下的语法制导翻译模式,在按一产生式归约时,立即执行括号中的动作。

A-> aB { print “0”; }
A->c { print “1”; }
B->Ab { print “2”; }
当分析器的输入为aacbb时,打印的字符串是什么?用正则式描述该文法产生的语言。

打印的字符串结果有什么特征?。

相关主题