编译原理9 DFA最小化,语法分析初步
1.将DFA最小化:教材P65 第9题
I |
{1,2,3,4,5} |
{6,7} |
|
{1,2}b->{2} {3,4}b->{6,7} {1,2}a->{3,4}不可区分 {3,4}c->{3}不可区分 |
|
II |
{1,2}{3,4}{5} |
{6,7} |
2.构造以下文法相应的最小的DFA
S→ 0A|1B
A→ 1S|1
B→0S|0
答:
S→0(1S+1)|1(0S|0)
S→01S+01|10S+10
S→(01+10)S|(01+10)
S→(01|10)*(01|10)
DFA:
|
0 |
1 |
|
0 |
ε{S}={AD} |
{BE} |
{CF} |
1 |
{BE} |
|
{ADG} |
2 |
{CF} |
{ADG} |
|
3 |
{ADG} |
{BE} |
{CF} |
I |
{0,1,2} |
{3} |
|
{0}->{1,2} {1}1->{3} {2}0->{3} |
|
II |
{0}{1}{2} |
{3} |
化简DFA:
3.给定如下文法 G[S]:
S →AB
A → aA | ɛ
B → b | bB
给出句子aaab 的一个自顶向下语法分析过程,并说明回溯产生的原因是什么?
答:
S →AB
S →aAB
S →aaAB
S →aaaɛB
S →aaabɛ
S →aaab
回溯产生的原因:反复提取公共左因子
4.P100 练习4,反复提取公共左因子,对文法进行改写。
答:
S -> C$
C -> bA | aB
A -> aC' | bAA
B -> bC' | aBB
C' -> C | ɛ