[英]BNF grammar that generates language L
如果x
是y
子字符串(可能不合适),则x^rcy
可以写成x^R c wxz
,其中w
和z
是(a+b)*
上的任意字符串。
现在,我们可以尝试以这种语言对字符串进行“切片”,以查看CFG如何生成它们。 此操作的非常规部分是确保x^R
和x
正确显示; 其余的都是微不足道的。 因此,我们需要一些规则,例如:
S -> aXa | bYb | c
这给我们x^R cx
。 我们缺少w
和z
。 我们可以通过在c
之后添加任意字符串来添加w
:
S -> aSa | bSb | cA
A -> aA | bA | e
我们可以通过将S
更改为T
并添加一个新的S
来生成z
,该S
产生T
后跟任何内容:
S -> TA
T -> aTa | bTb | cA
A -> aA | bA | e
我们忽略的只是确保|x| > 1
|x| > 1
。 为此,我们将T -> cA
更改为两个产品T -> acAa | bcAb
T -> acAa | bcAb
。 这产生了建议的语法(不是唯一正确的语法,只是一种有效的语法)并解释了我们如何到达那里。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.