构建无上下文语法

时间:2014-06-12 18:38:00

标签: context-free-grammar formal-languages context-free-language

所以,我有这种语言L={a^i b^2j+1 / i<>j},我必须基于它生成一个无上下文语法,你能不能帮我说明这样做的步骤。

到目前为止,我有这个:

    S-->aS/aBbb
    B-->bB/b/e(empty)

但我不确定它是否正确,请帮助我理解。

1 个答案:

答案 0 :(得分:2)

对于&#34;不等于&#34;的语言限制,最简单的方法通常是首先找到与语言相对应的语法,使用&#34;等于&#34;改为限制,然后将其更改为需要更多其中一项。

在这种情况下,我们有许多a个令牌,后跟奇数个b令牌,其中约束是每个令牌的数量。对于相同的情况,那就变成了

S→aSbb | B'/ P>

一个b ab s和a对包围着它。

为了使它不相等,我们需要添加额外的B s或额外的{{1}}对,但不能同时添加两者:

S→AS&#39; | S&#39;乙
S&#39; →aS&#39; bb | b
A→Aa |一个
B→Bbb | BB