了解CFG的基础知识

时间:2016-05-14 21:04:48

标签: context-free-grammar computation-theory context-free-language

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

让这成为某种语言的语法:

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

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

2 个答案:

答案 0 :(得分:0)

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

字符串00011使用该语言,因为您可以选择两个A(例如),使第一个00A,第二个11A }。如果您为两个“剩余的”e递归地选择空字符串(A),那么当您连接所有内容时,您将最终使用字符串00011

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

答案 1 :(得分:0)

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

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

  

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

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