右线性文法形如:A->bB|b
左线性文法形如:A->bB|b
转换步骤:右线性文法->FA->状态转换矩阵->DFA->(DFA化简矩阵->最小DFA->)左线性文法。
例子:
给定右线性文法G[S]:
S→ 0S | 1S | 1A | 0B
A→ 1C | 1
B→ 0C | 0
C→ 0C | 1C | 0 | 1
求出一个与G[S]等价的左线性文法。
首先画出其FA;
然后是转换矩阵:
0 | 1 | ||
---|---|---|---|
(A) | X,S | S,A | S,B |
(B) | S,A | S,A,C,Y | S,B |
(C) | S,B | S,A | S,B,C,Y |
(D) | S,A,C,Y | S,A,C,Y | S,B,C,Y |
(E) | S,B,C,Y | S,A,C,Y | S,B,C,Y |
接着是DFA:
明显不是最小DFA。大家自己动手实践一下,(说白了,我懒了😔)
给出最小DFA:
根据DFA写出左线性文法:
D->D0|D1|B0|C1
B->0
C->1