Está en la página 1de 3

Dpto.

Ciencias de la Computación Modelo A


Examen Lenguajes de Programación Junio 2004

NOMBRE Y APELLIDOS:

Normas
• La duración del examen será de 2,5 horas.
• Lea todo el ejercicio antes de empezar a contestar.
• Antes de entregar el examen, compruebe que el nombre completo figura en todas las hojas. Además, todas las hojas
deberán aparecer numeradas en la forma nº hoja actual/nº hojas totales.
• Durante los primeros 15 minutos de examen no se permitirá abandonar el aula a ningún alumno. Pasado este plazo
aquellos alumnos que lo deseen podrán salir.
• Los alumnos que no entreguen el examen figurarán como NO PRESENTADO.
• La hoja con los enunciados NO debe entregarse.
• Se ruega a aquellos alumnos que abandonen el aula antes de concluir el tiempo del examen que, por respeto a los
compañeros que siguen examinándose, no permanezcan en el pasillo.
• El examen será calificado de 0 a 10 puntos, distribuidos según se indica en los enunciados.
• La nota final de la asignatura se calculará como 0,7*nota_teoría + 0,3*nota_práctica (tanto las prácticas como el
examen se evaluarán de 0 a 10), siendo necesario obtener un mínimo de 4 puntos sobre 10 en ambas partes (teoría y
práctica) para superar la asignatura.
• El examen consta de tres páginas.

1. Indique si las gramáticas que aparecen a continuación son ambiguas o no. Justifique la respuesta:
(0,75 PTOS)

1.1. E → *E E + + ( E ) id

1.2. S → A B
A→a
B→a

2. Indique si las gramáticas que aparecen a continuación son recursivas por la izquierda. En caso
afirmativo, elimine dicha recursividad.
(0,75 PTOS)

2.1. S → Aa
A → Bb
B → Cc d
C → Af

2.2. S → A
A → Ab Aca g

Examen Lenguajes de Programación Junio 2004 1 de 3


Dpto. Ciencias de la Computación Modelo A
Examen Lenguajes de Programación Junio 2004

3. Dada la siguiente gramática G, realice el análisis sintáctico predictivo no recursivo de la expresión


var x, y:char;
(4 PTOS)

Se pide:
3.1. Árbol de análisis sintáctico de la expresión.
3.2. Realización de las transformaciones que sean necesarias en la gramática (si alguna lo es).
3.3. Conjuntos PRIMERO y SIGUIENTE necesarios para la realización del análisis.
3.4. Tabla de análisis sintáctico (tabla M[A,a])
3.5. Evolución, durante el análisis, del estado de la pila y de la entrada

G
DCLS Æ var DCL
DCL Æ IDENTS : TYPE , DCL
DCL Æ IDENTS : TYPE ;
IDENTS Æ id
IDENTS Æ IDENTS , id
TYPE Æ char
TYPE Æ string

Aclaración: Los símbolos no terminales son aquellos que aparecen en mayúsculas. Los símbolos
terminales son aquellos que aparecen en minúsculas y los signos de puntuación.

4. Dados los siguientes autómatas finitos, obtenga la expresión regular que se ajusta al lenguaje
reconocido por cada uno de ellos:
(1 PTO)

5. Describa brevemente las fases de un compilador y la relación existente entre las mismas.
(0,5 PTOS)

Examen Lenguajes de Programación Junio 2004 2 de 3


Dpto. Ciencias de la Computación Modelo A
Examen Lenguajes de Programación Junio 2004

6. Sea G la gramática para definir números sin signo, donde number y digit son símbolos no terminales
y los dígitos del 0 al 9 son símbolos terminales:
(1 PTO)

Encuentre una gramática atribuida, añadiendo atributos a los símbolos y reglas semánticas a las
producciones, de tal forma que permita calcular el valor del número que se esté considerando. Dibujar el
árbol de análisis sintáctico correspondiente al número 345, incluyendo el valor del / de los atributo(s).
Sugerencia: La siguiente disposición de la gramática, añadiendo un atributo valor a los símbolos number
y digit, puede hacer más sencilla la resolución del ejercicio:
number Æ number digit
number Æ digit
digit Æ 0
digit Æ 1

digit Æ 9

7. Dadas las siguientes gramáticas y atendiendo a la jerarquía de Chomsky, indique a qué tipo se ajustan.
Justifique su respuesta.
(0,5 PTOS)
7.1. DÆaD | bD | aA
AÆbB
BÆbC
CÆλ

7.2. DÆ0AB
1BÆ0
BÆDA
1BÆ01
A1ÆDB1
A0ÆD0B
BÆDA
AÆ0

8. Responda brevemente las siguientes cuestiones, justificando su respuesta:


(1,5 PTOS)
8.1. La palabra 01110111 pertenece al conjunto representado por la expresión regular (1*01)*(11 |
0*). ¿Es esta afirmación verdadera?
8.2. ¿Cuál es la diferencia entre una sentencia y una forma sentencial?
8.3. ¿En qué consiste la condición LL(1) refiriéndonos a una gramática?
8.4. ¿Cuál es la principal diferencia entre un atributo sintetizado y un atributo heredado, refiriéndonos
al análisis semántico?
8.5. Hablando de sistemas de verificación de tipos, enumera y describe brevemente los distintos
constructores de tipos.
8.6. ¿Cuál es la diferencia entre la gestión de errores en modo de pánico y la recuperación mediante
producciones de error, dentro del análisis sintáctico?

Examen Lenguajes de Programación Junio 2004 3 de 3

También podría gustarte