09 DFA最小化,语法分析初步
1.将DFA最小化:教材P65 第9题
2.构造以下文法相应的最小的DFA
S→ 0A|1B
A→ 1S|1
B→0S|0
S = 0(1S+1)+1(0S+0)
= 01S+01+10S+10
= 01S+10S+01+10
= (01+10)S+(01+10)
=(01+10)*+(01+10)
S -> (01|10)*|(01|10)
3.自上而下语法分析,回溯产生的原因是什么?
当前文法不满足LL(1)时,则不能用确定的自顶向下分析,但在这种情况下,可用不确定自顶向下的分析法,也就是说带回溯的自顶向下的分析法。
引起回溯的原因是在文法中当关于某个非终结符的产生式有很多时,当面临当前的输入符无法确定选用唯一的产生式,从而引起回溯。
①由于相同左部的产生式的右部First集不为空而引起的回溯
②由于相同左部非终结符的右部存在能产生空串的产生式,且该非终结符的Follow集中含有其他产生式右部的First集的元素。
③由于文法含有左递归而引起回溯
4.P100 练习4,反复提取公共左因子。
S -> C$
C -> bA|aB
A -> a|ac|bAA
B -> b|bc|aBB
反复提取公共左因子:
S -> C$
A -> aD|bAA
D -> ε|c
B -> bE|aBB
E -> ε|c