- 自动机理论教程
- 自动机理论 - 首页
- 自动机理论 - 入门
- 自动机理论 - 历史
- 自动机理论 - 应用
- 自动机理论术语
- 自动机中字符串的基础
- 自动机的集合论
- 语言和文法
- 计算理论中的文法
- 由文法生成的语言
- 乔姆斯基文法分类
- 有限自动机
- 确定性有限自动机 (DFA)
- 非确定性有限自动机 (NFA)
- 从 NFA 到 DFA 的转换
- DFA 的最小化
- 穆尔机与米利机
- DFA 的补集
- 正则表达式
- 自动机中的正则表达式
- 自动机中的 Arden 定理
- 将正则表达式转换为有限自动机
- 正则文法的泵引理
- 计算理论中的正则集
- 上下文无关文法
- 上下文无关文法 (CFG)
- 上下文无关文法中的二义性
- 上下文无关语言的封闭性
- 简化上下文无关文法
- 乔姆斯基范式 (CNF)
- 格雷巴赫范式 (GNF)
- 上下文无关文法的泵引理
- 下推自动机
- 下推自动机 (PDA)
- 下推自动机的接受
- 从 CFG 构造 PDA
- 下推自动机和解析
- 图灵机
- 图灵机 (TM) 基础
- 图灵机接受的语言
- 多磁带图灵机
- 多轨迹图灵机
- 非确定性图灵机
- 半无限带图灵机
- 线性界自动机 (LBA)
- 可计算性和不可判定性
- 图灵语言的可判定性
- 不可判定语言
- 图灵机停机问题
- 计算理论中的 Rice 定理
- Post 对应问题 (PCP)
- 自动机理论资源
- 自动机理论 - 快速指南
- 自动机理论 - 资源
- 自动机理论 - 讨论
PDA 与上下文无关文法
如果一个文法G是上下文无关的,我们可以构建一个等价的非确定性 PDA,它接受由上下文无关文法G产生的语言。可以为文法G构建一个解析器。
此外,如果P是一个下推自动机,则可以构造一个等价的上下文无关文法 G,其中
L(G) = L(P)
在接下来的两个主题中,我们将讨论如何从 PDA 转换为 CFG,反之亦然。
查找与给定 CFG 对应的 PDA 的算法
输入 - 一个 CFG,G = (V, T, P, S)
输出 - 等价的 PDA,P = (Q, ∑, S, δ, q0, I, F)
步骤 1 - 将 CFG 的产生式转换为 GNF。
步骤 2 - PDA 只有一个状态 {q}。
步骤 3 - CFG 的起始符号将是 PDA 中的起始符号。
步骤 4 - CFG 的所有非终结符将是 PDA 的栈符号,CFG 的所有终结符将是 PDA 的输入符号。
步骤 5 - 对于每个形如A → aX 的产生式,其中 a 是终结符,A, X 是终结符和非终结符的组合,创建一个转移δ (q, a, A)。
问题
从以下 CFG 构造一个 PDA。
G = ({S, X}, {a, b}, P, S)
其中产生式为 -
S → XS | ε , A → aXb | Ab | ab
解决方案
令等价的 PDA 为,
P = ({q}, {a, b}, {a, b, X, S}, δ, q, S)
其中 δ -
δ(q, ε , S) = {(q, XS), (q, ε )}
δ(q, ε , X) = {(q, aXb), (q, Xb), (q, ab)}
δ(q, a, a) = {(q, ε )}
δ(q, 1, 1) = {(q, ε )}
查找与给定 PDA 对应的 CFG 的算法
输入 - 一个 CFG,G = (V, T, P, S)
输出 - 等价的 PDA,P = (Q, ∑, S, δ, q0, I, F),使得文法 G 的非终结符为 {Xwx | w,x ∈ Q},起始状态为 Aq0,F。
步骤 1 - 对于每个 w, x, y, z ∈ Q, m ∈ S 和 a, b ∈ ∑,如果 δ (w, a, ε) 包含 (y, m) 且 (z, b, m) 包含 (x, ε),则在文法 G 中添加产生式规则 Xwx → a Xyzb。
步骤 2 - 对于每个 w, x, y, z ∈ Q,在文法 G 中添加产生式规则 Xwx → XwyXyx。
步骤 3 - 对于 w ∈ Q,在文法 G 中添加产生式规则 Xww → ε。