Universidad de Costa Rica
Escuela de Ciencias de la
Computación e Informática
Profesor Adolfo Di Mare
CI-1322
I Semestre 2001
[<=] [home] [<>] [\/] [=>]
CI-1322 Autómatas y compiladores

Examen #2 [solución]

      Duración: dos horas. Lea bien el examen antes de hacerlo. El examen es a libro abierto. Cuenta la redacción y la ortografía. Puede hacer el examen con lápiz. Resuelva tres de las cuatro preguntas. ¡No haga más de lo que se le pide!

 

1) [33 pts] Considere los lenguajes L(G1) y L(G2) definidos de la siguiente manera:

1.a) [11 pts] Escriba las gramáticas libres de contexto G1 y G2 para L(G1) y L(G2).

1.b) [11 pts] Muestre que tanto G1 como G2 son LL(1).

1.c) [2 pts] Escriba la gramática libre de contexto para L(G1) U L(G2).

1.d) [9 pts] ¿Es la gramática de L(G1) U L(G2) una gramática LL(1)?

 

2) [33 pts] Considere el lenguaje de paréntesis anidados, en que las hileras tienen esta forma:
[] () [[[]]] ((())) [([ ([( )]) ])]

2.a) [11 pts] Escriba una gramática LL(1) que sirva para generar todas las hileras de paréntesis anidados. Evite que la hilera nula sea generada.

2.b) [11 pts] Encuentre las tablas que un analizador sintáctico LL(1) usaría para reconocer hileras este lenguaje.

2.c) [11 pts] Muestre cómo un analizador sintáctico que use las tablas que usted calculó reconocería la siguiente hilera (suponga que el analizador léxico salta sobre los espacios en blanco):

[] () [[]] (()) [([ ])]

 

3) [33 pts] El lenguaje C tiene una instrucción con la siguiente forma:
for ( exp1; exp2; exp3 ) { stmt }

3.a) [11 pts] Haga un diagrama en el que muestre cómo debe quedar compilado este código.

3.b) [22 pts] Escriba un esquema de traducción por sintaxis que transforme un ciclo for en código objeto para una máquina de pila.

 

4) [33 pts] La gramática Gno parece remediar el problema de ambigüedad del "else":

stmt   ==> if expr then stmt
         | m_stmt
m_stmt ==> if expr then m_stmt else stmt
         | other

4.a) [11 pts] Encuentre las tablas que un analizador sintáctico LL(1) usaría para reconocer hileras de L(Gno).

4.b) [8 pts] Muestre que la gramática Gno no es LL(1): encuentre una hilera que tenga dos derivaciones más izquierdas. Dibuje los dos árboles de derivación para la hilera.

4.c) [3 pts] Arregle esta gramática para solucionar el problema de ambigüedad del "else". Explique por qué su gramática sí soluciona el problema, en contraposición a Gno .

4.d) [11 pts] Encuentre las tablas que un analizador sintáctico LL(1) usaría para reconocer hileras generados con su gramática.

 

Soluciones

[mailto:] Adolfo Di Mare <adolfo@di-mare.com>.
Copyright © 2001
Derechos de autor reservados © 2001
[home] <> [/\]