形式语言复习二

# 形式定义

  • 文法
    • G=(V,T,P,S)G=(V,T,P,S)
      • V—— 为变量的非空有穷集。AV,A\forall A\in V,A 叫做一个语法变量,简称为变量,也可以叫做非终极符号
      • T—— 为终极符的非空有穷集。aT,a\forall a\in T,a 叫做终极符。VT=ϕV\cap T=\phi
      • P—— 为产生式的非空有穷集合。P 中的元素均具有形式αβ\alpha\rightarrow\beta,被称为产生式,读作:α\alpha 定义β\beta。其中α(VT)+\alpha\in(V\cup T)^+,且α\alpha 中至少有VV 中一个元素的出现,β(VT)\beta\in(V\cup T)^*
      • S——SVS\in V,为文法GG 的开始符号

对一组有相同左部的产生式

αβ1,αβ2,...,αβn\alpha\rightarrow\beta_1,\alpha\rightarrow\beta_2,...,\alpha\rightarrow\beta_n

可以简单记为:

αβ1β2...βn\alpha\rightarrow\beta_1\vert\beta_2\vert...\vert\beta_n

读作:α\alpha 定义为β1,\beta_1, 或者β2,...\beta_2,...,或者βn\beta_n。并且称它们为α\alpha 产生式。β1,β2,...,βn\beta_1,\beta_2,...,\beta_n 称为候选式

  • 推导:
    • G=(V,T,P,S)G=(V,T,P,S) 是一个文法,如果αβP,γ,δ(VT)\alpha\rightarrow\beta\in P,\gamma,\delta\in(V\cup T)^*,则称γαδ\gamma\alpha\deltaGG 中直接推导出γβδ\gamma\beta\delta
    • γαδGγβδ\gamma\alpha\delta\Rightarrow_G\gamma\beta\delta
    • 读作:γαδ\gamma\alpha\delta 在文法GG 中直接推导出γβδ\gamma\beta\delta
    • 直接推导可以简称推导,也称推导为派生
  • 归约:
    • γαδGγβδ\gamma\alpha\delta\Rightarrow_G\gamma\beta\delta
    • γβδ\gamma\beta\delta 在文法GG 中直接规约称γαδ\gamma\alpha\delta。在不特别强调归约的直接性时,“直接归约” 可以简称为归约
  • G,G+,G\Rightarrow_G,\Rightarrow_G^+,\Rightarrow_G^* 当成(VT)(V\cup T)^* 上的二元关系
    • αGnβ\alpha\Rightarrow_G^n\beta: 表示α\alphaGG 中经过 n 步推导出β\betaβ\betaGG 中经过 n 步归约成α\alpha
    • 当 n=0 时,有α=β\alpha=\beta。即αG0α\alpha\Rightarrow_G^0\alpha
    • αG+β\alpha\Rightarrow_G^+\beta:表示α\alphaGG 中经过至少一步推导出β\betaβ\betaGG 中经过至少 1 步归约成α\alpha
    • αGβ\alpha\Rightarrow_G^*\beta:表示α\alphaGG 中经过若干步推导出β\betaβ\betaGG 中经过若干步归约成α\alpha
    • 分别用,+,,n\Rightarrow,\Rightarrow^+,\Rightarrow^*,\Rightarrow^n 代替G,G+,G,Gn\Rightarrow_G,\Rightarrow_G^+,\Rightarrow_G^*,\Rightarrow_G^n
  • 语言
    • L(G)={wwT,Sw}L(G)={\{}w\vert w\in T^*,S\Rightarrow^* w{\}}
  • 句子
    • xL(G),w\forall x\in L(G),w 称为GG 的一个句子
    • 句子ww 是从SS 开始,在GG 中可以推导出来的终极符号行,它不含语法变量
  • 句型
    • G=(V,T,P,S)G=(V,T,P,S),对于α(VT)\forall \alpha\in(V\cup T)^*,如果SαS\Rightarrow^*\alpha,则称α\alphaGG 产生的一个句型
    • 句型α\alpha 是从SS 开始,在GG 中可以推导出来的符号行,它可能含语法变量

# 文法的构造

  • 等价
    • 设有两个文法G1G_1G2G_2,如果L(G1)=L(G2)L(G_1)=L(G_2),则称G1G_1G2G_2 等价
  • 文法G=(V,T,P,S)G=(V,T,P,S) 约定
    • 一个文法的所有产生式中包含的符号,就是文法中所有可能有用的终极符号和非终极符号
    • 所列的第一个产生式的左部就是该文法的开始符号

# 文法的乔姆斯基体系

  • 文法G=(V,T,P,S)G=(V,T,P,S)

    • 短语结构文法(PSG):

      • GG 叫做 0 型文法,也叫做短语结构文法

      • L(G)L(G) 叫做 0 型语言。也可以叫做短语结构语言(PSL)、递归可枚举集

    • 上下文相关文法(CSG):

      • GG 是 0 型文法

      • 如果对于αβP\forall \alpha\rightarrow\beta\in P,均有βα\vert\beta\vert\ge\vert\alpha\vert 成立,则称GG 为 1 型文法,或上下文相关文法

      • L(G)L(G) 叫做 1 型语言或上下文相关语言(CSL)

    • 上下文无关文法(CFG):

      • GG 是 1 型文法
      • 如果对于αβP\forall\alpha\rightarrow\beta\in P,均有βα\vert\beta\vert\ge\vert\alpha\vert,并且αV\alpha\in V 成立,则称GG 为 2 型文法,或上下文无关文法
      • L(G)L(G) 称为 2 型语言或上下文无关语言(CFL)
    • 正则文法(RG):

      • GG 是 2 型文法
      • 如果对于αβP,αβ\forall\alpha\rightarrow\beta\in P,\alpha\rightarrow\beta 均具有形式Aw,AwBA\rightarrow w,A\rightarrow wB,其中A,BV,wT+A,B\in V,w\in T^+,则称GG 为 3 型文法,也可称正则文法或正规文法
      • L(G)L(G) 叫做 3 型语言,也可称为正则语言或者正规语言(RL)
  • 文法分类

    • GG 是短语结构文法
    • 如果所有产生式都有右边部分长度大于左边部分,那么GG 是上下文有关文法
    • 如果所有产生式的左边部分都是单个非终极符号,那么GG 是上下文无关文法
    • 如果所有产生式的右边部分都是以终极符号开始,且含有至多一个非终极符号(如果有非终极符号则出现在最右边),那么GG 是正则文法
    • 如果一个文法GGRGRG,则它也是CFG,CSGCFG,CSG 和短语结构文法,反之不一定成立
    • 如果一个文法GGCFGCFG,则它也是CSGCSG 和短语结构文法,反之不一定成立
    • 如果一个文法GGCSGCSG,则它也是短语结构文法,反之不一定成立
    • RLRL 也是CFL,CSLCFL,CSL 和短语结构语言。反之不一定成立
    • CFLCFL 也是CSLCSL 和短语结构语言。反之不一定成立
    • CSLCSL 是短语结构语言。反之不一定成立
    • 当文法GGCFGCFG 时,L(G)L(G) 却可以是RLRL
    • 当文法GGCSGCSG 时,L(G)L(G) 可以是RL,CFLRL,CFL
    • 当文法GG 是短语结构文法时,L(G)L(G) 可以是RL,CFL,CSLRL,CFL,CSL
  • 定理:LLRLRL 的充要条件是存在一个文法,该文法产生语言LL,并且它的产生形式要么是形如:AaA\rightarrow a 的产生式,要么是形如AaBA\rightarrow aB 的产生式。其中A,BA,B 为语法变量,aa 为终极符号

    • 证明:

      • 充分性:设有G,L(G)=LG^\prime,L(G^\prime)=L,且GG^\prime 的产生式的形式满足定理要求。这种文法就是RGRG。所以,GG^\prime 产生的语言就是RLRL, 故LL 就是RLRL

      • 必要性:

        • 构造:用产生式组:Aa1A1,A1a2A2,...,An1anA\rightarrow a_1A_1,A_1\rightarrow a_2A_2,...,A_{n-1}\rightarrow a_n 代替产生式Aa1a2...anA\rightarrow a_1a_2...a_n

        • 用产生式组Aa1A1,A1a2A2,...,An1anBA\rightarrow a_1A_1,A_1\rightarrow a_2A_2,...,A_{n-1}\rightarrow a_nB 代替产生式Aa1a2...anBA\rightarrow a_1a_2...a_nB

        • 证明L(G)=L(G)L(G^\prime)=L(G)

          对于AV,AG+xAG+x\forall A\in V,A\Rightarrow_G^+ x\Leftrightarrow A\Rightarrow_{G^\prime}^+x,因为SVS\in V,所以结论自然对SS 成立

  • 线性文法:

    • G=(V,T,P,S)G=(V,T,P,S),如果对于αβP,αβ\forall\alpha\rightarrow\beta\in P,\alpha\rightarrow\beta 均具有如下形式:Aw,AwBxA\rightarrow w,A\rightarrow wBx,其中A,BV,w,xTA,B\in V,w,x\in T^*,则称GG 为线性文法
    • 线性语言
      • L(G)L(G) 叫做线性语言
  • 右线性文法:

    • G=(V,T,P,S)G=(V,T,P,S),如果对于αβP,αβ\forall\alpha\rightarrow\beta\in P,\alpha\rightarrow\beta 均具有如下形式:Aw,AwBA\rightarrow w,A\rightarrow wB,其中A,BV,w,xTA,B\in V,w,x\in T^*,则称GG 为线性文法
    • 右线性语言
      • L(G)L(G) 叫做右线性语言
  • 左线性文法

    • G=(V,T,P,S)G=(V,T,P,S),如果对于αβP,αβ\forall\alpha\rightarrow\beta\in P,\alpha\rightarrow\beta 均具有如下形式:Aw,ABwA\rightarrow w,A\rightarrow Bw,其中A,BV,w,xTA,B\in V,w,x\in T^*,则称GG 为线性文法
    • 左线性语言
      • L(G)L(G) 叫做左线性语言
  • 定理:LL 是一个左线性语言的充要条件是存在文法GGGG 中的产生式要么是形如:AaA\rightarrow a 的产生式,要么是形如ABaA\rightarrow Ba 的产生式,使得L(G)=LL(G)=L。其中A,BA,B 为语法变量,aa 为终级符号

  • 定理:左线性文法和右线性文法等价

    • 对任意右线性文法GG,我们能构造出对应的左线性文法GG^\prime,使得L(G)=L(G)L(G^\prime)=L(G)
    • 对任意左线性文法GG,我们能构造出对应的右线性文法GG^\prime,使得L(G)=L(G)L(G^\prime)=L(G)
  • 定理:左线性文法的产生式与右线性文法的产生式混合所得到的文法不是RGRG

    • 证明:设有文法G15:S0A,AS11G_{15}:S\rightarrow0A,A\rightarrow S1\vert1
    • 不难看出,L(G15)={0n1nn1}L(G_{15})={\{}0^n1^n\vert n\ge1{\}}。我们构造不出RGGRG\ G,使得L(G)=L(G15)={0n1nn1}L(G)=L(G_{15})={\{}0^n1^n\vert n\ge1{\}}
    • 因为L(G15)L(G_{15}) 不是RLRL。所以G15G_{15} 不是RGRG

# 空语句

  • 形如AϵA\rightarrow\epsilon 的产生式叫做空产生式,也可以叫做ϵ\epsilon 产生式

  • 规定空语句不影响文法的类型

  • 定理:

    • 加入空语句不影响语言的类型
    • 去掉空语句不影响语言的类型