在这个旧的考试问题中,我需要将语法转换为CNF,但我怀疑所提供的解决方案是错误的。
语法:
S -> aAB|a|aA|aB|AbB|b|Ab|bB
A -> aA|a|cC|c
B -> bB|b|dD|d
C -> cC|c
D -> dD|d
在第一步中,我为四个终端设置变量:
V -> a
X -> b
Y -> c
Z -> d
在第二步中,我用变量替换终端(现在只用S中的产品):
S -> VAB|a|VA|VB|AXB|AX|XB
在第三步中,我将VAB中的AB替换为U -> AB
,所以我得到:
S -> VU|a|VA|VB|AXB|AX|XB
在解决方案中,我不明白S-productions AbB和bB(我已经设置为AXB和XB)发生了什么。这是S-productions提供的答案:
S → VU|a|VA|VB|UX|b|AX|BX
为什么AbB设置为UX而bB设置为BX?不应该至少将bB设置为XB吗?