微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

context-free-grammar – 如何在FOLLOW集中删除循环依赖

考虑一下简短的语法

S -> Bc | DB
B -> ab | cS
D -> d | epsilon

第一组是

FirsT(S) ={a,c,d}
FirsT(B) = { a,c }
FirsT(D)= { d,epsilon }

在它里面

Follow(S)={ Follow(B) }

Follow(B) ={ c,Follow(S) }

我的问题是如何解决这个循环依赖?

解决方法

这种循环依赖不应该从那里开始.这是找到’follow’的算法:

初始化所有关注组到{},除了S是init到{$}.
虽然有变化,但每个A∈V都有:
对于每个Y→αAβ做:
跟随(A)=跟随(A)∪第一(β)
如果β⇒*ε,也可以:跟随(A)=跟随(A)∪跟随(Y)

所以在你的情况下,你应该得到:按照(S)= {C,$}跟随(B)= {C,$}按照(d)= {A,C}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐