当前位置:首页 > 编译原理试题汇总+编译原理期末试题(8套含答案+大题集)(完整资料).doc
四 证明正规式(ab)*a 与正规式a(ba)*等价 (用构造他们的最小的DFA方法)。
【
答
案
:
】
五 写一个文法,使其语言是:
L = { 1n0m1m0n | m,n≥0 }
【】【】五 文法G:S → 1S0 | A
A → 0A1 | ε
六 对文法G[S]
S → aSb | P
P → bPc | bQc
Q → Qa | a
(1) 它是否是算符优先文法?请构造算符优先关系表
(2) 文法G[S]消除左递归、提取左公因子后是否是LL(1)文法?请
证实。
【】【】1.求出G[S]的FIRSTVT集和LASTVT集:
FIERSTVT(S)={a,b} LASTBVT(S)={b,c}
FIERSTVT(P)={b} LASTBVT(P)={c} FIERSTVT(Q)={a} LASTBVT(Q)={a} 构造优先关系表为:
a b c a b c < > < < > > > > 由于在优先关系中同时出现了aa以及bb,所以该文法不是算符优先文法。
2. 消除左递归和提取左公因子后的文法为:
S → aSb | P P → bP’ P’→ Pc |Qc Q → aQ’ Q’→ aQ’|ε
求具有相同左部的两个产生式的Select集的交集:
Select(S→aSb)∩Select(S→P) = {a}∩First(P) = {a}∩{b} = Ф
Select(P’→Pc)∩Select(P’→Qc) = First(P)∩First(Q)={b}∩{a}= Ф Select(Q’→aQ’)∩Select(Q’→ε) = {a}∩Follow(Q) = {a}∩{c} = Ф 所以修改后的文法是LL(1)文法。
七 已知文法G为:
(0) S′→ S (1) S → aAd (2) S → bAc (3) S → aec (4) S → bed (5) A → e
试构造它的LR(1)项目集、可归前缀图和LR(1)分析表。 【】【答案:】 S I1:S′→S · , # I0: S′→· S , # d S→· aAd , # a A I4:S→aA· d , I8:S→aAd · , # I2: S→ · bAc , S→a · Ad , # # e I:S→ae·c S→a · ec , # c , 5 I9:S→aec · , S→ ·aec , A→· e , d # # # A→e · , d S→ · bed , I10: b # I3: S→b · Ac , # A , c S→bAc · I6: S→bA·c,# S→b · ed , # A→· e , c # e I7:S→be · d , #
构造LR(1)分析表 如下:
action goto 状态 a b c d e # S A S2 S3 0 1
1 ac
c S5 2 S7 3
S8 4
S9 r5 5
S10 6
r5 S11 7
r1 8
r3 9
r2 10 r4 11 八 已知源程序如下: prod:=0; i:=1;
while i≤20 do begin
prod:=prod+a[i]*b[i]; i:=i+1
end;
试按语法制导翻译法将源程序翻译成四元式序列(设A是数组a的起始地址,B是数组b的起始地址;机器按字节编址,每个数组元素占四个字节)。 【答案:】
九 设有以下程序段
procedure P(x,y,z) begin
Y:=y*3; Z:=X+z; end; begin
a:=5; b:=2; p(a*b,a,a); print(a); end
若参数传递的方法分别为(1)传值、(2)传地址、(3)传名,试问结果分别什么?
【】【】十 (1)传值 5; (2)传地址 25; (3)传名 45
十 对以下文法,请写出关于括号嵌套层数的属性文法。(为S,L引入属性h,用来
记录输出配对的括号个数) 文法规则 S→(T) S→i T→T,S T→S 语 义 规 则
共分享92篇相关文档