【发布时间】:2017-05-15 01:37:06
【问题描述】:
我正在研究编译器的魔力,但我不明白结果。
语法如下:
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,它可以是a e,但也可能是EPSILON,所以我们根据 S 规则移动到 #。
我在这里错过了什么?
我在http://hackingoff.com/compilers/predict-first-follow-set使用了这个工具
【问题讨论】:
标签: syntax compilation compiler-construction grammar ll