[英]understanding basics of CFG
刚刚开始撰写Sipser的书中有关CFL的章节,已经不了解其基础知识。
让这成为某种语言的语法:
S -> A0A
A -> 00A | 11A | 10A | 01A | e
我对这个A0A部分感到非常困惑。 这是否意味着从0开始的左侧应始终与右侧相同。 这是否意味着00011或000不是这种语言的?
任何S
是您对任何A
都有的任何选项,其后是单个文字0
,然后是A
另一个选项。 每个A
是独立的。
字符串00011
是该语言的语言,因为您可以选择两个A
,例如,第一个为00A
,第二个为11A
。 如果递归地为两个“剩余” A
s选择空字符串( e
),则在将所有内容连接在一起时,最终将得到字符串00011
。
您可以执行类似的操作来获取字符串000
。
A转换为空,或者转换为两个二进制数字,然后转换为A。这意味着A转换为任何偶数个二进制数字序列。
S转换为A,然后转换为0,然后转换为A。这意味着S转换为二进制数的偶数,然后转换为0,然后转换为偶数。 也就是说,S是中间为0的任何奇数个二进制数字序列。
这是否意味着从0开始的左侧应始终与右侧相同。
没有为什么? 两个不同的A可以转换为不同的序列。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.