如何将右线性文法转换为左线性文法?
对于每个有限状态自动机 (FA),都存在一个正则文法,而对于每个正则文法,都存在一个左线性和右线性正则文法。
示例 1
考虑一个正则语法 -
a(a+b)* A → aB B → aB|bB|e
对于给定的正则表达式,上述文法是右线性文法。
现在,将上述右线性文法转换为左线性文法。
转换遵循的规则是,
有限状态自动机 → 右线性
右线性的反转 → 左线性文法。
所以,
A → Ba
B → Ba|Bb|e
最后对于每个右线性都有一个
示例
考虑一个语言 {bnabma| n>=2, m>=2}
给定语言的右线性文法是 -
bn ⇒ A→bA|b A is on right side bm ⇒ B→bB|b B is on right side
完整的表达式文法是 -
S→AaBa A→bA|b B→bB|b.
上述右线性文法的左文法是,
bn ⇒ A→Ab|b bm ⇒ B→Bb|b
完整的表达式文法如下 -
S→AaBa A→Ab|b B→Bb|b
广告
数据结构
网络
RDBMS
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP