PDA 和上下文无关语法
如果语法G是上下文无关的,我们可以构建一个等效的非确定性 PDA,它接受上下文无关语法G生成的语言。可以为语法G构建解析器。
此外,如果P是下推自动机,则可以构造等效的上下文无关语法 G,其中
L(G) = L(P)
在接下来的两个主题中,我们将讨论如何从 PDA 转换为 CFG,反之亦然。
查找与给定 CFG 相对应的 PDA 的算法
输入- A CFG, G = (V, T, P, S)
输出- 等效 PDA,P = (Q, Σ, S, δ, q 0 , 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
解决方案
让等效的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 的算法
输入- A CFG, G = (V, T, P, S)
输出- 等效 PDA,P = (Q, Σ, S, δ, q 0 , I, F) 使得语法 G 的非终结符为 {X wx | w,x ∈ Q} 且起始状态将为 A q0,F。
步骤 1 - 对于每个 w、x、y、z ∈ Q、m ∈ S 和 a、b ∈ Σ,如果 δ (w, a, ε) 包含 (y, m) 且 (z, b, m) 包含 ( x, ε),在文法 G 中添加产生式规则 X wx → a X yz b。
步骤 2 - 对于每个 w, x, y, z ∈ Q,在语法 G 中添加产生式规则 X wx → X wy X yx 。
步骤 3 - 对于 w ∈ Q,在语法 G 中添加产生式规则 X ww → ε。