0

刚刚开始在 Sipser 的书中关于 CFL 的章节,并且已经无法理解基础知识。

假设这是某种语言的语法:

S -> A0A 
A -> 00A | 11A | 10A | 01A | e

我真的对这个 A0A 部分感到困惑。这是否意味着从 0 开始的左侧应该始终与右侧相同。这是否意味着 00011 或 000 不是这种语言?

4

2 回答 2

0

AnyS是您对 any 的任何选项A,后跟单个文字0,然后是A. 每个A都是独立的。

该字符串00011在语言中,因为您可以选择两个As(例如),使第一个是00A,第二个是11A。如果你递归地e为两个“remaining”选择空字符串()A,当你连接所有东西时,你最终会得到字符串00011

您可以执行类似的操作来获取字符串000

于 2016-05-14T21:21:30.630 回答
0

A 转换为空或两个二进制数字然后 A。这意味着 A 转换为任何偶数二进制数字序列。

S 转换为 A,然后是 0,然后是 A。这意味着 S 转换为偶数个二进制数字,然后是 0,然后是偶数个二进制数字。也就是说,S 是任意奇数个二进制数字的序列,中间为 0。

这是否意味着从 0 开始的左侧应该始终与右侧相同。

没有为什么?两个不同的 A 可以转换为不同的序列。

于 2016-05-14T21:29:51.253 回答