计算语法的 FIRST 和 FOLLOW 集合

Computing the FIRST & FOLLOW sets of a grammar

我有以下语法:

S -> aXab
S -> Y
X -> bYa
X -> epsilon
Y -> Sc

我已经计算了这个语法的首集和后续集,我想知道它是否正确。这是我的解决方案:

First Sets:
S -> {a} 
X -> {b,epsilon}
Y -> {a}

Follow Sets:
S -> {$,c} 
X -> {a}
Y -> {c,a}

感谢任何帮助。谢谢

第一组是正确的。 FOLLOW(Y) 应该是 {$,c,a}

FOLLOW(A) 定义是

FOLLOW(A) of non-terminal A is the set of terminal symbols that can follow in the   
derivation sequence

FOLLOW(Y),检查右边的位置

        1) X -> bYa

当这个产生式用于推导时,Y 后面的是 'a'

        2) S -> Y

当这个产生式被用于推导时,Y 之后的是,S 之后的任何东西。FOLLOW(S)={$,c}

     FOLLOW(Y)={$,a,c}