如何在CNF中找到这种语法

时间:2013-11-09 15:36:28

标签: context-free-grammar

我需要帮助解决CNF的语法:S->SS|(S)|e

我看了将它送到CNF的步骤,但我的问题是如何解决它的语法与()因为语法变得非法

任何人。

1 个答案:

答案 0 :(得分:0)

这应该是CNF中的等效语法:

S -> SS|CB|e
A -> (
B -> )
C -> AS
语法S -> SS|(S)|ε

修改 CNF的第一步是删除ε(简化以删除冗余规则)

S -> SS|S|(S)|()

下一步是删除单位制作。在这种情况下,您只有一个生产规则,因此我们可以放弃UP,因为它只会添加冗余规则。

S -> SS|(S)|()

最后一步是添加生产规则以遵守CNF(单个终端或正好2个变量):

S -> SS|CB|AB
A -> (
B -> )
C -> AS

请记住,CNF会从语法生成的语言中删除“ε”。否则语法等同于原文。