LL1首先遵循规则

时间:2012-08-21 15:05:16

标签: parsing grammar context-free-grammar recursive-descent compiler-construction

我正在寻找为LL(1)语法构建一个解析表,这一切都有意义吧?

跟随设定接缝冲突的规则。

•对于每个生产X→αAβ,将FIRST(β) - {€}放在FOLLOW(A)中 •如果€在FIRST(β)中,则将FOLLOW(X)置于FOLLOW(A)

他们是规则1和2(3不是问题)。

如果该生产规则尚未符合规则1的条件,您如何实施规则2?

有人可以解释哪条规则适用于哪里?

1 个答案:

答案 0 :(得分:1)

第一条规则说你把所有东西都放在FIRST(β)中,除了epsilon,如果跟随集合在A的跟随中包含它.ε不应该存在,因为A跟随后是不合法的什么都没有。

第二条规则说,如果β可以是epsilon,那么跟随X的所有东西也是A的合法跟随,因为β可以从任何东西得到。

规则并不相互排斥。您需要在每个生产中应用所有规则,这与生产符合规则1的情况不同,然后您不运行规则2.您将运行所有规则,直到FOLLOW设置稳定并且不再添加任何内容。