Nótese que si
y
es porque existe una derivación
. ¿Que terminales podemos
legalmente encontrarnos cuando estamos en la subrutina
A
?
Consideremos una derivación desde el símbolo de arranque en la que se
use la producción
. Dicha derivación forzosamente
tendrá la forma:
Cualquier terminal
que pueda aparecer en una derivación desde
el símbolo de arranque inmediatamente a continuación de la variable
es susceptible de ser visto
cuando se esta analizando
y se aplicó
con
.
Esto nos lleva a la definición del conjunto
como conjunto
de terminales que pueden aparecer a continuación de
en una derivación
desde el símbolo de arranque:
donde
EOI
).
Si
dado que los conjuntos
han de ser disjuntos para que un analizador predictivo APDR funcione, sólo una parte derecha
puede contener la palabra vacía en su
. Supongamos que es
.
Podemos reformular la construcción del procedimiento para la variable
siguiendo
este seudocódigo:
sub A { if ($lookahead in FIRST(gamma_1)) { imitar gamma_1 } elsif ($lookahead in FIRST(gamma_2)) { imitar gamma_2 } ... else ($lookahead in FIRST(gamma_n) or $lookahead in FOLLOW(A)) { imitar gamma_n } }
Un caso particular de
es que
. En tal caso, y como
es obvio, el significado de
imitar gamma_n
es equivalente a ejecutar una sentencia vacía.