对于编译器类,我们获得了以下用于查找FOLLOW(A)的规则:
α
我们还获得了关注(A)的非正式定义: 能够以句子形式立即跟随A的终端集。
为什么第三条规则是真的?
我理解如何应用第三条规则,但我很困惑为什么必须如此。任何人都可以提供一个需要使用它的具体例子,或者一个在没有第三条规则的情况下会失去非正式定义的例子吗?
答案 0 :(得分:2)
想象一下,你有一个制作规则
A→αBβ
你知道β可以得到空字符串。在这种情况下,如果您使用上述生产规则然后将β扩展为空字符串,那么合法遵循A非终结符的字符也可以遵循B非终结符。
举个例子,让我们来看看这个简单的语法:
S→Ax
A→CBC
C→ε
B→y
在这里,我们可以进行这种推导,将x放在B:
之后S→Ax→CBCx→CBx