表示被
5
5
5整除的二进制串的
D
F
A
DFA
DFA
一个数
m
o
d
5
mod\ 5
mod 5 结果为
0
,
1
,
2
,
3
,
4
0,1,2,3,4
0,1,2,3,4以此为
5
5
5 种状态。由于要求是能被
5
5
5 整除的数,
0
m
o
d
5
=
0
0 mod 5 = 0
0mod5=0满足,故状态
0
0
0 为初始
&
\&
&最终状态,状态表如下:

注意这里 + 0 、 + 1 +0、+1 +0、+1是对二进制串末尾而言,分别代表二进制串对应的十进制数乘 2 2 2以及乘 2 2 2再 + 1 +1 +1,例如 1000 = 8 D + 0 = 10000 = 1 6 D 1000=8_{D}+0=10000=16_{D} 1000=8D+0=10000=16D,原本 m o d 5 mod\ 5 mod 5余 3 3 3,变成了余 1 1 1。
根据状态表构建
D
F
A
M
DFA\ M
DFA M

给出对应的上下文无关文法
令
0
:
S
、
1
:
A
、
2
:
B
、
3
:
C
、
4
:
D
0:S、1:A、2:B、3:C、4:D
0:S、1:A、2:B、3:C、4:D
则根据
D
F
A
DFA
DFA给出上下文无关文法:
S
→
1
A
∣
0
S
∣
ϵ
A
→
0
B
∣
1
C
B
→
0
D
∣
1
S
C
→
0
A
∣
1
B
D
→
0
C
∣
1
D
S→1A|0S|\epsilon\\ A→0B|1C\\ B→0D|1S\\ C→0A|1B\\ D→0C|1D
S→1A∣0S∣ϵA→0B∣1CB→0D∣1SC→0A∣1BD→0C∣1D
因为S是终态也是初态,所以有S→ε
给出
F
i
r
s
t
First
First集与
F
o
l
l
o
w
Follow
Follow集
F
i
r
s
t
(
S
)
=
{
0
,
1
,
ϵ
}
F
i
r
s
t
(
A
)
=
F
i
r
s
t
(
B
)
=
F
i
r
s
t
(
C
)
=
F
i
r
s
t
(
D
)
=
{
0
,
1
}
F
o
l
l
o
w
(
S
)
=
F
o
l
l
o
w
(
A
、
B
、
C
、
D
)
=
{
$
}
First(S)=\{0,1,\epsilon\}\\ First(A)=First(B)=First(C)=First(D)=\{0,1\}\\ Follow(S)=Follow(A、B、C、D)=\{$\}
First(S)={0,1,ϵ}First(A)=First(B)=First(C)=First(D)={0,1}Follow(S)=Follow(A、B、C、D)={$}
给出 L L ( 1 ) LL(1) LL(1)分析表
| 0 | 1 | $ | |
|---|---|---|---|
| S S S | S → 0 S S→0S S→0S | S → 1 A S→1A S→1A | S → ϵ S→\epsilon S→ϵ |
| A A A | A → 0 B A→0B A→0B | A → 1 C A→1C A→1C | |
| B B B | B → 0 D B→0D B→0D | B → 1 S B→1S B→1S | |
| C C C | C → 0 A C→0A C→0A | C → 1 B C→1B C→1B | |
| D D D | D → 0 C D→0C D→0C | D → 1 D D→1D D→1D |
给出正规式
R
R
R,使得
L
(
R
)
=
L
(
M
)
L(R) = L(M)
L(R)=L(M)
由于状态转换图中到达终态
S
0
S0
S0的状态转换为
S
0
→
S
0
,
S
2
→
S
0
S0→S0, S2→S0
S0→S0,S2→S0
因此依次消去
S
4
、
S
3
、
S
1
、
S
2
S4、S3、S1、S2
S4、S3、S1、S2

S0和S2是新的初态和终态,S1是原来的S0
最终得到正规式

(
0
∣
1
(
10
)
∗
(
0
∣
11
)
(
0
1
∗
01
∣
0
1
∗
00
(
10
)
∗
(
0
∣
11
)
)
∗
1
)
∗
(0|1(10)^*(0|11)(01^*01|01^*00(10)^*(0|11))^*1)^*
(0∣1(10)∗(0∣11)(01∗01∣01∗00(10)∗(0∣11))∗1)∗