[英]constructing CFG
如何为语言x ^ ay ^ bz ^ 2(a + b)构造一个上下文无关的Grammer,其中a> = 0,b> = 0。 感谢您的帮助...
这样想吧
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
观察到每个x
和每个y
,由于2( a + b ),需要生成两个z
。 另外,观察到每个字符串能够作为一个“内部”部分被看作y
的和z
的,和的‘外’部x
的和z
的。
由于每个y
需要两个z
,因此内部部分可以用(用大写字母表示非终结符,用[]
表示空字符串)来描述:
I --> []
I --> y I z z
现在以相同的方式为外部编写语法,但在基本情况下引用I
您实际上需要处理两种情况:
x
,在这种情况下,您需要在字符串的末尾添加两个z
。 y
,在这种情况下,您还需要在末尾添加两个z
。 尝试将这些描述中的任何一个简化为您知道解决方案的简单语法(例如a^nb^n
)。
这个提示应该足以推断出生成的语法。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.