如何构建语言 x ^ a y ^ b z ^ 2(a + b)的无上下文语法,其中a> = 0,b> = 0。 谢谢你的帮助...
答案 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>的)。另外,观察每个字符串可以被视为y
和z
的“内部”部分,以及x
和{{1}的“外部”部分}}的
因为每个z
你需要两个y
,所以内部部分可以用(大写字母表示非终端符号,z
表示空字符串):
[]
现在以相同的方式为外部部分编写语法,但在基本情况下引用I --> []
I --> y I z z
。
答案 2 :(得分:1)
您基本上需要处理两种情况:
x
,在这种情况下,您需要在结尾添加两个z
。y
,在这种情况下, 还需要在结尾添加两个z
。尝试将这些描述中的任何一个简化为更简单的语法(例如a^n b^n
),并为其了解解决方案。
这个暗示应该足以推断出生成语法。