为以下语言提供上下文无关语法。
(a) {a^mb^nc^n | m ≥ 0 and n ≥ 0 }
(b) {a^nb^nc^m | m ≥ 0 and n ≥ 0 }
如果涉及任何其他规则,例如m = n或类似的东西,我可以得到它,但是一般m大于或等于零?我很困惑。而且我也不明白a和b会有什么不同。 以下是我用这个语法制作语法的方法:
S1 --> S2 | e
S2 --> aS2bS2c | S3
S3 --> aS3 | S4
S4 --> bS4 | S5
S5 --> cS5 | c
答案 0 :(得分:1)
a^mb^n
m 重复a
,然后 n 重复b
?看起来你复制粘贴了一个作业,甚至忽略了将它格式化为可在本网站上阅读。
假设我正确阅读,继续......
关键是(在第一语言中)b
和c
重复相同的次数。当您与b
匹配时,您必须同时匹配c
。与此子序列匹配的产品将是
S1 => e
S1 => b S1 c
请注意,这里有两种语言,因此您需要两个答案。您不会被要求使用一种语法来处理这两种语言。 (在 n = m )的情况下,主要问题是模糊不清。