我有以下CFG规则:
我正处于算法的epsilon消除阶段,我已经消除了以下eplsions C - > epsiolon,B - > epsilon,这是我到目前为止所得到的:
- S_0 - >小号
- S - > BSA | SA |小量
- A - > abC | a | ç| AB
- B - > baC | b | BA
- C - > aCc | AB | AC |一个 我是否也应该消除S-> epsilon(以粗体显示),因为S是原始的起始变量?
我是否还应该在算法的单位规则阶段将epsilon复制到S_0?
答案 0 :(得分:1)
我是你的第一个语法,你可以从epsilon
派生S
。所以空单词属于所描述的语言。因此,您必须在第二个等效语法中有epsilon
。
现在采用普通形式语法,当存在推导S -> epsilon
时,S
不能出现在推导的右侧。所以规则
S -> BSA | SA | epsilon
是不允许的是乔姆斯基普通形式。所以你可能想要一些东西
S_0 -> S | epsilon // initial
S -> BA | A | BSA | SA
[...]