Cálculo del conjunto Primero()
Primero(α) es el conjunto de tokens que
están al principio de las hileras derivadas a partir de
α.
Si α ==>* ε, entonces
ε ∈ Primero(α)
X es cualquier símbolo gramatical
-
Comience con Primero(X) == { }
-
Si X==a es terminal Primero(X) == {X} == {a}
-
-
Si X→ε es una producción, agregue ε a Primero(X)
-
Si X es no terminal y
X→Y1 Y2...Yn
es una producción
Repita desde 1 hasta n lo siguiente ( 1 ≤ i ≤ n )
-
Agregue Primero(Yi) - { ε } a Primero(X)
-
Si ε ∉ Primero( Yi ) termine el cálculo
-
Si llegó hasta ( i == n )
Agregue ε a Primero(X)
(pues Yi deriva ε para todos los valores 1 ≤ i ≤ n )
-
Si ε ∈ Primero( X ) es porque X deriva ε
Cálculo del conjunto Siguiente()
-
Siguiente(B) se calcula únicamente para los no terminales B.
-
Calcule Primero(X) para todo símbolo gramatical X.
-
Agregue $ a Siguiente(S) para el símbolo inicial S
-
Si hay una producción A→αBβ, todo lo que
esté en Primero(β) excepto ε se pone en
Siguiente(B):
Siguiente(B) ← Siguiente(B) ∪ ( Primero(β) - { ε } )
-
Si hay una producción A→αB o una
producción A→αBβ donde
ε ∈ Primero(β) (porque β deriva
ε):
Agregue en Siguiente(B) todo lo que esté en Siguiente(A)
Siguiente(B) ← Siguiente(B) ∪ Siguiente(A)