Parsing 是维基百科';LR(1)解析中FOLLOW()集的示例错误?

Parsing 是维基百科';LR(1)解析中FOLLOW()集的示例错误?,parsing,language-agnostic,lr,Parsing,Language Agnostic,Lr,我不知道我是否误解了发生的事情,或者维基百科的解释是否不正确 : FOLLOW(k,B)一个项目集k和一个非终结B是k中所有项目的FOLLOW集的并集,其中“•”后跟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)是项

我不知道我是否误解了发生的事情,或者维基百科的解释是否不正确

:

FOLLOW(k,B)
一个项目集
k
和一个非终结
B
k
中所有项目的FOLLOW集的并集,其中
“•”
后跟
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中所有项目的FOLLOW集合的并集,其中“•”后跟
T

应用它们的逻辑,我们得到“项目集0中的项目,其中“•”后跟
T
”实际上是这两个项目:

  • [E→ • T] 
  • [T→ • T+n]
然而,这正是我陷入困境的地方:
第二个的以下集合包括符号
,因为项目
[E→ • (E)]
可以产生
[E→ • (T)
,这意味着
必须在以下集合中

然而,维基百科说
遵循(0,T)={$,'+'}


我做错了什么?

我在这本书中找到了“沃沙尔闭包算法”的描述

我想在这里有所帮助。(总的来说,我发现这本书比那些更著名的编译器设计书籍更具可读性和实用性!)

可能还有其他关于算法的好描述

编辑:我有些生疏,但我相信维基百科的文章在这方面是正确的:

记住这是
遵循(0,T)

现在你显然是对的,在某些情况下“)”可以跟在T后面

但是,不是从0开始。。。这意味着一个形式为
n)
n+n)
n+n+n)
的表达式,以这种方式明确写出,是明显的语法错误

(我真的很喜欢这本书,那就是把这些东西明确化,而不是把它们埋在数学符号中!)