Syntax 编译-LL1语法

Syntax 编译-LL1语法,syntax,compilation,compiler-construction,grammar,ll,Syntax,Compilation,Compiler Construction,Grammar,Ll,我正在研究编译器的魔力,但我不了解结果 以下是语法: S -> A # A -> B G D E B -> + | - | EPSILON C -> c C | EPSILON G -> c C D -> . C | EPSILON E -> e B G | EPSILON 当我试图找到第一组和第二组时,我得到的结果与使用在线预测器时得到的结果不同 以下是给出的结果: Non-terminal Symbol / Follow Set S

我正在研究编译器的魔力,但我不了解结果

以下是语法:

S -> A #
A -> B G D E
B -> + | - | EPSILON
C -> c C | EPSILON
G -> c C
D -> . C | EPSILON
E -> e B G | EPSILON
当我试图找到第一组和第二组时,我得到的结果与使用在线预测器时得到的结果不同

以下是给出的结果:

Non-terminal Symbol / Follow Set
     S                  $
     A                  #
     B                  c
     C               e, ., #
     G                 ., #
     D                 e, #
     E                   #
为什么G{e,,}的follow集不是? 因为我理解的是,根据A规则,D跟随G,所以我们加上。,但它也可能是ε,所以我们移动到E,它可以是E,但它也可能是ε,所以我们移动到,关于S规则

我错过了什么


我在

使用了工具,您对以下G集的计算是正确的

黑客工具有问题。下面是一个显示相同错误的较短语法:

S -> a B C a
B -> b
C -> EPSILON
很明显,a在B的FOLLOW集合中,但工具报告该集合为空。

谢谢。我曾经