UNIVERSIDAD INTERNACIONAL DE
CIENCIA Y TECNOLOGÍA (UNICYT)
MAESTRÍA EN CIENCIAS DE LA
COMPUTACIÓN
CON ÉNFASIS EN VIRTUALIZACIÓN
Diseño e Implementación de
Procesadores de Lenguaje
Profesor: Federico Flaviani
TAREA 2
Ruth Noemi Ramírez
Santamaria de Phillips
Tarea 2
1. Sea G una gramática donde su conjunto de producciones P es el siguiente:
G = ({ (, ), #, a}, {S, E, E, L, R}, P, S)
S → E#
E → (L)
E→a
L → ER
R →, E
R → lambda
a. Para cada símbolo no terminal, calcule los conjuntos FIRST1 y FOLLOW1
S → E#
E → (L)
E→a
L → ER
R →, E
R → lambda
FIRST1
FIRST1(S) FIRST1(E) FIRST1 (L) FIRST1 (R)
FIRST1(E#) {(, a} FIRST1 (ER) {, lambda}
{(, a} {(, a} {(, a, lambda} {, lambda}
FOLLOW1
FOLLOW1(S) FOLLOW1(E) FOLLOW 1(L) FOLLOW1(R)
{ lambda } {#} {#, )} {#, )}
{ lambda } {#, )} {#, )} {#, )}
{ lambda } {#, )} {#, )} {#, )}
b. Para cada regla, calcule sus LOOK_AHEAD _1
LA1(S)= {(, a}
LA1(S → E#)={(, a}
LA1(E)= {(, #, a, )}
LA1(E → (L))={(, a, #, )}
LA1(E → a)={a, #, )}
LA1(L)= {(, #, a, )}
LA1(L → ER)={(, a, #, )}
LA1(R)= {(, a, # , )}
LA1(R → ,E)={(, a, #, )}
LA1(S → lambda)={#, )}
c. Utilizando el resultado anterior, construya la tabla de parsing LL(1).
( ) # a
S S → E# S → lambda S → lambda S → E#
E E → (L) E → (L) E → (L) E → (L)
E E→a E→a E→a
L L → ER L → ER L → ER L → ER
R R → ,E R → ,E R → ,E R → ,E
d. Utilizando la tabla de parsing LL(1) construida, procese la frase:
Nota: En cada paso debe mostrar el contenido de la pila, la frase consumida, la
frase por consumir y la producción escogida (si en ese paso no se ha consumido
un símbolo).
Pila Consumido Por Consumir Producción
S (a(aa))#
E# (a(aa))# S → E#
(L)# (a(aa))# E → (L)
L)# ( a(aa))#
ER)# ( a(aa))# L → ER
aR)# ( a(aa))# E→a
R)# (a (aa))# E→a
E)# (a (aa))# R → ,E
(L))# (a (aa))# E → (L)
L))# (a( aa))#
ER))# (a( aa))# L → ER
aR))# (a( aa))# E→a
R))# (a(a a))#
E))# (a(a a))# R → ,E
E))# (a(a a))# E→a
a))# (a(a a))#
))# (a(aa ))#
)# (a(aa) )#
# (a(aa)) #
(a(aa))#