如何将有限自动机 (FA) 转换为右线性正则文法?
最多只有一个变量出现在产生式右边的文法称为线性文法。
示例 1
S→aSb/ε
示例 2
S→Ab
A→aAb
A→ε
右线性文法
右线性文法是指所有非终结符都在右端出现的文法。
例如:
S->aS/ε
转换算法
将有限自动机 (FA) 转换为右线性文法的算法如下:
步骤 1 - 从起始状态开始。
步骤 2 - 对每个状态重复此过程。
步骤 3 - 将产生式作为输出,后跟转换所到达的状态。
步骤 4 - 最后,添加 € (epsilon) 来结束推导。
示例 1
让我们考虑如下所示的有限自动机 (FA):
选择起始状态 A,在符号 'a' 上的输出到达状态 B
A→aB
现在我们将选择状态 B,然后我们将继续每个输出
即 B→aB
B→bB
B→ε
因此,
最终的右线性文法如下:
A→aB
B→aB/bB/ε
示例 2
从状态 A 开始,它是初始状态,在符号 'a' 上的输出到达 A 和 B,在符号 'b' 上的输出到达 A。现在右线性文法的产生式规则是:
A→aA/bA/aB
现在选择状态 B,然后继续每个输出,右线性文法是:
B→aB/bB/ε
给定有限自动机的最终右线性文法是:
A→aA/bA/aB
B→aB/bB/ε
广告