我正在尝试为以下内容创建 CFG:
L = {az n |a ∈ {x, y}* 并且 n = a 中 x 的数量或 a 中 y 的数量}
我不知道如何或从哪里开始。
我理解语言描述是一个 x 和 y 的字符串,后跟一个 z 的字符串,z 的数量必须与 x 或 y 相同。
例子:{xxyxyyxxyzzzzz, yxyxyxyyyzzzzzz, etc...}
这是我的“最佳”解决方案:
S => xSz | ySz | ϵ
我知道这是错误的,因为 z 产生相同数量的 x 和 y 组合,而不是单独产生 x 或 y。
编辑:
我认为这是答案,但我不确定。它似乎工作。
S => xSz | ySz | xS | yS | ϵ
编辑:
好吧,那是行不通的,因为它也接受无效的字符串...