• Input: G = (N, T, P, S)
• Output: First(X) for every X Î N È T
• Method:
• for each a Î T: First(a) := {a}
• for each A Î N: First(A) := Æ
• Apply the following rule until no First set can be changed:
• if A ® X1X2…Xk-1Xk… Xn Î P then
• add all symbols from First(X1) to First(A)
• if Empty(Xi) = {e} for all i = 1,…, k-1, where k £ n
   then add all symbols from First(Xk) to First(A)
Algorithm: First(X)
20/57