形式语言复习二
# 形式定义
- 文法
- G=(V,T,P,S)
- V—— 为变量的非空有穷集。∀A∈V,A 叫做一个语法变量,简称为变量,也可以叫做非终极符号
- T—— 为终极符的非空有穷集。∀a∈T,a 叫做终极符。V∩T=ϕ
- P—— 为产生式的非空有穷集合。P 中的元素均具有形式α→β,被称为产生式,读作:α 定义β。其中α∈(V∪T)+,且α 中至少有V 中一个元素的出现,β∈(V∪T)∗
- S——S∈V,为文法G 的开始符号
对一组有相同左部的产生式
α→β1,α→β2,...,α→βn
可以简单记为:
α→β1∣β2∣...∣βn
读作:α 定义为β1, 或者β2,...,或者βn。并且称它们为α 产生式。β1,β2,...,βn 称为候选式
- 推导:
- 设G=(V,T,P,S) 是一个文法,如果α→β∈P,γ,δ∈(V∪T)∗,则称γαδ 在G 中直接推导出γβδ。
- γαδ⇒Gγβδ
- 读作:γαδ 在文法G 中直接推导出γβδ。
- 直接推导可以简称推导,也称推导为派生
- 归约:
- γαδ⇒Gγβδ
- 称γβδ 在文法G 中直接规约称γαδ。在不特别强调归约的直接性时,“直接归约” 可以简称为归约
- ⇒G,⇒G+,⇒G∗ 当成(V∪T)∗ 上的二元关系
- α⇒Gnβ: 表示α 在G 中经过 n 步推导出β;β 在G 中经过 n 步归约成α。
- 当 n=0 时,有α=β。即α⇒G0α。
- α⇒G+β:表示α 在G 中经过至少一步推导出β;β 在G 中经过至少 1 步归约成α。
- α⇒G∗β:表示α 在G 中经过若干步推导出β;β 在G 中经过若干步归约成α
- 分别用⇒,⇒+,⇒∗,⇒n 代替⇒G,⇒G+,⇒G∗,⇒Gn
- 语言
- L(G)={w∣w∈T∗,S⇒∗w}
- 句子
- ∀x∈L(G),w 称为G 的一个句子
- 句子w 是从S 开始,在G 中可以推导出来的终极符号行,它不含语法变量
- 句型
- G=(V,T,P,S),对于∀α∈(V∪T)∗,如果S⇒∗α,则称α 是G 产生的一个句型
- 句型α 是从S 开始,在G 中可以推导出来的符号行,它可能含语法变量
# 文法的构造
- 等价
- 设有两个文法G1 和G2,如果L(G1)=L(G2),则称G1 和G2 等价
- 文法G=(V,T,P,S) 约定
- 一个文法的所有产生式中包含的符号,就是文法中所有可能有用的终极符号和非终极符号
- 所列的第一个产生式的左部就是该文法的开始符号
# 文法的乔姆斯基体系
文法G=(V,T,P,S)
短语结构文法(PSG):
上下文相关文法(CSG):
上下文无关文法(CFG):
- G 是 1 型文法
- 如果对于∀α→β∈P,均有∣β∣≥∣α∣,并且α∈V 成立,则称G 为 2 型文法,或上下文无关文法
- L(G) 称为 2 型语言或上下文无关语言(CFL)
正则文法(RG):
- G 是 2 型文法
- 如果对于∀α→β∈P,α→β 均具有形式A→w,A→wB,其中A,B∈V,w∈T+,则称G 为 3 型文法,也可称正则文法或正规文法
- L(G) 叫做 3 型语言,也可称为正则语言或者正规语言(RL)
文法分类
- G 是短语结构文法
- 如果所有产生式都有右边部分长度大于左边部分,那么G 是上下文有关文法
- 如果所有产生式的左边部分都是单个非终极符号,那么G 是上下文无关文法
- 如果所有产生式的右边部分都是以终极符号开始,且含有至多一个非终极符号(如果有非终极符号则出现在最右边),那么G 是正则文法
- 如果一个文法G 是RG,则它也是CFG,CSG 和短语结构文法,反之不一定成立
- 如果一个文法G 是CFG,则它也是CSG 和短语结构文法,反之不一定成立
- 如果一个文法G 是CSG,则它也是短语结构文法,反之不一定成立
- RL 也是CFL,CSL 和短语结构语言。反之不一定成立
- CFL 也是CSL 和短语结构语言。反之不一定成立
- CSL 是短语结构语言。反之不一定成立
- 当文法G 是CFG 时,L(G) 却可以是RL
- 当文法G 是CSG 时,L(G) 可以是RL,CFL
- 当文法G 是短语结构文法时,L(G) 可以是RL,CFL,CSL
定理:L 是RL 的充要条件是存在一个文法,该文法产生语言L,并且它的产生形式要么是形如:A→a 的产生式,要么是形如A→aB 的产生式。其中A,B 为语法变量,a 为终极符号
证明:
充分性:设有G′,L(G′)=L,且G′ 的产生式的形式满足定理要求。这种文法就是RG。所以,G′ 产生的语言就是RL, 故L 就是RL
必要性:
构造:用产生式组:A→a1A1,A1→a2A2,...,An−1→an 代替产生式A→a1a2...an
用产生式组A→a1A1,A1→a2A2,...,An−1→anB 代替产生式A→a1a2...anB
证明L(G′)=L(G)
对于∀A∈V,A⇒G+x⇔A⇒G′+x,因为S∈V,所以结论自然对S 成立
线性文法:
- 设G=(V,T,P,S),如果对于∀α→β∈P,α→β 均具有如下形式:A→w,A→wBx,其中A,B∈V,w,x∈T∗,则称G 为线性文法
- 线性语言
右线性文法:
- 设G=(V,T,P,S),如果对于∀α→β∈P,α→β 均具有如下形式:A→w,A→wB,其中A,B∈V,w,x∈T∗,则称G 为线性文法
- 右线性语言
左线性文法
- 设G=(V,T,P,S),如果对于∀α→β∈P,α→β 均具有如下形式:A→w,A→Bw,其中A,B∈V,w,x∈T∗,则称G 为线性文法
- 左线性语言
定理:L 是一个左线性语言的充要条件是存在文法G,G 中的产生式要么是形如:A→a 的产生式,要么是形如A→Ba 的产生式,使得L(G)=L。其中A,B 为语法变量,a 为终级符号
定理:左线性文法和右线性文法等价
- 对任意右线性文法G,我们能构造出对应的左线性文法G′,使得L(G′)=L(G);
- 对任意左线性文法G,我们能构造出对应的右线性文法G′,使得L(G′)=L(G)
定理:左线性文法的产生式与右线性文法的产生式混合所得到的文法不是RG
- 证明:设有文法G15:S→0A,A→S1∣1
- 不难看出,L(G15)={0n1n∣n≥1}。我们构造不出RG G,使得L(G)=L(G15)={0n1n∣n≥1}
- 因为L(G15) 不是RL。所以G15 不是RG。
# 空语句