Universidad de Costa Rica
Escuela de Ciencias de la
Computación e Informática
Profesor Adolfo Di Mare
CI-1322
I Semestre 2010
[<=] [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 las tres preguntas. ¡No haga más de lo que se le pide!

 

1) [33 pts]
G
 R → R D | ε
 D → < id N
 N → ] | > R [ id > 

1.a) [11 pts] Encuentre una hilera de al menos 10 terminales que esté en el lenguaje de la gramática G. Dibuje el árbol de análisis sintácticos para esa hilera.

1.b) [3 pts] Transforme la gramática G en una gramática G' equivalente que sí sea LL(1). Explique lo que hace.

1.c) [8 pts] Calcule los conjuntos Primero() y Siguiente() para G'. Explique lo que hace

1.d) [11 pts] Calcule las tablas LL(1) para la gramática transformada G'. Explique lo que hace.

 

2) [33 pts]
G
 R → R D | ε
 D → < id N
 N → ] | > R [ id > 

2.a) [11 pts] Calcule el autómata SLR(1) para la gramática G. Explique lo que hace.

2.b) [11 pts] Hagas las tablas SLR(1) para el autómata SLR(1) de G. Explique lo que hace.

2.c) [11 pts] Encuentre una hilera de al menos 10 terminales que esté en el lenguaje de la gramática G. Muestre cómo la reconoce el autómata que calculó. Explique lo que hace.

 

3) [33 pts] Considere el siguiente bloque de código Smalltalk:

!RangedArray methodsFor: 'basic'!
do: aBlock
    1 to: (self basicSize) do: [:x|
        aBlock value: (self basicAt: x)
    ]
!!

3.a) [15 pts] Encuentre una gramática LL(1) para este lenguaje. Explique lo que hace y muestre con un ejemplo pequeño que su gramática es correcta.

3.b) [18 pts] Escriba un programa C++ que sirva para reconocer este lenguaje. Implemente los métodos relevantes de la clase "Analizador_Sintactico" que usó en su solución a la tercera tarea programada. Suponga que ya cuenta con un módulo Lex/Flex que sirva para obtener los tokens y lexemas de este lenguaje.

3.c) [0 pts] Recuerde que siempre debe explicar y justificar lo que hace al resolver cada pregunta.

 

Soluciones

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