我试图为以下语言创建无上下文语法:
L = {w∈{a,b} * | w的形式为^ nxb ^ n + 2,其中x是任何字符串 {a,b} *}
中的长度为3
(a升至n的幂,b升至n + 2的幂)
到目前为止我的解决方案是(_是epsilon):
S - > aSbb | T | _
T - > aT | bT | _
然而这是不正确的,因为它例如接受字符串abbb。我的问题是我不明白如何制作语法的T部分,我怎样才能将字符串限制为3的大小?在{a,b} *中列出长度为3的所有字符串是没有意义的,还是唯一的方法?
如果aSbb是正确的,我也不会100%自信,因为我认为我的解决方案现在是^ nxb ^ 2n,或者我错了?
答案 0 :(得分:0)
该语言的正确CFG是:
S -> aSb | T
T -> UUUbb
U -> a | b
感谢大家的帮助!