6
#(N,a
)
#
a>)归约
7
#(N,N
)
#
>)归约
8
#(N
)
#
(=)移进
9
#(N)
#
)>#归约
10
#N
#
接受
五、设有文法G[A]:
A→BCc|gDB
B→bCDE|ε
C→DaB|ca
D→dD|ε
E→gAf|c
(1)计算该文法的每一个非终结符的FIRST集和FOLLOW集;
(2)试判断该文法是否为LL
(1)文法。
(15)
FIRST
FOLLOW
A
B
C
D
E
A,b,c,d,g
b
A,c,d
D
C,g
A,c,d
C,d,g
A,b,c,g
是LL
(1)文法。
2.对于文法G[S]:
S→AB,A→Aa|bB,B→a|Sb求句型baSb的全部短语、直接短语和句柄?
句型baSb的语法树如图五
(2)所示。
解:
baSb为句型baSb的相对于S的短语,ba为句型baSb的相对于A的短语,Sb为句型baSb的相对于B的短语,且为直接短语,a为句型baSb的相对于B的短语,且为直接短语和句柄。
3.设有非确定的有自限动机NFAM=({A,B,C},{0,1},δ,{A},{C}),其中:
δ(A,0)={C}δ(A,1)={A,B}δ(B,1)={C}δ(C,1)={C}。
请画出状态转换距阵和状态转换图。
解:
状态转换距阵为:
δ
0
1
A
C
A,B
B
∅
C
C
∅
C
状态转换图为
七已知文法G为:
(1)S′→S
(2)S→aAd
(3)S→bAc
(4)S→aec
(5)S→bed
(6)A→e
试构造它的LR
(1)项目集、可归前缀图和LR
(1)分析表。
【】【答案:
】
构造LR
(1)分析表
如下:
二、设∑={0,1}上的正规集S由倒数第二个字符为1的所有字符串组成,请给出该字集对应的正规式,并构造一个识别该正规集的DFA。
(8分)
答:
构造相应的正规式:
(0|1)*1(0|1)(3分)
NFA:
(2分)
11
εεεε1
00
确定化:
(3分)
I
{0,1,2}
{1,2}
{1,2,3}
{1,2}
{1,2}
{1,2,3}
{1,2,3}
{1,2,4}
{1,2,3,4}
{1,2,4}
{1,2}
{1,2,3}
{1,2,3,4}
{1,2,4}
{1,2,3,4}
0
1
0100
01
11
四、对于文法G(E):
(8分)
E→T|E+T
T→F|T*F
F→(E)|i
1.写出句型(T*F+i)的最右推导并画出语法树。
2.写出上述句型的短语,直接短语、句柄和素短语。
答:
1.(4分)
E⇒T⇒F⇒(E)⇒(E+T)⇒(E+F)
⇒(E+i)⇒(T+i)⇒(T*F+i)
2.(4分)
短语:
(T*F+i),T*F+i,T*F,i
直接短语:
T*F,i
句柄:
T*F
素短语:
T*F,i
九、(9分)设已构造出文法G(S):
(1)S→BB
(2)B→aB
(3)B→b的LR分析表如下
ACTION
GOTO
状态
a
b
#
S
B
0
s3
s4
1
2
1
acc
2
s6
s7
5
3
s3
s4
8
4
r3
r3
5
r1
6
s6
s7
9
7
r3
8
r2
r2
9
r2
假定输入串为abab,请给出LR分析过程(即按照步骤给出状态,符号,输入串的变化过程)。
答:
步骤状态符号输入串
00#abab#
103#abab#
2034#abab#
3038#aBab#
402#Bab#
5026#Bab#
60267#Bab#
70269#BaB#
8025#BB#
901#S#acc
1.设有如下文法G(S),试消除其左递归。
G(S):
S—>Ac|c
A—>Bb|b
B—>Sa|a
解:
S→abcS′|bcS′|cS′,S′→abcS′|
2.试构造与下面G(S)等价的无左递归的文法。
G(S):
S—>Sa|Nb|c
N—>Sd|Ne|f
解:
S→fN′bS′|cS′,S′→aS′|dN′bS′|
N′→eN′|
3.设有文法G(S):
S—>aBc|bAB
A—>aAb|b
B—>b|ε
①求各产生式的FIRST集,FOLLOW(A)和FOLLOW(B),以及各产生式的SELECT集。
②构造LL
(1)分析表,并分析符号串baabbb是否是。
解:
(1)FIRST(aBc)={a},FIRST(bAB)={b}FIRST(aAb)={a},A→b:
FIRST(A→b)={b},B→b:
FIRST(b)={b},FIRST(ε)={ε}
FOLLOW(A)={b,#},FOOLOW(B)={c,#}
SELECT(S→aBc)={a},SELECT(S→bAB)={b},SELECT(A→aAb)={a},SELECT(A→b)={b},SELECT(B→b)={b},SELECT(B→
)={c,#}
因此,所得的LL
(1)分析表如表A-4所示。
表A-4LL
(1)分析表
输入
VN
输入符号
a
b
c
#
S
S→aBc
S→bAB
A
A→aAb
A→b
B
B→b
B→
B→
(2)分析符号串baabbb成功,baabbb是该文法的句子,如图A-16所示。
图A-16识别串baabbb的过程
4.已知文法G(S):
S—>a|(T)
T—>T,S|S
①给出句子((a,a),a)的最左推导并画出语法树;②给出句型(T,a,(T))所有的短语、直接短语、素短语、最左素短语、句柄和活前缀。
解:
(1)最左推导:
S
(T)
(T,S)
(S,S)
(a,S)
(a,(T))
(a,(T,S))
(a,(S,S))
(a,(a,S))
(a,(a,a))
语法树:
如图A-16所示。
图A-16(a,(a,a))的语法树
(2)句型(T,a,(T))的短语、直接短语、素短语、最左素短语、句柄、活前缀及语法树(图A-17)。
短语:
a||T,a||(T)||T,a,(T)||(T,a,(T))
直接短语:
a||(T)
素短语:
a||(T)
最左素短语:
a
句柄:
a
活前缀:
||(||(T||(T,||(T,a
图A-17(T,a,(T))的语法树
项目集族和DFA
1、wab+cde10-/+8+*+
2、abcd-*e/+
3、abc+e*bc+f/+:
=
4、4231
5、句子b(aa)b的规范归约过程:
步骤
符号栈
输入串
动作
0
#
b(aa)b#
预备
1
#b
(aa)b#
移进
2
#b(
aa)b#
移进
3
#b(a
a)b#
移进
4
#b(A
a)b#
归约
5
#b(Ma
)b#
移进
6
#b(Ma)
b#
移进
7
#b(B
b#
归约
8
#bA
b#
归约
9
#bAb
#
移进
10
#S
#
接受
6、消除左递归
S→aFS’|*aFS’
S’→*aFS’|ε
F→+aF|+a