我正在研究编译器的魔力,我不理解结果。
这是语法:
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,。,#}? 因为我的理解是根据A规则,D跟随G,所以我们添加。,但它也可能是EPSILON,所以我们移动到E,它可以是ae,但它也可能是EPSILON,所以我们按照S规则转到#。
我在这里缺少什么?
使用了该工具答案 0 :(得分:1)
你对G的FOLLOW集的计算是正确的。
黑客入侵工具很麻烦。这是一个较短的语法,表现出同样的错误:
S -> a B C a
B -> b
C -> EPSILON
显而易见a
位于B
的FOLLOW设置中,但工具报告设置为空。