最新编译原理期中测试答案
编译原理期中测试答案
三、单项选择题(每题3分,共15分)
1.设有文法G[S]: S→(AS)|(b)
A→(SaA)|(a)
该文法的句型(((b)a(a))(b))有 C 个直接短语。
A.1
B. 2
C. 3
D. 4
2.如果一个文法满足 D ,则称该文法是二义性文法。
(1) 文法的某一个句子存在两个(包括两个)以上的语法树
(2) 文法的某一个句子存在两个(包括两个)以上的最左推导
(3) 文法的某一个句子存在两个(包括两个)以上的最右推导
(4) 在进行归约时,文法的某些规范句型的句柄不唯一
上述描述中的所有正确描述有:
A. (1)
B. (1)(2)
C. (1)(2)(3)
D. (1)(2)(3)(4) 3.构造一个不带回溯的自顶向下语法分析器,要求文法满足
E 。
A.对每个形如A→x1|x2|…|xn的产生式,要求FIRST(xi)与FIRST(xj)的交集为空集(i≠j)
B.对每个形如A→x1|x2|…|xn的产生式,若xi* ε,则要求FIRST(xj)与FOLLOW(A)的交集为空集(i≠j)
C. 不含左递归
D. A和B同时满足
E. A、B和C同时满足
4、给定文法A→bA|cc,下列符号串中,是该文法的句子的是
C 。
① cc ② bcbc ③ bcbcc ④ bccbcc ⑤ bbbcc
A① B. ①③④⑤ C. ①⑤ D. ①④⑤
5、若一个句型中出现了某一产生式的右部,则此右部 B 是该句型的句柄。
A.一定
B. 不一定
C. 一定不
D. 无法判断
四、简述题(每题5分,共20分)
1、写一上下文无关文法,它能产生语言}0
n。
n
a
L m
b
,
=m
|
{>=
#
S→A#B
A→Aa|ε
B→Bb|ε
2、将文法G[S] 改写为等价的G′[S],使G′[S]不含左递归和左公共因子。G[S]:S→bSAe | bA
A→Ab | d
答:文法G[S] 改写为等价的不含左递归和左公共因子的
G'[S]S→bB
B→SAe | A
A→d A'
A' →bA' | ε
3、什么是文法的二义性?下面的文法是二义的吗?为什么?
G[S]:S→AB | ABD A→a B→CD |D C→c D→d
答:如果一个文法存在某个句子对应两棵不同的语法树,则该文法是二义的。
是,句子acd 有两个完全不同的语法树。
4、设文法G[A]: A→[B
B →X] | BA
X →Xa | Xb | a | b
试求出文法G[A]产生的语言对应的正则式。
解: X →X(a |b) | a | b X →(a |b)?( a | b)* 代入B →X] | BA
B →(a |b)?( a | b)*] | BA B →(a |b) ( a | b)*] ?A*代入
A→[(a |b) ( a | b)*] ?A*
[(a|b)(a|b)*] ([(a|b)(a|b)*])*
五、计算题(共41分)
1、已知文法G(S):
S→a|∧|(T)
T→T,S|S
⑴给出句子(a,(a,a))的最左推导并画出语法树;
⑵给出句型((T,S),a)的短语、直接短语、句柄。(10分)
答:最左推导:(2分)
S=>(T)=>(T,S)=>(S,S)
=>(a,S)=>(a,(T))=>(a,(T,S))
=>(a,(S,S))=>(a,(a,S))
=>(a,(a,a))
语法树:
3给出与正规式R=(ab)*(a|b*)ba等价的NFA。(5分)
答案: