编译原理作业题整理Word文件下载.doc
《编译原理作业题整理Word文件下载.doc》由会员分享,可在线阅读,更多相关《编译原理作业题整理Word文件下载.doc(19页珍藏版)》请在冰豆网上搜索。
1.(0|1)*(010)(0|1)*
2.(10*1)*|((11|00)*|0111*0)*.
2.
(0|1)*010(0|1)*
解:
(1)RE的分解树如下:
r17
r16
r11
*
r15
r14
(
)
|
r12
r13
1
r10
r9
r8
r7
r6
r5
r4
r3
r1
r2
(2)由分解树及基本的Thompson构造算法逐步构造等价的NFA过程如下:
2
3
Start
r1:
4
5
r2:
r3、r4:
6
r5:
7
7’
8
r6:
r7:
8’
9
r8:
r9:
9’
10
r10:
r11:
12
13
r12:
14
15
r13:
11
16
r14、r15:
10’
17
r16:
r17:
(3)由子集法构造等价的DFA过程如下:
A
B
C
D
E
F
G
H
I
其中含有r.初态的是A作为新的DFA的初态,含有原r17终态的是E、F、G和H作为新的DFA的终态。
做出对应DFA的状态转换图如下:
(4)直接由分割算法处理该DFA,如得到的DFAmin与原DFA一致说明原DFA本身就是最简的:
由于导致{A,B,C}和D落入的状态集是不等价的,说明{A,B,C}和D是不等价的,故{A,B,C,D}应该分裂为{A,B,C}和{D},故:
由于落入不同的状态集(相对来说是两个不等价的状态集),说明{A,C}和B是不等价的,故{A,B,C,D}应该分裂为{A,C}和{B},故:
由于落入同一个状态集,故{E,F,G,H,I}暂不分裂。
由于落入同一个状态集},故{E,F,G,H,I}暂不分裂。
故最终划分为:
说明A和C是等价的,E、F、G、H和I是等价的。
合并等价状态(A和C中保留A,E、F、G、H和I中保留E)并处理对应弧线得最小化DFA如下:
1.
3.1考虑文法
S®
(L)|a
L®
L,S|S
(a)建立句子(a,(a,a))和(a,((a,a),(a,a)))的分析树。
(b)为(a)的两个句子构造最左推导。
(c)为(a)的两个句子构造最右推导。
(d)这个文法产生的语言是什么。
(a,(a,a))的分析树
S
( L)
L,S
S(L)
aL,S
Sa
a
(a,((a,a),(a,a)))的分析树
S
(L)
L,S
a(L)
L,S
a(L)
L,S
a(L)
L,S
Sa
a
(a,(a,a))的最左推导
S=>lm(L)=>lm(L,S)=>lm(S,S)=>lm(a,S)
=>lm(a,(L))=>lm(a,(L,S))=>lm(a,(S,S))=>lm(a,(a,S))=>lm(a,(a,a))
(a,((a,a),(a,a)))的最左推导
S=>lm(L)=>lm(L,S)=>lm(S,S)=>lm(a,S)=>lm(a,(L))
=>lm(a,(L,S))=>lm(a,(S,S))=>lm(a,((L),S))=>lm(a,((L,S),S))=>lm(a,((S,S),S))=>lm(a,((a,S),S))=>lm(a,((a,a),S))=>lm(a,((a,a),(L)))=>lm(a,((a,a),(L)))
=>lm(a,((a,a),(L,S)))=>lm(a,((a,a),(S,S)))=>lm(a,((a,a),(a,S)))=>lm(a,((a,a),(a,a)))
(a,(a,a))的最右推导
S=>rm(L)=>rm(L,(L))=>rm(L,(L,S))=>rm(L,(L,a))
=>rm(L,(S,a))=>rm(L,(a,a))=>rm(S,(a,a))=>rm(a,(a,a))
(a,((a,a),(a,a)))的最右推导
S=>rm(L)=>rm(L,S)=>rm(L,(L))=>rm(L,(L,S))
=>rm(L,(L,(L)))=>rm(L,(L,(L,S)))=>rm(L,(L,(L,a)))=>rm(L,(L,(S,a)))=>rm(L,(L,(a,a)))=>rm(L,(S,(a,a)))=>rm(L,((L),(a,a)))=>rm(L,((L,S),(a,a)))=>rm(L,((L,a),(a,a)))=>rm(L,((S,a),(a,a)))=>rm(L,((a,a),(a,a)))=>rm(S,((a,a),(a,a)))=>rm(a,((a,a),(a,a)))
(d)该文法产生的语言是括号匹配的串,串中的各项用“,”隔开,项可以是括号匹配的子串或a
3.2考虑文法
S→aSbS|bSaS|ε
(a)为句子abab构造两个不同的最左推导,以此说明文法是二义的。
(b)为abab构造对应的最右推导。
(c)为abab构造对应的分析树
(a)1.S=>lmaSbS=>lmabSaSbS=>lmabaSbS=>lmababS
=>lmabab
2.S=>lmaSbS=>lmabS=>lmabaSbS=>lmababS=>lmabab
(b)S=>rmaSbS=>rmaSb=>rmabSaSb=>rmabSab=>rmabab
(C)分析树
(1)
S
aSbS
εaSbS
εε
分析树
(2)
S
aSbS
aSbSε
εε
(d)该文法产生的语言是a、b个数相等的ab串含空串
习题3
3.3下面的二义文法描述命题演算公式,为它写一个等价的非二义性文法。
S→SandS|SorS|notS|true|false|(S)
E->
EorT|T
T->
TandF|F
F->
notF|(E)|true|false
3.10构造下面文法的LL
(1)分析表
D->
TL
T->
int|real
L->
idR
R->
idR|ε
First(TL)={int,real} Follow(D)={#}
First(T)={int,real} Follow(T)={id}
First(D)={int,real} Follow(L)={#}
First(int)={int} Follow(R)={#}
First(real)={real}
First(idR)={id}
First(L)={id}
First(,idR)={,}
First(ε)={ε}
First(R)={,,ε}
Int
Real
Id
#
T
T->
int
real
L
L->
R
R->
idR
ε
3.11下面的文法是否为LL
(1)文法?
说明理由。
(两种方法)
S->
AB|PQx
A->
xy
B->
bc