形式语言与自动机 4.上下文无关语言

这种语言的开始是回文:

就是对称的。

如何表示这种语言?:

图穷匕见,开始派生了:

正式定义:

一些习惯的符号:

归约与派生:

 

概念很简单,符号记一下。

最左和最右派生:

现在只是有了产生的过程,我们要的语言就是产生的字符串:

点题了点题了。

语法分析树:

可以直接从树上看出来。

歧义性:

这个不要求掌握。

文法的化简与范式:

可达与产生:

注意注意:a,B是“终结符或变元组成的字符串”,X是“终结符或非终结符”。S可以到X,那X就是可达的(可以从S到达);X可以到w,就是产生的(可以产生w)。

 简单的判断:

 2:a都是产生的,那A可以先派生成a,在派生成w,那A也就是产生的了

4:A可达,然后再由A派生a,那a也就是可达的了。

总而言之,产生是倒着推的,可达是正着推的。

 先看能不能产生w,再看能不能从S达到。

必须先消除非产生的,再消除非可达的:

消除无用符号已经完成了,现在来看消除空串产生式。

 那一杠是减号。

 

这里解释一下,A->空不是说只能是空,是可以为空。所以A->X1X2……然后后面的全可空不代表只有空串一条路。现在不许直接变空串了,但是原来的X1->a这样的合法生意还得做呀,而且X1X2这些可空也就说明了A->X1这样的变法是存在的,这样有没有产生空串,也要保留,于是就有了这样的规律。

这样一看,只有空串受伤的世界完成了。

空串产生式已经解决了,接下来就是单元对。 

 

这里举个例子:

 为什么S只能代替左边的变元呢?因为是S->A而没有A->S,二者不是互换的地位。我们替换左边的实际上是S->A->0A|0简化成S->0A|0,不能推出S-0S|0吧?

最后我们习得了三种消除的方法,那么要以怎样的顺序使用这些方法呢?:

文法的规范表示形式:

先来学乔姆斯基:

如何把普通的CFG变成乔姆斯基CFG? 

这里详细解释一下:A->X1X2...的形式,当然中间有可能会有终结符,这里Ca的作用就是把他变回变元。变成B1B2...之后(因为之前至少有一个是变成了终结符的,所以M>=3),D的作用就是递推,一步一步地展现A变成B1B2...的过程。

 例子:

格雷巴赫范式:

没错,就这么简单,只要用已有的表达式改一下就可以了。 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值