我有这个语法
E -> E + i
E -> i
增强语法
E' -> E
E -> E + i
E -> i
现在我尝试扩展项目集 0
I0)
E' -> .E
+E -> .E + i
+E -> .i
然后,既然我有.E
,I0
我会扩展它,但我会得到另一个E
规则,依此类推,这是我的第一个疑问。
假设这没问题,下一个项目集是
I0)
E' -> .E
+E -> .E + i
+E -> .i
I1) (I moved the dot from I0, no variables at rhs of dot)
E' -> E.
E -> E. + i
E -> i.
I2) (I moved the dot from I1, no vars at rhs of dot)
E -> E +. i
I3) (I moved the dot from I2, also no vars)
E -> E + i.
然后我会有这个DFA
I0 -(E, i)-> I1 -(+)-> I2 -(i)-> I3
| |
+-(∅)-> acpt <-(∅)--+
我错过了一些东西,因为E -> E + i
必须接受i + i + ..
但 DFA 不会回到 I0,所以对我来说这似乎是错误的。我的猜测是它应该有一个 I0 到 I0 的转换,但是我不知道这与点有关。