LR(0) 项的规范集合2025年3月17日 | 阅读 3 分钟 LR(0) 项是一个产生式 G,其中点位于产生式右侧的某个位置。 LR(0) 项用于指示在解析过程中,在给定点之前已经扫描了多少输入。 在 LR(0) 中,我们将规约节点放置在整行中。 示例给定文法 添加增广产生式,并在 G 中每个产生式的第一个位置插入 '•' 符号 I0 状态将增广产生式添加到 I0 状态并计算闭包 I0 = Closure (S` → •S)将以 S 开头的所有产生式添加到 I0 状态,因为 "•" 后跟非终结符。 因此,I0 状态变为 I0 = S` → •S 将以 "A" 开头的所有产生式添加到修改后的 I0 状态,因为 "•" 后跟非终结符。 因此,I0 状态变为。 I0= S` → •S I1= Go to (I0, S) = closure (S` → S•) = S` → S• 在此,产生式被规约,因此关闭状态。 I1= S` → S• I2= Go to (I0, A) = closure (S → A•A) 将以 A 开头的所有产生式添加到 I2 状态,因为 "•" 后跟非终结符。 因此,I2 状态变为 I2 =S→A•A Go to (I2,a) = Closure (A → a•A) = (与 I3 相同) Go to (I2, b) = Closure (A → b•) = (与 I4 相同) I3= Go to (I0,a) = Closure (A → a•A) 在 I3 中添加以 A 开头的产生式。 A → a•A Go to (I3, a) = Closure (A → a•A) = (与 I3 相同) I4= Go to (I0, b) = closure (A → b•) = A → b• 绘制 DFADFA 包含 7 个状态 I0 到 I6。 ![]() LR(0) 表
![]() 说明
产生式编号如下
下一个主题SLR 1 解析 |
我们请求您订阅我们的新闻通讯以获取最新更新。