我对 LALR(1) 解析器的前瞻计算有点困惑。
在“解析技术 - 实用指南”一书中,他们指出传播前瞻(+自发生成的前瞻)等同于计算变量的 FOLLOW()。那么为什么 LALR(1) 解析器(根据 Dragon 的书)完全使用传播/自发技术,如果它可以使用 FIRST() 和 FOLLOW(),它们计算简单直接?
如果不是这种情况,这两种技术有什么区别?
在编译器的设计和构造中找到了一个很好的解释
简而言之,LALR(1) 中的前瞻集只是 FOLLOW() 的一个子集。它是通过传播技术计算的。