了解CFG的基础知识

understanding basics of CFG

刚开始看Sipser书中关于CFL的那一章,基础知识还没看懂。

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

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

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

Any S 是任何 A 的任何选项,后跟单个文字 0,然后是 A 的另一个选项。每个 A 都是独立的。

字符串 00011 是语言,因为您可以选择两个 A(例如),第一个是 00A,第二个是 11A。如果您递归地为两个 "remaining" A 选择空字符串 (e),当您连接所有内容时,您将得到字符串 00011.

你可以做类似的事情来获取字符串000

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

S先转化为A,再转化为0,再转化为A。也就是说,S转化为偶数位二进制数,再转化为0,再转化为偶数位二进制数。即S是中间为0的任意奇数二进制数序列

Does it mean that the left hand side from 0 should be always the same as the right hands side.

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