我正试图了解上下文无关语法,我想我已经接近了。令我困惑的是这个问题(我正在做练习题,因为我有一个月的考试时间):
我想出了这种语言,但我认为它是错误的。
S --> aSb | A | B
A --> aA | Σ
B --> bB | Σ
显然这是正确的解决方案:
S --> aSb | aA | bB
A --> aA | Σ
B --> bB | Σ
我不太明白的是为什么我们有S --> aSb | aA | bB
而不只是S --> aSb | A | B
. 终端需要什么?我不能只打电话给 A 并以这种方式抓住我的终端吗?
测试是否可以生成字符串:aaabbbb
S --> aSb --> aaSbb --> aaaSbbb --> aaaBbbb --> aaabbbb
我相信我正确地生成了字符串,但我不太确定。我告诉自己,原因S --> aSb | aA | bB
是如果我们从 开始aA
然后替换A
为a
,我们有两个a
' ,因为它们不相等,所以我们得到了正确的字符串,这也可以用 b 来完成。任何意见是极大的赞赏。
进入元组(G-4-tuple)
V (None terminal) = {A, B}
Σ (Terminals) = {a, b}
P = { } // 不太清楚如何用 R 表达我的解决方案?我必须使用测试字符串吗?
S = A