2015-11-04 72 views
0

考虑语言{anbmcp | n <= p OR m <= p},为此语言创建一个CFG。
我已经开始使用S -> aA | aB,但我不确定应该如何去定义A或B.“OR”似乎很难融入到语言的定义中,因为似乎没有必要同时跟踪n和m并进行比较他们反对p,但我不知道我想跟踪哪一个为语言生成CFG

回答

1

为了保持这个约束,对于每个'a'你需要添加一个'c'。同样,对于每个'b'你都应该添加'c'。

A -> aAC | aC | B

B -> bB | bC

C -> cC | c

我可能是错在这里。但这就是你在创建CFG时应该考虑的方法。