预测分析法实验报告
下面是你输入的文法G:
非终结符号集合为:{ A, B, C, D, Z }
终结符符号集合为:{ a, b, c, d }
G[Z]:
A->cD
B->bC
C->@
C->BcA
D->aBD
D->d
Z->aAcB
Z->Bd
可以推出空串的非终结符集合为:{ C }
非终结符号的FIRST集合:
FIRST(A) = { c }
FIRST(B) = { b }
FIRST(C) = { @, b }
FIRST(D) = { a, d }
FIRST(Z) = { a, b }
非终结符号的FOLLOW集合:
FOLLOW(A) = { c, a, d, # }
FOLLOW(B) = { c, a, d, # }
FOLLOW(C) = { c, a, d, # }
FOLLOW(D) = { c, a, d, # }
FOLLOW(Z) = { # }
各产生式的SELECT集合:
SELECT(A->cD) = { c }
SELECT(B->bC) = { b }
SELECT(C->@) = { @, c, a, d, # }
SELECT(C->BcA) = { b }
SELECT(D->aBD) = { a }
SELECT(D->d) = { d }
SELECT(Z->aAcB) = { a }
SELECT(Z->Bd) = { b }
输入的文法是一个LL(1)文法。
下面是生成的预测分析表:
a
b
c
d
#
A
cD
B
bC
C
@
BcA
@
@
@
D
aBD
d
Z
aAcB
Bd
例如:对符号串acabdcb#的分析过程:
步骤
分析栈
剩余输入串
所用产生式
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#Z
#BcAa
#BcA
#BcDc
#BcD
#BcDBa
#BcDB
#BcDCb
#BcDC
#BcD
#Bcd
#Bc
#B
#Cb
#C
#
acabdcb#
acabdcb#
cabdcb#
cabdcb#
abdcb#
abdcb#
bdcb#
bdcb#
dcb#
dcb#
dcb#
cb#
b#
b#
#
#
Z->aAcB
a匹配
A->cD
c匹配
D->aBD
a匹配
B->bC
b匹配
C->@
D->d
d匹配
c匹配
B->bC
b匹配
C->@
接受
本文地址:http://com.8s8s.com/it/it895.htm