第九次作业——DFA最小化,语法分析初步
1.将DFA最小化:教材P65 第9题
因为6,7是DFA的终态,其他是非终态,可将状态集分成两个子集:
P1={1,2,3,4,5},P2={6,7}。
由于F(6,b)=F(7,b)=6,而6,7又没有其他输入,所以6,7等价。
由于F(3,c)=F(4,c)=3,F(3,d)=F(4,d)=5,F(3,b)=6,F(4,b)=7,而6,7等价,所以3,4等价。
由于F(1,b)=F(2,b)=2,F(1,a)=3,F(2,a)=4,而3,4等价,所以1,2等价。
由于状态5没有输入字符b,所以与1,2,3,4都不等价。
综上,上图DFA的状态可最细分解为:P={{1,2},{3,4}},{5},{6,7}}。
2.构造以下文法相应的最小的DFA
S→ 0A|1B
A→ 1S|1
B→0S|0
将A、B 产生式的右部代入S 中,得:
S=01S|01|10S|10=(01|10)S| 01|10
所以正规式:S= (01|10)* |01|10
3.自上而下语法分析,回溯产生的原因是什么?
某非终结符对应多个候选式,他们右部的第一个终结符相同,从而导致语法分析器选择了错误的候选式。
4.P100 练习4,反复提取公共左因子。
S -> C$
C -> bA | aB
A -> aD | bAA
B -> bE | aBB
D -> C | ε
E -> C | ε