Teoría

Anuncio
PROCESADORES DE LENGUAJE. Teoría
4º Curso Ingeniería Informática
Mayo-2011
Tiempo: 2:30 horas
No se permiten libros ni apuntes. Tiempo: 2 hora 30 min.
FINAL: Contestad a las preguntas 1,2,3,5.
SEGUNDO PARCIAL: Contestad a las preguntas 2,3,4,5.
Pregunta 1) Supongamos que se nos pide diseñar el modulo de reconocimiento figuras en un programa de diseño gráfico
por ordenador. El sistema posee un modulo de procesamiento de imágenes cuya entrada es una imagen de un plano y la
salida es una serie de elementos rectilíneos y curvilíneos, que llamaremos primitivas, y que forman las figuras.
Las operaciones que se pueden realizar con estas primitivas son: el operador suma +, que permite la concatenación de dos
primitivas, y el operador rotación , que permite un giro de un ángulo de 180 grados. Supongamos que estas primitivas
se pueden combinar con la siguiente gramática:
Figura  Union
Union  Union + Union |  Union | Primitiva
Primitiva  up | left | top | bottom
a) Diseña una gramática LL(1) donde el operador suma sea asociativo a izquierdas y el operador rotación sea asociativo
a derechas. El operador suma tienen menor prioridad que la rotación. b) Construye la tabla de análisis sintáctico para la
gramática LL(1). c) Reconoce la entrada up + up top + top. Indica el mensaje de error correspondiente, incluyendo lo que
se ha encontrado y lo que se esperaba en el momento del error. Intenta sincronizar el analizador usando el mecanismo de
recuperación en modo de pánico.
Pregunta 2) ¿Es una gramática de atributos-S siempre de atributos-L? Justifica tu respuesta y pon un ejemplo.
Pregunta 3) Dada la siguiente gramática para generar expresiones booleanas indica si se trata de una gramática
LR(0) o/y SLR(1). Justifica por qué.
E  E  E| E  E | a |
… | z
Define una gramática de atributos para convertir una expresión Booleana a su forma distributiva. Es decir que
las construcciones de la forma X Y  Z las traduzca por XYXZ. Indica de qué tipo de atributos se tratan.
Implementa la función que evalúa dicho atributo.
Pregunta 4) Comenta qué se entiende por equivalencia estructural de tipos. Supongamos que se quiere
establecer la equivalencia estructural entre expresiones de tipos vector. Indica como seria la función
typeEqual(t1,t2:TypeExp):Boolean; para este tipo de expresiones. Indica un ejemplo de tipos vector
estructuralmente equivalentes.
Pregunta 5) Supongamos la construcción de los lenguajes de programación que genera un bucle mientras se
cumpla una determinada condición:
Stmt

for ( StmtAssign ; Exp; StmtAssign ) Stmt* | epsilon
a) Dibujar el diagrama de flujo de esta construcción. b) Dibujar la forma del árbol abstracto de análisis
sintáctico que usarías para su traducción a código de 3-direcciones. c) Escribir el pseudocódigo de la función
generar_código para traducir este tipo de sentencias a una lista de cuádruplos. D) Indica la lista de
cuádruplos para el siguiente ejemplo.
suma = 0;
for (i = 1; i <= 10; i = i+2)
suma = suma + i;
Descargar