0% encontró este documento útil (0 votos)
38 vistas4 páginas

Análisis de Gramáticas y Parsing LL(1)

Este documento presenta una gramática G con producciones P que define las reglas para analizar cadenas de paréntesis, números y letras. Se calculan los conjuntos FIRST1, FOLLOW1 y LOOK_AHEAD_1 para cada símbolo no terminal y se construye la tabla de parsing LL(1). Finalmente, se procesa la cadena "(a(aa))#" usando la tabla para determinar las producciones aplicadas en cada paso.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
38 vistas4 páginas

Análisis de Gramáticas y Parsing LL(1)

Este documento presenta una gramática G con producciones P que define las reglas para analizar cadenas de paréntesis, números y letras. Se calculan los conjuntos FIRST1, FOLLOW1 y LOOK_AHEAD_1 para cada símbolo no terminal y se construye la tabla de parsing LL(1). Finalmente, se procesa la cadena "(a(aa))#" usando la tabla para determinar las producciones aplicadas en cada paso.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

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))#

También podría gustarte