格雷巴赫范式 (GNF) 解释
设 G = (V, T, P, S) 为一个上下文无关文法。如果 P 中的每个产生式都具有如下形式
A -> aa
其中 A ∈ V,a ∈ T,α ∈ V*,则称 G 处于格雷巴赫范式 (GNF)。
示例
S -> aAB | bB A -> aA | a
B -> bB | c
- 定理 - 设 L 为一个不包含 {ε} 的上下文无关语言。则存在一个 GNF 文法 G,使得 L = L(G)。
- 引理 1 - 设 L 为一个上下文无关语言。则存在一个下推自动机 M,使得 L = LE(M)。
- 证明 - 不失一般性,假设 ε 不在 L 中。构造可以稍后修改以包含 ε。
设 G = (V, T, P, S) 为一个上下文无关文法,并且不失一般性地假设 G 处于 GNF。
构造 M = (Q, Σ, Γ, δ, q, Z, F),其中 -
Q = {q}
Σ = T
Γ = V
Z = S
δ: 对于所有 a ∈ Σ 和 A ∈ Γ,
δ(q, a, A) 包含 (q, y),如果 A -> ay ∈ P,或者更确切地说 -
δ(q, a, A) = {(q, y) | A -> ay ∈ P 且 y ∈ Γ*},对于所有 a ∈ Σ 和 A ∈ Γ
对于给定的字符串 x ∈ Σ*,M 将尝试使用 G 模拟 x 的最左推导。
示例
考虑以下处于 GNF 的上下文无关文法。
S ^ aS S a
构造 M 如下 -
Q = {q}
Σ = T = {a} Γ = V = {S}
Z = S
δ(T a S) = {(T S) (T s)}
δ(q, s, S) = ∅
广告