2. 计算FIRST集
  ① 根据定义计算
  由定义5.1 FIRST(α)={a|αaβ,a∈VT,α,β∈V*},若αε,则规定ε∈FIRST(α)
  对每一文法符号X∈V 计算FIRST(X)
  (a) 若X∈VT,则FIRST(X)={X}。
  (b) 若X∈VN,且有产生式X→a…,a∈VT, 则 a∈FIRST(X)。
  (c) 若X∈VN,X→ε,则ε∈FIRST(X)。
  (d) 若X∈VN;Y1,Y2,…,Yi∈VN,且有产生式X→Y1 Y2 … Yn;当Y1 Y2 … Yi-1ε时,(其中1≤i≤n),则FIRST(Y1)、FIRST(Y2)、…、FIRST(Yi-1)的所有非{ε}元素和FIRST(Yi)都包含在FIRST(X)中。
  (e) 当(d)中所有Yiε,(i=1,2,…n),则
  FIRST(X)=FIRST(Y1)∪FIRST(Y2)∪…∪FIRST(Yn)∪{ε}
  反复使用上述(b)~(e)步直到每个符号的FIRST集合不再增大为止。
  求出每个文法符号的FIRST集合后也就不难求出一个符号串的FIRST集合。
  若符号串α∈V*,α=X1 X2 … Xn,当X1不能ε,则置FIRST(α)= FIRST(X1)。
  若对任何j(1≤j≤i-1,2≤i≤n), ε∈FIRST(Xj), 则
  FIRST(α)= (FIRST(Xj)\{ε})
∪FIRST(Xi)
  当所有FIRST(Xj)(1≤j≤n)都含有
{ε}时,则FIRST(α)= (FIRST(Xj))
∪{ε}