如何为语言x^ay^bz^2(a+b)其中 a>=0, b>=0 构建上下文无关语法。感谢您的帮助...
问问题
662 次
3 回答
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
于 2011-04-26T13:27:41.633 回答
2
请注意,对于 eachx
和 each ,由于 2( a + b ) y
,您需要生成两个's。此外,请注意每个字符串可以被视为 's 和 's 的“内部”部分,以及' s和's 的“外部”部分。z
y
z
x
z
因为对于每个y
你需要两个z
',内部部分可以描述为(使用大写字母表示非终结符号和[]
空字符串):
I --> []
I --> y I z z
现在以相同的方式为外部部分编写语法,但I
在基本情况下引用。
于 2011-04-26T13:29:34.237 回答
1
基本上有两种情况需要治疗:
- 您可以
x
在字符串的开头添加一个,在这种情况下,您需要z
在末尾添加两个。 - 或者你可以
y
在中间添加一个,在这种情况下你还需要在z
最后添加两个。
尝试将这些描述中的任何一个简化a^n b^n
为您知道解决方案的更简单的语法(例如)。
这个提示应该足以推导出生成语法。
于 2011-04-26T13:28:04.630 回答