形式语言与自动机 第2章 文法理论

第2章 文法理论

文法分类

文法

文法是一个四元组: G = ( V , T , P , S ) G=(V,T,P,S) G=(V,T,P,S) ,其中:

  • V V V 是非终结符(或称变元)的有限集
  • T T T 是终结符的有限集
  • P P P 是生成式的有限集,其中每个生成式都形如 α → β \alpha\to\beta αβ ,其中 α , β   ∈   ( V ∪ T ) ∗ \alpha,\beta{\,}{\in}{\,}(V{\cup}T)^{\ast} α,β(VT)
  • S   ∈   V S{\,}{\in}{\,}V SV ,称为文法 G G G 的开始符号

文法分类

① 0 型文法 / 短语结构文法(Phrase Structure Grammar),简记为 PSG

② 1 型文法 / 上下文有关文法(Context Sensitive Grammar),简记为 CSG,要求每个生成式

α → β \alpha\to\beta αβ 都满足条件 ∣ α ∣ ≤ ∣ β ∣ |\alpha|{\leq}|{\beta}| αβ

③ 2 型文法 / 上下文无关语法(Context Free Grammar),简记为 CFG,要求每个生成式都具有如下形式:
A → β   ,   β   ∈   ( V ∪ T ) ∗   ,   A   ∈   V A\to\beta{\,},{\,}{\beta}{\,}{\in}{\,}(V{\cup}T)^{\ast}{\,},{\,}A{\,}{\in}{\,}V Aβ,β(VT),AV
④ 3 型文法 / 正则文法(Regular Grammar),简记为 RG,要求每个生成式都具有如下形式:
A → a o r A → a B   ,   a   ∈   T ∪ { ε } ,   A , B   ∈   V A\to a\quad or\quad A\to aB{\,},{\,}a{\,}{\in}{\,}T{\cup}\{\varepsilon\},{\,}A,B{\,}{\in}{\,}V AaorAaB,aT{ε},A,BV

1 型文法和 1’ 型文法的等价性

1’ 型文法

1’ 型文法,要求每个生成式都具有如下形式:
α 1 A α 2 → α 1 β α 2 {\alpha_1}A{\alpha_2}\to{\alpha_1}\beta{\alpha_2} α1Aα2α1βα2
这里 A   ∈   V A{\,}{\in}{\,}V AV α 1 \alpha_1 α1 α 2 \alpha_2 α2 ∈ \in ( V ∪ T ) ∗ (V{\cup}T)^{\ast} (VT) β \beta β ∈ \in ( V ∪ T ) + (V{\cup}T)^+ (VT)+

(显然,1’ 型文法更对得起 “上下文有关文法” 这个名字 \doge)

1 型文法和 1’ 型文法的转化

显然,1’ 型文法是 1 型文法的特例(因为 ∣ α 1 A α 2 ∣ ≤ ∣ α 1 β α 2 ∣ |{\alpha_1}A{\alpha_2}|\leq|{\alpha_1}\beta{\alpha_2}| α1Aα2α1βα2 ),因此要证明二者的等价性,只需证明对任意 1 型文法 G G G ,一定存在一个 1’ 型文法 G ′ G' G 使得 L ( G ) = L ( G ′ ) L(G)=L(G') L(G)=L(G)

① 首先将 G G G 变成 G ′ ′ = ( V ′ ′ , T , P ′ ′ , S ) G''=(V'',T,P'',S) G=(V,T,P,S) ,其中:

  • V ′ ′ = V ∪ M V''=V{\cup}M V=VM M = { [ a ] ∣ a   ∈   T } M=\{[a]|a\,{\in}{\,}T\} M={[a]aT}
  • P ′ ′ = P ‾ ∪ { [ a ] → a } P''=\overline{P}{\cup}\{[a]\to a\} P=P{[a]a} , 其中 P ‾ \overline{P} P P P P 中将所有 a ( a   ∈   T ) a(a\,\in\, T) a(aT) 替换成 [ a ] [a] [a] 而得来

此时 G ′ ′ G'' G 中只有两种文法的形式:

  • A → β A\to\beta Aβ A ∈ V ′ ′ A\in V'' AV)已经满足 1’ 型文法的要求,其中 α 1 \alpha_1 α1 α 2 \alpha_2 α2 都是 ε \varepsilon ε

  • A 1 A 2 . . . A n → B 1 B 2 . . . B m A_1A_2...A_n\to B_1B_2...B_m A1A2...AnB1B2...Bm m ≥ n ≥ 2 m{\geq}n{\geq}2 mn2

② 第二个还不满足,所以要拆成:

A 1 A 2 . . . A n → C 1 A 2 . . . A n A_1A_2...A_n\to C_1A_2...A_n A1A2...AnC1A2...An

C 1 A 2 . . . A n → C 1 C 2 . . . A n C_1A_2...A_n\to C_1C_2...A_n C1A2...AnC1C2...An

. . . ... ...

C 1 C 2 . . . A n → C 1 C 2 . . . C n C_1C_2...A_n\to C_1C_2...C_n C1C2...AnC1C2...Cn

C 1 C 2 . . . C n → B 1 C 2 . . . C n C_1C_2...C_n\to B_1C_2...C_n C1C2...CnB1C2...Cn

. . . ... ...

B 1 B 2 . . . B n − 1 C n → B 1 B 2 . . . B m B_1B_2...B_{n-1}C_n\to B_1B_2...B_m B1B2...Bn1CnB1B2...Bm (最后一步直接扩展出了 B n B n − 1 . . . B m B_nB_{n-1}...B_m BnBn1...Bm

给出 1 型文法 G 如下:

  1. S → B C ∣ C B C S\to BC|CBC SBCCBC
  2. B C → C B BC\to CB BCCB
  3. c C → b c cC\to bc cCbc
  4. C → c C\to c Cc
  5. B → b B\to b Bb

这里只有 2 和 3 不满足 1’ 型文法的要求,因此:

  1. B C → D 1 C BC\to D_1C BCD1C D 1 C → D 1 D 2 D_1C\to D_1D_2 D1CD1D2 D 1 D 2 → C D 1 D_1D_2\to CD_1 D1D2CD1 C D 1 → C B CD_1\to CB CD1CB

  2. [ c ] C → E 1 C [c]C\to E_1C [c]CE1C E 1 C → E 1 E 2 E_1C\to E_1E_2 E1CE1E2 E 1 E 2 → [ b ] E 2 E_1E_2\to [b]E_2 E1E2[b]E2 [ b ] E 2 → [ b ] [ c ] [b]E_2\to [b][c] [b]E2[b][c]

以及 [ b ] → b [b]\to b [b]b [ c ] → c [c]\to c [c]c

事实上, D i D_i Di E i E_i Ei 只有一种派生方式能够被消除,所以转化前后是等价的

派生树

就是按照文法的派生过程写成树状

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Air浩瀚

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值