2.1|启示
2.2|形式定义
文法
-
文法 G G G是一个四元组: G = ( V , T , P , S ) G = (V , T , P , S) G=(V,T,P,S)
-
V V V——变量的非空有穷集, ∀ A ∈ V \forall A \in V ∀A∈V, A A A称为语法变量,简称变量,也称为非终极符号,它表示一个语法范畴,记作 L ( A ) L(A) L(A)
-
T T T——终极符的非空有穷集, ∀ a ∈ T \forall a \in T ∀a∈T, a a a称为终极符,由于 V V V中符号表示语法范畴, T T T中的符号是语言的句子中出现的字符,所以有 V ∩ T = ∅ V \cap T = \emptyset V∩T=∅
-
P P P——产生式的非空有穷集合, P P P中的元素均具有形式 α → β \alpha \rightarrow \beta α→β,称为产生式,读作 α \alpha α定义为 β \beta β,其中 α ∈ ( V ∪ T ) + \alpha \in (V \cup T)^{+} α∈(V∪T)+,且 α \alpha α中至少有 V V V中的一个元素出现, β ∈ ( V ∪ T ) ∗ \beta \in (V \cup T)^{*} β∈(V∪T)∗, α \alpha α称为产生式 α → β \alpha \rightarrow \beta α→β的左部, β \beta β称为产生式 α → β \alpha \rightarrow \beta α→β的右部,产生式又称为定义式或者语法规则
-
S S S—— S ∈ V S \in V S∈V,文法 G G G的开始符号
-
产生式
-
对一组有相同左部的产生式: α → β 1 \alpha \rightarrow \beta_{1} α→β1, α → β 2 \alpha \rightarrow \beta_{2} α→β2, ⋯ \cdots ⋯, α → β n \alpha \rightarrow \beta_{n} α→βn可以简单地记为 α → β 1 ∣ β 2 ∣ ⋯ ∣ β n \alpha \rightarrow \beta_{1} \mid \beta_{2} \mid \cdots \mid \beta_{n} α→β1∣β2∣⋯∣βn,其中 β 1 \beta_{1} β1, β 2 \beta_{2} β2, ⋯ \cdots ⋯, β n \beta_{n} βn称为候选式
-
文法中所有定义 α \alpha α的产生式为 α \alpha α产生式
推导
-
设 G = ( V , T , P , S ) G = (V , T , P , S) G=(V,T,P,S)是一个文法,如果 α → β ∈ P \alpha \rightarrow \beta \in P α→β∈P, γ \gamma γ, δ ∈ ( V ∪ T ) ∗ \delta \in (V \cup T)^{*} δ∈(V∪T)∗,则称 γ α δ \gamma \alpha \delta γαδ在 G G G中直接推导出 γ β δ \gamma \beta \delta γβδ,记作 γ α δ ⇒ G γ β δ \gamma \alpha \delta \xRightarrow[G]{} \gamma \beta \delta γαδGγβδ,读作 γ α β \gamma \alpha \beta γαβ在文法 G G G中直接推导出 γ β δ \gamma \beta \delta γβδ,称 γ β δ \gamma \beta \delta γβδ在文法 G G G中直接归约成 γ α δ \gamma \alpha \delta γαδ
-
推导也称为派生
-
⇒ G \xRightarrow[G]{} G是 ( V ∪ T ) ∗ (V \cup T)^{*} (V∪T)∗上的二元关系,用 ⇒ G + \xRightarrow[G]{+} +G代表 ( ⇒ G ) + (\xRightarrow[G]{})^{+} (G)+,用 ⇒ G ∗ \xRightarrow[G]{*} ∗G代表 ( ⇒ G ) ∗ (\xRightarrow[G]{})^{*} (G)∗,用 ⇒ G n \xRightarrow[G]{n} nG代表 ( ⇒ G ) n (\xRightarrow[G]{})^{n} (G)n
- α ⇒ G n β \alpha \xRightarrow[G]{n} \beta αnGβ表示 α \alpha α在 G G G中经过 n n n步推导出 β \beta β, β \beta β在 G G G中经过 n n n步归约于 α \alpha α,即存在 α 1 \alpha_{1} α1, α 2 \alpha_{2} α2, ⋯ \cdots ⋯, α n − 1 ∈ ( V ∪ T ) ∗ \alpha_{n - 1} \in (V \cup T)^{*} αn−1∈(V∪T)∗,使得 α ⇒ G α 1 \alpha \xRightarrow[G]{} \alpha_{1} αGα1, α 1 ⇒ G α 2 \alpha_{1} \xRightarrow[G]{} \alpha_{2} α1Gα2, ⋯ \cdots ⋯, α n − 1 ⇒ G β \alpha_{n - 1} \xRightarrow[G]{} \beta αn−1Gβ
- 当 n = 0 n = 0 n=0时,有 α = β \alpha = \beta α=β,即 α ⇒ G 0 β \alpha \xRightarrow[G]{0} \beta α0Gβ
语法范畴
-
设 G = ( { S , A , B } , { 0 , 1 } , { S → A ∣ A B , A → 0 ∣ 0 A , B → 1 ∣ 11 } , S ) G = (\set{S , A , B} , \set{0 , 1} , \set{S \rightarrow A \mid AB , A \rightarrow 0 \mid 0A , B \rightarrow 1 \mid 11} , S) G=({S,A,B},{0,1},{S→A∣AB,A→0∣0A,B→1∣11},S),则有如下一些推导
-
对于 n ≥ 1 n \geq 1 n≥1, A ⇒ n 0 n A \xRightarrow{n} 0^{n} An0n, A ⇒ n 0 n A A \xRightarrow{n} 0^{n} A An0nA
-
B ⇒ 1 B \Rightarrow 1 B⇒1, B ⇒ 11 B \Rightarrow 11 B⇒11
-
语法范畴 A A A代表的集合 L ( A ) L(A) L(A)为 { 0 , 00 , 000 , ⋯ } = { 0 n ∣ n ≥ 1 } \set{0 , 00 , 000 , \cdots} = \set{0^{n} \mid n \geq 1} {0,00,000,⋯}={0n∣n≥1}
-
语法范畴 B B B代表的集合 L ( B ) L(B) L(B)为 { 1 , 11 } \set{1 , 11} {1,11}
-
语法范畴 S S S代表的集合为 L ( S ) = L ( A ) ∪ L ( A ) L ( B ) = { 0 , 00 , 000 , ⋯ } ∪ { 0 , 00 , 000 , ⋯ } { 1 , 11 } = { 0 , 00 , 000 , ⋯ } ∪ { 01 , 001 , 0001 , ⋯ } ∪ { 011 , 0011 , 00011 , ⋯ } L(S) = L(A) \cup L(A) L(B) = \set{0 , 00 , 000 , \cdots} \cup \set{0 , 00 , 000 , \cdots} \set{1 , 11} = \set{0 , 00 , 000 , \cdots} \cup \set{01 , 001 , 0001 , \cdots} \cup \set{011 , 0011 , 00011 , \cdots} L(S)=L(A)∪L(A)L(B)={0,00,000,⋯}∪{0,00,000,⋯}{1,11}={0,00,000,⋯}∪{01,001,0001,⋯}∪{011,0011,00011,⋯}
-
文法产生的语言
-
设文法 G = ( V , T , P , S ) G = (V , T , P , S) G=(V,T,P,S),则称 L ( G ) = { w ∣ w ∈ T ∗ 且 S ⇒ ∗ w } L(G) = \set{w \mid w \in T^{*} 且 S \xRightarrow{*} w} L(G)={w∣w∈T∗且S∗w}为文法 G G G产生的语言
-
对于任意一个文法 G G G, G G G产生的语言 L ( G ) L(G) L(G)就是该文法的开始符号 S S S对应的语法范畴 L ( S ) L(S) L(S)
句子
- ∀ w ∈ L ( G ) \forall w \in L(G) ∀w∈L(G), w w w称为 G G G的一个句子
句型
- 设文法 G = ( V , T , P , S ) G = (V , T , P , S) G=(V,T,P,S),对于 ∀ α ∈ ( V ∪ T ) ∗ \forall \alpha \in (V \cup T)^{*} ∀α∈(V∪T)∗,如果 S ⇒ ∗ α S \xRightarrow{*} \alpha S∗α,则称 α \alpha α是 G G G产生的一个句型
2.3|文法的构造
文法的等价
- 设有两个文法 G 1 G_{1} G1和 G 2 G_{2} G2,如果 L ( G 1 ) = L ( G 2 ) L(G_{1}) = L(G_{2}) L(G1)=L(G2),则称 G 1 G_{1} G1与 G 2 G_{2} G2等价
文法的表示
- 如果约定所列的第一个产生式的左部就是该文法的开始符号,则对于一个文法,只用列出它的所有产生式
文法的构造
-
构造文法 G G G,使得 L ( G ) = { ω ∣ ω ∈ { 0 , 1 } + } L(G) = \set{\omega \mid \omega \in \set{0 , 1}^{+}} L(G)={ω∣ω∈{0,1}+}
- S → 0 ∣ 1 ∣ 0 S ∣ 1 S S \rightarrow 0 \mid 1 \mid 0S \mid 1S S→0∣1∣0S∣1S
-
构造文法 G G G,使得 L ( G ) = { ω ω T ∣ ω ∈ { 0 , 1 , 2 , 3 } + } L(G) = \set{\omega \omega^{T} \mid \omega \in \set{0 , 1 , 2 , 3}^{+}} L(G)={ωωT∣ω∈{0,1,2,3}+}
- S → 00 ∣ 11 ∣ 22 ∣ 33 ∣ 0 S 0 ∣ 1 S 1 ∣ 2 S 2 ∣ 3 S 3 S \rightarrow 00 \mid 11 \mid 22 \mid 33 \mid 0S0 \mid 1S1 \mid 2S2 \mid 3S3 S→00∣11∣22∣33∣0S0∣1S1∣2S2∣3S3
-
构造文法 G G G,使得 L ( G ) = { a n b n c n ∣ n ≥ 1 } L(G) = \set{a^{n} b^{n} c^{n} \mid n \geq 1} L(G)={anbncn∣n≥1}
S → a B C ∣ a S B C C B → B C a B → a b b B → b b b C → b c c C → c c S \rightarrow aBC \mid aSBC \\ CB \rightarrow BC \\ aB \rightarrow ab \\ bB \rightarrow bb \\ bC \rightarrow bc \\ cC \rightarrow cc S→aBC∣aSBCCB→BCaB→abbB→bbbC→bccC→cc
S → a b c ∣ a S B c b B → b b c B → B c S \rightarrow abc \mid aSBc \\ bB \rightarrow bb \\ cB \rightarrow Bc S→abc∣aSBcbB→bbcB→Bc
2.4|文法的乔姆斯基体系
文法
0 0 0型文法
- 设文法 G = ( V , T , P , S ) G = (V , T , P , S) G=(V,T,P,S),则 G G G叫做 0 0 0型文法或短语结构文法, L ( G ) L(G) L(G)叫做 0 0 0型语言、短语结构语言( P S L PSL PSL)或递归可枚举集
1 1 1型文法
- 设文法 G = ( V , T , P , S ) G = (V , T , P , S) G=(V,T,P,S),如果对于 ∀ α → β ∈ P \forall \alpha \rightarrow \beta \in P ∀α→β∈P,均有 ∣ β ∣ ≥ ∣ α ∣ |\beta| \geq |\alpha| ∣β∣≥∣α∣成立,则称 G G G为 1 1 1型文法或上下文有关文法, L ( G ) L(G) L(G)叫做 1 1 1型语言或上下文有关语言( C S L CSL CSL)
2 2 2型文法
- 设文法 G = ( V , T , P , S ) G = (V , T , P , S) G=(V,T,P,S),如果对于 ∀ α → β ∈ P \forall \alpha \rightarrow \beta \in P ∀α→β∈P,均有 ∣ β ∣ ≥ ∣ α ∣ |\beta| \geq |\alpha| ∣β∣≥∣α∣,并且 α ∈ V \alpha \in V α∈V成立,则称 G G G为 2 2 2型文法或上下文无关文法, L ( G ) L(G) L(G)叫做 2 2 2型语言或上下文无关语言( C F L CFL CFL)
3 3 3型文法
- 设文法 G = ( V , T , P , S ) G = (V , T , P , S) G=(V,T,P,S),如果对于 ∀ α → β ∈ P \forall \alpha \rightarrow \beta \in P ∀α→β∈P, α → β \alpha \rightarrow \beta α→β均具有形式 A → w A \rightarrow w A→w或 A → w B A \rightarrow wB A→wB, A A A, B ∈ V B \in V B∈V, w ∈ T + w \in T^{+} w∈T+,则称 G G G为 3 3 3型文法、正则文法或正规文法, L ( G ) L(G) L(G)叫做 3 3 3型语言、正则语言或正规语言( R L RL RL)
L L L是 R L RL RL的充要条件
- L L L是 R L RL RL的充要条件是存在一个文法,该文法产生语言 L L L,并且它的产生式要么是形如 A → a A \rightarrow a A→a的产生式,要么是形如 A → a B A \rightarrow aB A→aB的产生式,其中 A A A和 B B B为语法变量, a a a为终极符号
证明
充分性
- 设有 G ′ G^{'} G′, L ( G ′ ) = L L(G^{'}) = L L(G′)=L,且 G ′ G^{'} G′的产生式形式满足定理要求,这种文法是 R G RG RG,所以, G ′ G^{'} G′产生的语言是 R L RL RL
必要性
-
构造文法 G ′ G^{'} G′
-
设 L L L是 R L RL RL,存在有 R G G RG \ G RG G,该文法产生 L L L,设 G = ( V , T , P , S ) G = (V , T , P , S) G=(V,T,P,S), P P P中的产生式要么是形如 A → w A \rightarrow w A→w的,要么是形如 A → w B A \rightarrow wB A→wB的,设 w = a 1 a 2 ⋯ a n , n ≥ 1 w = a_{1} a_{2} \cdots a_{n} , n \geq 1 w=a1a2⋯an,n≥1
-
对于 P P P中的每一个产生式,如果该产生式形如 A → a 1 a 2 ⋯ a n A \rightarrow a_{1} a_{2} \cdots a_{n} A→a1a2⋯an,则将 A → a 1 A 1 A \rightarrow a_{1} A_{1} A→a1A1, A 1 → a 2 A 2 A_{1} \rightarrow a_{2} A_{2} A1→a2A2, ⋯ \cdots ⋯, A n − 1 → a n A_{n - 1} \rightarrow a_{n} An−1→an放入产生式集 P ′ P^{'} P′
-
如果该产生式形如 A → a 1 a 2 ⋯ a n B A \rightarrow a_{1} a_{2} \cdots a_{n} B A→a1a2⋯anB,则将 A → a 1 A 1 A \rightarrow a_{1} A_{1} A→a1A1, A 1 → a 2 A 2 A_{1} \rightarrow a_{2} A_{2} A1→a2A2, ⋯ \cdots ⋯, A n − 1 → a n B A_{n - 1} \rightarrow a_{n} B An−1→anB放入产生式集 P ′ P^{'} P′
-
令 V ′ V^{'} V′是由 P ′ P^{'} P′中所有产生式中的语法变量构成的集合, G ′ = ( V ′ , T , P ′ , S ) G^{'} = (V^{'} , T , P^{'} , S) G′=(V′,T,P′,S)
-
-
证明 L ( G ′ ) = L ( G ) L(G^{'}) = L(G) L(G′)=L(G)
-
需证明 ∀ x ∈ T ∗ , x ∈ L ( G ′ ) ⇔ x ∈ L ( G ) \forall x \in T^{*} , x \in L(G^{'}) \Leftrightarrow x \in L(G) ∀x∈T∗,x∈L(G′)⇔x∈L(G)
-
首先证明如果 A ⇒ G n x A \xRightarrow[G]{n} x AnGx,则 A ⇒ G ′ m x A \xRightarrow[G^{'}]{m} x AmG′x
-
当 n = 1 n = 1 n=1时,必有 A → x ∈ P A \rightarrow x \in P A→x∈P,设 x = a 1 a 2 ⋯ a h x = a_{1} a_{2} \cdots a_{h} x=a1a2⋯ah,在 P ′ P^{'} P′中有 A ⇒ G ′ a 1 A 1 ⇒ G ′ a 1 a 2 A 2 ⇒ G ′ ⋯ ⇒ G ′ a 1 a 2 ⋯ a h A \xRightarrow[G^{'}]{} a_{1} A_{1} \xRightarrow[G^{'}]{} a_{1} a_{2} A_{2} \xRightarrow[G^{'}]{} \cdots \xRightarrow[G^{'}]{} a_{1} a_{2} \cdots a_{h} AG′a1A1G′a1a2A2G′⋯G′a1a2⋯ah
-
所以, n = 1 n = 1 n=1时结论成立
-
设 n = k n = k n=k时结论成立,往证 n = k + 1 n = k + 1 n=k+1时结论成立
-
设 n = k + 1 n = k + 1 n=k+1, x = x 1 x 2 x = x_{1} x_{2} x=x1x2,有 A ⇒ G x 1 B ⇒ G k x 1 x 2 A \xRightarrow[G]{} x_{1} B \xRightarrow[G]{k} x_{1} x_{2} AGx1BkGx1x2, B ⇒ G k x 2 B \xRightarrow[G]{k} x_{2} BkGx2,设 x 1 = a 1 a 2 ⋯ a h x_{1} = a_{1} a_{2} \cdots a_{h} x1=a1a2⋯ah,则 A → a 1 a 2 ⋯ a h B ∈ P A \rightarrow a_{1} a_{2} \cdots a_{h} B \in P A→a1a2⋯ahB∈P
-
在 P ′ P^{'} P′中有 A ⇒ G ′ a 1 A 1 ⇒ G ′ a 1 a 2 A 2 ⇒ G ′ ⋯ ⇒ G ′ a 1 a 2 ⋯ a h B A \xRightarrow[G^{'}]{} a_{1} A_{1} \xRightarrow[G^{'}]{} a_{1} a_{2} A_{2} \xRightarrow[G^{'}]{} \cdots \xRightarrow[G^{'}]{} a_{1} a_{2} \cdots a_{h} B AG′a1A1G′a1a2A2G′⋯G′a1a2⋯ahB,由归纳假设,存在 m m m,使得 B ⇒ G ′ m x 2 B \xRightarrow[G^{'}]{m} x_{2} BmG′x2,所以 A ⇒ G ′ a 1 A 1 ⇒ G ′ a 1 a 2 A 2 ⇒ G ′ ⋯ ⇒ G ′ a 1 a 2 ⋯ a h B ⇒ G ′ m a 1 a 2 ⋯ a h x 2 A \xRightarrow[G^{'}]{} a_{1} A_{1} \xRightarrow[G^{'}]{} a_{1} a_{2} A_{2} \xRightarrow[G^{'}]{} \cdots \xRightarrow[G^{'}]{} a_{1} a_{2} \cdots a_{h} B \xRightarrow[G^{'}]{m} a_{1} a_{2} \cdots a_{h} x_{2} AG′a1A1G′a1a2A2G′⋯G′a1a2⋯ahBmG′a1a2⋯ahx2
-
由归纳法原理,结论对 ∀ A ∈ V \forall A \in V ∀A∈V成立
-
-
再证明,如果 A ⇒ G ′ n x A \xRightarrow[G^{'}]{n} x AnG′x,则 A ⇒ G m x A \xRightarrow[G]{m} x AmGx
-
当 n = 1 n = 1 n=1时,必有 A → x ∈ P ′ A \rightarrow x \in P^{'} A→x∈P′,必有 A → x ∈ P A \rightarrow x \in P A→x∈P,所以 A ⇒ G x A \xRightarrow[G]{} x AGx,即结论对 n = 1 n = 1 n=1成立
-
假设结论对 n < k n < k n<k成立
-
当 n = k ( k ≥ 2 ) n = k (k \geq 2) n=k(k≥2)时,必有 A ⇒ G ′ a 1 A 1 ⇒ G ′ a 1 a 2 A 2 ⇒ G ′ ⋯ ⇒ G ′ a 1 a 2 ⋯ a h A \xRightarrow[G^{'}]{} a_{1} A_{1} \xRightarrow[G^{'}]{} a_{1} a_{2} A_{2} \xRightarrow[G^{'}]{} \cdots \xRightarrow[G^{'}]{} a_{1} a_{2} \cdots a_{h} AG′a1A1G′a1a2A2G′⋯G′a1a2⋯ah或 A ⇒ G ′ a 1 A 1 ⇒ G ′ a 1 a 2 A 2 ⇒ G ′ ⋯ ⇒ G ′ a 1 a 2 ⋯ a h B ⇒ G ′ m a 1 a 2 ⋯ a h x 2 A \xRightarrow[G^{'}]{} a_{1} A_{1} \xRightarrow[G^{'}]{} a_{1} a_{2} A_{2} \xRightarrow[G^{'}]{} \cdots \xRightarrow[G^{'}]{} a_{1} a_{2} \cdots a_{h} B \xRightarrow[G^{'}]{m} a_{1} a_{2} \cdots a_{h} x_{2} AG′a1A1G′a1a2A2G′⋯G′a1a2⋯ahBmG′a1a2⋯ahx2
-
当第一种情况出现时, x = a 1 a 2 ⋯ a h x = a_{1} a_{2} \cdots a_{h} x=a1a2⋯ah,有 A → a 1 a 2 ⋯ a h ∈ P A \rightarrow a_{1} a_{2} \cdots a_{h} \in P A→a1a2⋯ah∈P,所以 A ⇒ G a 1 a 2 ⋯ a h A \xRightarrow[G]{} a_{1} a_{2} \cdots a_{h} AGa1a2⋯ah
-
当第二种情况出现时, x = a 1 a 2 ⋯ a h x 2 x = a_{1} a_{2} \cdots a_{h} x_{2} x=a1a2⋯ahx2,必有 A → a 1 a 2 ⋯ a h B ∈ P A \rightarrow a_{1} a_{2} \cdots a_{h} B \in P A→a1a2⋯ahB∈P, A ⇒ G a 1 a 2 ⋯ a h B A \xRightarrow[G]{} a_{1} a_{2} \cdots a_{h} B AGa1a2⋯ahB,且 B B B在 G ′ G^{'} G′中用不足 k k k步推导出 x 2 x_{2} x2,由归纳假设,存在 m m m, B B B在 G G G中经过 m m m步推导出 x 2 x_{2} x2,从而 A ⇒ G a 1 a 2 ⋯ a h B ⇒ G m a 1 a 2 ⋯ a h x 2 A \xRightarrow[G]{} a_{1} a_{2} \cdots a_{h} B \xRightarrow[G]{m} a_{1} a_{2} \cdots a_{h} x_{2} AGa1a2⋯ahBmGa1a2⋯ahx2
-
所以,无论是第一种情况还是第二种情况,对 n = k n = k n=k结论都成立
-
-
由归纳法原理,结论对 ∀ A ∈ V \forall A \in V ∀A∈V成立
-
-
线性文法
- 设 G = ( V , T , P , S ) G = (V , T , P , S) G=(V,T,P,S),如果对于 ∀ α → β ∈ P \forall \alpha \rightarrow \beta \in P ∀α→β∈P, α → β \alpha \rightarrow \beta α→β均具有 A → x A \rightarrow x A→x或 A → w B x A \rightarrow wBx A→wBx形式,其中, A A A, B ∈ V B \in V B∈V, w w w, x ∈ T ∗ x \in T^{*} x∈T∗,则称 G G G为线性文法, L ( G ) L(G) L(G)称为线性语言
右线性文法
- 设 G = ( V , T , P , S ) G = (V , T , P , S) G=(V,T,P,S),如果对于 ∀ α → β ∈ P \forall \alpha \rightarrow \beta \in P ∀α→β∈P, α → β \alpha \rightarrow \beta α→β均具有 A → x A \rightarrow x A→x或 A → w B A \rightarrow wB A→wB形式,其中, A A A, B ∈ V B \in V B∈V, w ∈ T + w \in T^{+} w∈T+,则称 G G G为右线性文法, L ( G ) L(G) L(G)称为右线性语言
左线性文法
- 设 G = ( V , T , P , S ) G = (V , T , P , S) G=(V,T,P,S),如果对于 ∀ α → β ∈ P \forall \alpha \rightarrow \beta \in P ∀α→β∈P, α → β \alpha \rightarrow \beta α→β均具有 A → x A \rightarrow x A→x或 A → B w A \rightarrow Bw A→Bw形式,其中, A A A, B ∈ V B \in V B∈V, w ∈ T + w \in T^{+} w∈T+,则称 G G G为左线性文法, L ( G ) L(G) L(G)称为左线性语言
L L L是左线性语言的充要条件
- L L L是左线性语言的充要条件是存在文法 G G G, G G G中的产生式要么是形如 A → a A \rightarrow a A→a的产生式,要么是形如 A → B a A \rightarrow Ba A→Ba的产生式,且 L ( G ) = L L(G) = L L(G)=L,其中 A A A, B B B为语法变量, a a a为终极符号
定理
- 左线性文法与右线性文法等价
句子的分析过程
- 在句子的分析过程中,右线性文法对应于句子的推导过程,左线性文法对应于句子的归约过程
2.5|空语句
空产生式
- 形如 A → ε A \rightarrow \varepsilon A→ε的产生式称为空产生式,也可称为 ε \varepsilon ε产生式
定理
- 设 G = ( V , T , P , S ) G = (V , T , P , S) G=(V,T,P,S)为一文法,则存在与 G G G同类型的文法 G ′ = ( V ′ , T , P ′ , S ′ ) G^{'} = (V^{'} , T , P^{'} , S^{'}) G′=(V′,T,P′,S′),使得 L ( G ) = L ( G ′ ) L(G) = L(G^{'}) L(G)=L(G′),但 G ′ G^{'} G′的开始符号 S ′ S^{'} S′不出现在 G ′ G^{'} G′的任何产生式的右部
证明
- 当文法 G = ( V , T , P , S ) G = (V , T , P , S) G=(V,T,P,S)的开始符号 S S S不出现在 P P P中任何产生式的右部时, G G G就是所求
- 否则,取 S ′ ∉ V S^{'} \notin V S′∈/V, G ′ = ( V ∪ { S ′ } , T , P ′ , S ′ ) G^{'} = (V \cup \set{S^{'}} , T , P^{'} , S^{'}) G′=(V∪{S′},T,P′,S′), P ′ = P ∪ { S ′ → α ∣ S → α ∈ P } P^{'} = P \cup \set{S^{'} \rightarrow \alpha \mid S \rightarrow \alpha \in P} P′=P∪{S′→α∣S→α∈P},显然 G ′ G^{'} G′与 G G G有相同的类型
证明 L ( G ′ ) ⊆ L ( G ) L(G^{'}) \subseteq L(G) L(G′)⊆L(G)
- 对任意 x ∈ L ( G ′ ) x \in L(G^{'}) x∈L(G′),在 G ′ G^{'} G′中存在推导 S ′ ⇒ α ⇒ ∗ x S^{'} \Rightarrow \alpha \xRightarrow{*} x S′⇒α∗x
- 由 P ′ P^{'} P′的定义,有 S → α ∈ P S \rightarrow \alpha \in P S→α∈P,所以 S ⇒ α ⇒ ∗ x S \Rightarrow \alpha \xRightarrow{*} x S⇒α∗x,故 x ∈ L ( G ) x \in L(G) x∈L(G)
证明 L ( G ) ⊆ L ( G ′ ) L(G) \subseteq L(G^{'}) L(G)⊆L(G′)
- 对任意 x ∈ L ( G ) x \in L(G) x∈L(G),在 G G G中存在推导 S ⇒ α ⇒ ∗ x S \Rightarrow \alpha \xRightarrow{*} x S⇒α∗x
- P ′ = P ∪ { S ′ → α ∣ S → α ∈ P } P^{'} = P \cup \set{S^{'} \rightarrow \alpha \mid S \rightarrow \alpha \in P} P′=P∪{S′→α∣S→α∈P},在 G ′ G^{'} G′中 S ′ ⇒ α ⇒ ∗ x S^{'} \Rightarrow \alpha \xRightarrow{*} x S′⇒α∗x,故 x ∈ L ( G ′ ) x \in L(G^{'}) x∈L(G′)