- 自动机理论教程
- 自动机理论 - 首页
- 自动机理论 - 入门
- 自动机理论 - 历史
- 自动机理论 - 应用
- 自动机理论术语
- 自动机中字符串的基础
- 自动机的集合论
- 语言和文法
- 计算理论中的文法
- 由文法生成的语言
- 乔姆斯基文法分类
- 有限自动机
- 确定性有限自动机 (DFA)
- 非确定性有限自动机 (NFA)
- 从 NFA 到 DFA 的转换
- DFA 的最小化
- 穆尔机与米利机
- DFA 的补集
- 正则表达式
- 自动机中的正则表达式
- 自动机中的 Arden 定理
- 将正则表达式转换为有限自动机
- 正则文法的抽运引理
- 计算理论中的正则集
- 上下文无关文法
- 上下文无关文法 (CFG)
- 上下文无关文法中的二义性
- 上下文无关语言的封闭性
- 简化上下文无关文法
- 乔姆斯基范式 (CNF)
- 格雷巴赫范式 (GNF)
- 上下文无关文法的抽运引理
- 下推自动机
- 下推自动机 (PDA)
- 下推自动机的接受
- 从 CFG 构造 PDA
- 下推自动机和语法分析
- 图灵机
- 图灵机 (TM) 基础
- 图灵机接受的语言
- 多磁带图灵机
- 多轨迹图灵机
- 非确定性图灵机
- 半无限带图灵机
- 线性界限自动机 (LBA)
- 可计算性和不可判定性
- 图灵语言的可判定性
- 不可判定语言
- 图灵机停机问题
- 计算理论中的 Rice 定理
- Post 对应问题 (PCP)
- 自动机理论资源
- 自动机理论 - 快速指南
- 自动机理论 - 资源
- 自动机理论 - 讨论
格雷巴赫范式
如果产生式具有以下形式,则 CFG 处于格雷巴赫范式:
A → b
A → bD1…Dn
S → ε
其中 A、D1、....、Dn是非终结符,b 是终结符。
将 CFG 转换为格雷巴赫范式的算法
步骤 1 - 如果起始符号 S 出现在某个右侧,则创建一个新的起始符号 S’ 和一个新的产生式 S’ → S。
步骤 2 - 删除空产生式。(使用前面讨论的空产生式删除算法)
步骤 3 - 删除单元产生式。(使用前面讨论的单元产生式删除算法)
步骤 4 - 删除所有直接和间接的左递归。
步骤 5 - 对产生式进行适当的替换,将其转换为 GNF 的正确形式。
问题
将以下 CFG 转换为 CNF
S → XY | Xn | p
X → mX | m
Y → Xn | o
解决方案
这里,S 没有出现在任何产生式的右侧,并且产生式规则集中没有单元或空产生式。因此,我们可以跳过步骤 1 到步骤 3。
步骤 4
现在替换
S → XY | Xo | p 中的
X 为
mX | m
我们得到
S → mXY | mY | mXo | mo | p。
并且替换
Y → Xn | o 中的
X 为
X → mX | m
我们得到
Y → mXn | mn | o 的右侧。
向产生式集中添加了两个新的产生式 O → o 和 P → p,然后我们得到了最终的 GNF,如下所示:
S → mXY | mY | mXC | mC | p
X → mX | m
Y → mXD | mD | o
O → o
P → p
广告