长度为 3 的字符串的 CFG

CFG for string of length 3

我正在尝试为以下语言创建上下文无关语法:

L={w∈{a,b}* | w is of the form a^nxb^n+2, where x is any string of length 3 in {a,b}*}

(a的n次方,b的n+2次方)

到目前为止我的解决方案是(_ 是 epsilon):

S -> aSbb |吨 | _

T -> aT | BT | _

但是这是不正确的,因为它接受字符串 abbb。我的问题是我不明白如何使 T 成为语法的一部分,我怎样才能将字符串的大小限制为 3?在{a,b}*中列出所有长度为3的字符串没有任何意义,还是这是唯一的方法?

此外,如果 aSbb 正确,我也不是 100% 有信心,因为我认为我的解决方案现在是 a^nxb^2n,还是我错了?

该语言的正确 CFG 是:

S -> aSb | T  
T -> UUUbb  
U -> a | b

谢谢大家的帮助!