我想将语法改为乔姆斯基范式(CNF)。
这是示例
S--> AB | ɛ
A--> aASb | a
B--> bS
我试着解决这个问题
S --> [A] [B]
[A] --> [aA] [Sb] | [a]
[aA] --> [a] A
[Sb] --> s [b]
[a] --> a
[b] --> b
我不确定答案。有人可以告诉我它是对还是错?
答案 0 :(得分:1)
一个错误是你删除了S --> ɛ
转换。您需要(CNF特别允许S --> ɛ
,即使AnyNonTerminalOtherThanS --> ɛ
不是)。
然后规则[A] --> [a]
应为[A] --> a
,因为如果您在RHS上只有一个项目,那么它必须是终端。
[aA] --> [a] A
[Sb] --> s [b]
这两个似乎是拼写错误,因为A
和s
不存在。你可能意味着:
[aA] --> [a] [A]
[Sb] --> [S] [b]
除此之外,你所拥有的是正确的。