编译原理试题汇总

发布时间 : 星期二 文章编译原理试题汇总更新完毕开始阅读

一、选择题(每个选择题 2 分,共 20 分) 1 .文法 G 产生的 ⑴ 的全体是该文法描述的语言。 A .句型 B. 终结符集 C. 非终结符集 D. 句子

2 .若文法 G 定义的语言是无限集,则文法必然是 ⑵ : A .递归的 B 前后文无关的 C 二义性的 D 无二义性的

3 . Chomsky 定义的四种形式语言文法中, 0 型文法又称为 ⑶ 文法; 1 型文法又称为 ⑷ 文法; 2 型语言可由 ⑸ 识别。

A .短语结构文法 B 前后文无关文法 C 前后文有关文法 D 正规文法 E 图灵机 F 有限自动机 G 下推自动机

4 .一个文法所描述的语言是 ⑹ ;描述一个语言的文法是 ⑺ 。 A .唯一的 B 不唯一的 C 可能唯一,好可能不唯一 5 . 数组的内情向量中肯定不含有数组的 ⑻ 的信息 A.维数 B.类型 C.维上下界 D.各维的界差

6 .在下述的编译方法中,自底向上的方法有 ⑼ ,自顶向下的分析方法有 ⑽ 。 ①简单优先分析 ②算符优先分析 ③递归下降分析 ④预测分析技术 ⑤LR(K)分析 ⑥ SLR(k)分析 ⑦ LL(k)分析 ⑧LALR(K)分析 A.③④⑦ B. ③④⑧ C.①②⑧ D.③④⑤⑥⑦ E.①②⑤⑥⑦ F. ①②⑤⑥⑧

二、简答题(每小题 5 分,共 20 分) 1 . LL ( 1 )分析法对文法有哪些要求?

2 .常见的存储分配策略有几种?它们都适合于什么性质的语言? 3 .常见循环优化都有哪些项目?

4 .什么是活动记录?它主要由哪些内容构成?

五、( 12 分) 已给文法 G[S] : S → SaP | Sf | P P → qbP | q 将 G[S] 改造成 LL ( 1 )文法,并给出 LL ( 1 )分析表。 七、( 8 分) 将下面的条件语句表示成逆波兰式和四元式序列: if a>b then x:=a+b*c else x:=b-a; 八、( 8 分) 给定基本块: A:=3*5 B:=E+F C:=A+12 D:=E+F A:=D+12 C:=C+1 E:=E+F

假定出基本块后,只有 A 、 C 、 E 是活跃的,给出用 DAG 图完成优化后的代码序列。 参考答案:

一、⑴ D ⑵ A ⑶ A ⑷ C ⑸ G. ⑹ A ⑺ B ⑻ A ⑼ F ⑽ A

二、 1 .对于 G 中的每个产生式 A →γ 1 | γ 2 | ? | γ m ,其各候选式均应满足: (1)不同的候选式不能推出以同一终结符号打头的符号串,即

FIRST( γ i ) ∩ FIRST( γ j )= φ( 1 ≤ i , j ≤ m ; i ≠ j )

(2)若有γ j 符号开始,即有

ε,则其余候选式γ i 所能推出的符号串不能以 FOLLOW(A) 中的终结

FIRST( γ i ) ∩ FOLLOW(A)= φ( i ≤ 1,2, ? ,m ; i ≠ j )

五、

改造后的文法: S → PS' S' → aPS'| fS' | e P → qP' P' → bP | e 各候选式的 FIRST 集,各非终结符的 FOLLOW 集为

产生式 S → PS' S' → aPS' → fS' → e P → qP' P' → bP → e

LL(1) 分析表为

七、( 1 )逆波兰式:

,其中, BLE 表示汪或等于时的转向

指令; [ ? ] 表示标号。 ( 2 )四元式: (1) ( j>, a, b, (3)) (2) ( j, , , (7) ) (3) ( *, b, c, T1) (4) ( +, a, T1, T2) (5) ( :=, T2, , x) (6) ( j, , , (9)) (7) ( -, b, a, T3) (8) ( :=, T3, , x) (9) ( ? ? )

八、化简后的的四元式序列为 A :=D+12 E :=E+F

FIRST 集 {q} {a} {f} { e } {q} {b} { e }

{a,f,#} {a,f,#} FOLLOW 集 {#} {#}

C :=28

二、填空题(每题2分,共20分)

1、从功能上说,程序语言的语句大体可分为_______语句和______语句两大类。 2、扫描器的任务是从________中识别出一个个_______。 3、所谓最右推导是指:_______。

4、语法分析最常用的两类方法是________和_________分析法。 5、一个上下文无关文法所含四个组成部分是_______________。 6、所谓语法制导翻译方法是_____________________。

7、符号表中的信息栏中登记了每个名字的有关的性质,如_________等等。 8、一个过程相应的DISPLAY表的内容为________。

9、常用的两种动态存贮分配办法是_____动态分配和_____动态分配。 10、产生式是用于定义_____的一种书写规则。 四、简述题(每题4分,共24分) 1、考虑下面程序 ………… Var a:integer; Procedure S(X); Var X:integer; Begin a:=a+1; X:=a+X End; Begin a:=5; S(a); Print(a) End.

试问:若参数传递方式分别采取传名和传值时,程序执行后输出a的值是什么? 3、写出表达式(a+b*c)/(a+b)-d的逆波兰表示及三元式序列。 4、已知文法G(S) S→a|∧|(T) T→T,S|S

写出句子((a,a),a)的规范归约过程及每一步的句柄。 五、计算题(共41分)

1、写一个文法,使其语言是奇数集,且每个奇数不以0开头。(5分) 2、设文法G(S): S→(L)|a S|a L→L,S|S

(1)消除左递归和回溯;

(2)计算每个非终结符的FIRST和FOLLOW; (3)构造预测分析表。 3、While a>0 ∨b<0 do Begin

X:=X+1;

if a>0 then a:=a-1 else b:=b+1 End;

翻译成四元式序列。(7分)

4、已知文法G(E)

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

(1)给出句型(T *F+i)的最右推导及画出语法树;

(2)给出句型(T *F+i)的短语、素短语。(7分)

6、设有基本块 T1:=2 T2:=10/T T3:=S-R T4:=S+R A:=T2 *T4 B:=A T5:=S+R T6:=T3 *T5 B:=T6

(1)画出DAG图;

(2)假设基本块出口时只有A,B还被引用,请写出优化后的四元序列。(6分) 参考答案:

二、 1 执行性、 说明性 2、 源程序、 单词符号 3、 任何一步αβ都是对α中最右非终结符进行替换的 4 自上而下、 自下而上 5、 一组终结符号,一组非终结符号、一个开始符号、一组产生式 6、 为每个产生式配上一个翻译子程序,并在语法分析的同时执行这些子程序 7、 类型、种属、所占单元大小、地址 8、 现行活动记录地址和所有外层最新活动记录的地址 9、 栈式、 堆式 10、 语法范畴 四、简述题

1、答:传名:a=12 (2分) 传值:a=6 (2分) 3、答:逆波兰表示:

abc*+ab+/d- (2分) 三元式序列: ① (*,b,c) ② (+,a,①) ③ (+,a,b)

联系合同范文客服:xxxxx#qq.com(#替换为@)