繁体   English   中英

为CFL编写GNF语法

[英]Writing GNF grammar for a CFL

您好我想问你这个问题。

我应该用Greibach Normal Form计算(手动)语法,生成语言

L = {a i b j c k | i + j = 2k and k >= 1}

我真的不知道。 有人可以帮帮我吗?

提前致谢
CHRISS

上下文免费语法CFG为您的语言L a = {a i b j c k | i + j = 2k and k >= 1} L a = {a i b j c k | i + j = 2k and k >= 1}

以下是语言L = {a i b j c k | i + j = k and k >= 1}答案 L = {a i b j c k | i + j = k and k >= 1}

CFG:

S --> aAc | bBc |
A --> aAc | B   |  ^
B --> bBc | ^ 

什么是GNF?

CFG的一个重要形式是Greibach Normal Form GNF:

   A --> aα   
   Where α ∈ V* (any number of variables including zero)

注意: nul ^不能是任何生产接受开始符号S RHS上的符号,如果S --> ^是语法生成则S不能出现在语法中任何其他生成的RHS上。

任何CFG都可以用GNF格式编写。

如何在GNF中转换CFG?

我在上面写的CFG中的注释有n个产品A --> ^B --> ^和一个单位产品A --> B GNF形式不允许单位制作和零制作。 虽然其他作品可以通过GNF制作中的语法简单地以GNF形式书写,例如S --> aAc可以重写为S --> aAC and C --> c

所以下面我将重写相当于语言的CFG并删除称为简化CFG的零和单元制作。

简化CFG:

S --> aAc | bBc | ac | bc
A --> aAc | bBc 
B --> bBc | bc

现在,通过引入新的GNF生产C --> c并在其他生产规则中用C替换c ,这个语法很容易转换成GNF形式。

语言L的GFN:

S --> aAC | bBC | aC | bC
A --> aAC | bBC 
B --> bBC | bC
C --> c

我写错了语法,我会更新语言L a答案

编辑

L a = {a i b j c k | i + j = 2k and k >= 1} L a = {a i b j c k | i + j = 2k and k >= 1}

CFA for L a

S --> aaAc | bbBc | abBc
A --> aaAc | B    | abBc |  ^
B --> bbBc | ^ 

简化CFG:

S --> aaAc | bbBc | abBc | aac | bbc | abc 
A --> aaAc | bbBc | abBc | aac | abc
B --> bbBc | bbc 

GFN语言L a

添加三个新的生产规则: X --> aY --> bZ --> c

更改程序员并按变量替换终端:

S --> aXAZ | bYBZ | aYBZ | aAZ | bYZ | aYZ  
A --> aXAZ | bYBZ | aYBZ | aXZ | aYZ
B --> bYBZ | bYZ
X --> a
Y --> b
Z --> c

关于以下答案回答CFG La = {ai bj ck | i + j = k and k >= 1} La = {ai bj ck | i + j = k and k >= 1}是错误的

您的简化CFG:

S --> aAc | bBc | ac | bc . A --> aAc | bBc . B --> bBc | bc .

因为上面的语言L = {ai bj ck | i + j = k and k >= 1} L = {ai bj ck | i + j = k and k >= 1}生成语言aabccc但您的Simplified CFG不生成它。

对,CFG是

简化的CFG

S --> aAc | bBc | ac | bc A --> aAc | bBc | bc | ac B --> bBc | bc

纠正它,第二语言有同样的问题。

谢谢!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM