构建CFG

时间:2011-04-26 13:19:49

标签: context-free-grammar formal-languages

如何构建语言 x ^ a y ^ b z ^ 2(a + b)的无上下文语法,其中a> = 0,b> = 0。 谢谢你的帮助...

3 个答案:

答案 0 :(得分:3)

以这种方式思考

x^a y^b z^2(a+b) = x^a y^b z^2a z^2b = x^a y^b (z^2)^b (z^2)^a 

因此

S -> xSzz | S1
S1 -> yS1zz | e

答案 1 :(得分:2)

对于每个x和每个y,您需要生成两个z,因为2( a + b'/ em>的)。另外,观察每个字符串可以被视为yz的“内部”部分,以及x和{{1}的“外部”部分}}的

因为每个z你需要两个y,所以内部部分可以用(大写字母表示非终端符号,z表示空字符串):

[]

现在以相同的方式为外部部分编写语法,但在基本情况下引用I --> [] I --> y I z z

答案 2 :(得分:1)

您基本上需要处理两种情况:

  • 您可以在字符串的开头添加x,在这种情况下,您需要在结尾添加两个z
  • 或者您可以在中间添加y,在这种情况下, 还需要在结尾添加两个z

尝试将这些描述中的任何一个简化为更简单的语法(例如a^n b^n),并为其了解解决方案。

这个暗示应该足以推断出生成语法。