首先,一般要先写出first集,再写follow集,因为写follow集的时候要用到某些first集。
其次是一些自己的总结:
FIRST集构造方法:
由该非终结符能推导出的第一个终结符或空字的集合;
- x->a… 把a加入到FIRST(x)中;
- x->Y… FIRST(Y)加入到FIRST(x)中;
- Y1为空集,x->Y1Y2… 可以把FIRST(Y2)加入到FIRST(x)中
FOLLOW集构造方法:
在推导过程中非终结符紧接着的终结符组成的组合;
- B为开始符号,则置#于FOLLOW(B);
- A->aBN 将FIRST(N)-{空集} 置于FOLLOW(B)
- A->aB/A->aBN(N为空),FOLLOW(A)置于FOLLOW(B)中