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.