正规文法和正规式

一个正规语言可以由正规文法定义,也可以由正规式定义,对任意一个正规文法,存在一个定义同一个正规语言的正规式;反之,对每个正规式,存在一个生成同一语言的正规文法,有些正规语言很容易用文法定义,有些语言更容易用正规式定义,现在介绍两者间的转换,从结构上建立它们的等价性。

  1、将Σ上的一个正规式转换成正规文法G=(VN,VT,P,S)。令其中的VT=Σ,确定产生式和VN的元素的办法在右页描述。

  对任何正规式r,选择一个非终结符S生成产生式S→r,为区别文法中的产生式,把这个产生式叫做正规产生式,并将S定为G的识别符号。

  若x和y都是正规式,对形如A→xy的正规产生式,重写成:A→xB,B→y两个正规产生式,其中B是新选择的非终结符,即B∈Vn

  对已形成的形如A→x*y的正规产生式,重写为:

  A→xB

  A→y

  B→xB

  B→y 其中B为一新非终结符。

  对形如A→x|y的正规产生式,重写为:

  A→x,A→y

  不断利用上述规则做变换,直到每个产生式都符合三型文法的要求。  例4.9

  将R=a(a|d)*转换成相应的正规文法,令S是文法的开始符号,首先形成

  S→a(a|d)*,然后形成S→aA和A→(a|d)*,再重写第二条产生式形成

  S→aA  A→(a|d)B,

  A→ε  B→(a|d)B和

  B→ε

  进而变换为

  S→aA  B→aB

  A→aB  B→dB

  A→dB  B→ε  A→ε即为所求。

  2、将正规文法转换成正规式。基本上是上述过程的逆过程,最后只剩下一个开始符号定义的产生式,并且该产生式的右部不含非终结符

 

例4.10

  文法G[S]

  S→aA  S→a  A→aA  A→dA  A→a  A→d

  先有:

  S=aA|a

  A=(aA|dA)|(a|d)

  再将A的正规式变换为A=(a|d)A|(a|d),据表中规则2变换为:A=(a|d)*|(a|d),再将A 右端代入S的正规式得:S=a(a|d)*|a(a|d)|a

  再利用正规式的代数变换可依次得到

  S=a((a|d)*|(a|d)|ε)

  S=a(a|d)*

  即a(a|d)*为所求。

  总结:文法和语言

  0型文法产生的语言称为0型语言

  1型文法或上下文有关文法(CSG)产生的语言称为1型语言或上下文有关语言(CSL)

  2型文法或上下文无关文法(CFG)产生的语言称为2型语言或上下文无关语言(CFL)

  3型文法或正则(正规)文法(RG)产生的语言称为3型语言正则(正规)语言(RL)

  四种文法之间的关系 是将产生式做进一步限制而定义的。

  语言之间的关系依次:有不是上下文有关语言的0型语言,有不是上下文无关语言的1型语言,有不是正则语言的上下文无关语言。

  总结:文法和识别系统的关系

  0型文法(短语文法)的能力相当于图灵机,可以表征任何递归可枚举集,而且任何0型语言都是递归可枚举的。

  图灵机

  1型文法(上下文有关文法):相应识别系统是线性界限自动机。

  2型文法(上下文无关文法):相应识别系统是不确定的下推自动机。

  3型文法(正规文法、右线性文法):相应识别系统是有穷自动机。

 

正规文法和正规式 - 飞鹰 - feiying00544的博客

 

正规文法和正规式 - 飞鹰 - feiying00544的博客

 

正规文法和正规式 - 飞鹰 - feiying00544的博客

 

正规文法和正规式 - 飞鹰 - feiying00544的博客

 

  • 9
    点赞
  • 46
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值