为语言建立语法

时间:2019-01-09 16:46:05

标签: automata

L = {a^i b^j c^k | not(i=j=k)}

提示:将L描述为其他语言的组合

我已经尝试这样做了大约一个星期,但现在做不到。有人可以帮我理解吗?

编辑:

说对了吗?

(i≠j or j≠k)(i≠j and j≠k and i≠k)

1 个答案:

答案 0 :(得分:0)

  

是说(i≠j或j≠k)还是(i≠j和j≠k以及i≠k)

说这没错,但这远远超出您的需要。真的,您需要说的只是第一部分:

  

(i≠j或j≠k)

如果第一部分还不是真的,那么第二部分就不可能成立。从这里,我们可以进一步分解:

  

i j或j k

这是四种非常基本的上下文无关语言的结合。如果您分别以开始符号S1,S2,S3和S4分别获得语法G1,G2,G3和G4,则可以添加新的开始符号S和产生式S-> S1 | S2 | S3 | S4为他们的并集获得语法。