我不知道我是否误解了正在发生的事情,或者维基百科的解释是否不正确。
FOLLOW(k,B)一个项目集k和一个非终结符B的集合是所有项目的后续集合的并集,K其中'•'后面是B。
他们的示例语法如下所示:
S → E
E → T
E → ( E )
T → n
T → + T
T → T + n
他们发现 LR(0) 项集 0 为:
[S → • E]
[E → • T]
[E → • ( E )]
[T → • n]
[T → • + T]
[T → • T + n]
这意味着,那FOLLOW(0,T)是项目集 0 中所有项目的后续集的并集,其中 '•' 后跟T。
应用他们的逻辑,我们得到“项目集 0 中的项目,其中 '•' 后跟T”实际上是这两个项目:
[E → • T][T → • T + n]
但是,这就是我卡住的地方:
第二个的后续集合包含符号),因为该项目[E → • ( E )]可以生产[E → • ( T )],这意味着 a)必须在后续集合中。
但是,维基百科说FOLLOW(0,T) = { $, '+' }.
我究竟做错了什么?