阅读 188

预测解析算法并计算以下语法的 FIRST 和 FOLLOW S → L = R S → R L →* R L → id R → L

解决方案

FIRST 的计算

  • S → L = R

∵ L 不导出 ε。根据 FIRST 规则 (4b)

∴ FIRST(S)= { FIRST(L)} (1)

  • S→R

∵ R 不导出 ε。根据 FIRST 规则 (4b)

∴ FIRST(S)= { FIRST(R)} (2)

  • L →* R

应用 FIRST 规则 (3)

FIRST(L) = {*} (3)

  • L → id

应用 FIRST 规则 (3)

FIRST(L) = {id} (4)

  • 右 → 左

应用 FIRST 规则 (4b)

FIRST(R)= { FIRST(L)} (5)

结合 (1) 到 (5) 语句

FIRST(L) = {*, id}

FIRST(S)= { FIRST(L)}

FIRST(R)= { FIRST(L)}

FIRST(S)= { FIRST(R)}

∴ FIRST(L)= FIRST(S)= FIRST(R)= {*, id}

FOLLOW的计算

S → L = R

S→R

L →∗ R

L → id

右 → 左

应用 FOLLOW 的规则 (1)

跟随 (S) ={$} (1)

S → L = R

应用 FOLLOW 规则 (2)

S →εL= R
A →αBβ

∵ FIRST(β) = FIRST(= R) = {=} 不包含ε。

∴FOLLOW的规则(2a)

∴ FOLLOW(L)= {=} (2)

应用 FOLLOW 规则 (3)

S →L =R
A →α

∴ FOLLOW(R)= { FOLLOW(S)} (3)

  • S→R

我们不能在这个产生式上应用规则(2)作为 A →


文章分类
代码人生
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐