examen - L.P.S.I.

Anuncio
TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES
CURSO 2010/11 – CONVOCATORIA DE DICIEMBRE
30 de Noviembre de 2010
NORMATIVA
1.
No está permitido fumar en el aula de examen.
2.
No está permitido salir del examen durante la primera media hora.
3.
Es obligatorio entregar antes de abandonar el examen.
4.
Tiempo disponible: 2 horas y 30 minutos.
5.
Este examen consta de 4 ejercicios, que deberán entregarse en hojas separadas.
6.
En caso de no haber realizado un ejercicio se entregará una hoja en blanco con el nombre y apellidos.
7.
Las calificaciones obtenidas en este examen, junto con las de la práctica se publicarán en el tablón de la
asignatura el jueves 9 de diciembre a las 13:00 horas.
8.
Las revisiones se realizarán el martes 14. La hora en concreto del inicio de la revisión se publicará el día
14 junto con las calificaciones.
EXAMEN
Ejercicio 1 (2,75 puntos)
Dado el alfabeto  = {a,b},
Se pide:
1. Obtener un AFD que reconozca el lenguaje L formado por las palabras que tienen al menos un símbolo b y
que no tienen dos símbolos a de forma consecutiva.
Por ejemplo, pertenecen a L las palabras: b, ab, aba, babbabab, bbb. Por el contrario no
pertenecen a L: ε, a, aaa, baaba, baaab. (0,75 puntos)
2. Aplicar el algoritmo de minimización al autómata obtenido en el apartado anterior. Deberán figurar en la
solución todos los pasos dados con el algoritmo, incluso en el caso de que el AFD propuesto en el apartado
1 ya sea mínimo. (0,5 puntos)
3. Obtener una gramática de tipo 3 que genere L. (0,25 puntos)
4. A partir del AFD obtenido en el apartado 2 (en caso de no haberlo realizado, partir del obtenido en el
apartado1) se obtendrá una expresión regular equivalente. Para ello, en primer lugar se plasmará el AFD en
forma de ecuaciones, y a continuación se resolverán las mismas hasta llegar a la expresión regular
resultante. (0,75 puntos)
5. Obtener un AFD para el lenguaje complementario a L. Explicar cómo se ha obtenido. (0,5 puntos)
Nota: En los apartados 2 y 4 se valorará el conocimiento que tiene el alumno de los correspondientes algoritmos. Por
tanto, deberán aparecer en la solución los pasos que se den con el algoritmo de forma detallada. En otro caso, se
considerará que la solución es incorrecta.
Ejercicio 2 (2,25 puntos)
Dado el alfabeto  = {a, b}, sea el siguiente lenguaje formal:
L = {an | n>0} U {anbm | n>0;
m>=n}
Por ejemplo, pertenecen a este lenguaje las palabras : a, aaaa, ab, aaabbbbb. Por el contrario, no pertenecen a L las
palabras: ε, b, aba, ba, aaaabb
Se pide:
1. Obtener una gramática independiente del contexto que genere L. (1 punto)
2. Obtener un autómata de pila que reconozca L. Para ello, será obligatorio plasmar la solución mediante un
diagrama de transiciones. Se considerará que las palabras siempre vienen finalizadas por el símbolo $, por
lo que será obligatorio que el autómata de pila propuesto trate dicho símbolo. Indicar en la solución si el
autómata reconoce por vaciado de pila o por estado final, así como si es determinista o no (1,25 puntos)
Ejercicio 3 (3 puntos)
La definición de un lenguaje se compone de dos tipos de elementos: directivas e instrucciones de ensamblador,
elementos que podrán estar mezclados de todas las formas posibles pudiendo no existir ninguno y, estando
separados por el símbolo “;”.
Las directivas sirven para informar al ensamblador de distintos aspectos del programa. El formato de las mismas es
el siguiente:
ETIQUETA DIRECTIVA OPERANDO
La etiqueta será obligatoria, es decir, toda directiva llevará siempre una etiqueta.
El lenguaje permite dos directivas: DS y DC. Ambos tipos de directivas llevan un operando que será siempre una
expresión aritmética.
Las instrucciones permiten realizar operaciones del ensamblador y tienen el siguiente formato:
ETIQUETA INSTRUCCIÓN OPERANDOS
A diferencia de las directivas, la etiqueta no es obligatoria en las instrucciones.
Existen dos tipos instrucciones: MOVE, ADD.
La instrucción MOVE sirve para mover datos de un origen a un destino, por lo tanto tendrá dos operandos
separados por el símbolo “,”. El operando origen, que será el primero, puede ser una expresión aritmética o un
registro de datos, mientras que el segundo operando (destino) será un registro de datos.
MOVE origen , destino
La instrucción ADD se utiliza para sumar datos. Está formada por dos o más sumandos finalizando con el
operando destino del resultado, tanto los sumandos como el operando destino están separados por el símbolo “,”.
Los sumandos de la instrucción ADD son expresiones o registros de datos, mientras que destino es un registro de
datos.
ADD sumando1, sumando2,…, destino
Las expresiones utilizadas tanto en las directivas como en las instrucciones tienen las siguientes características:
1.
2.
Operandos: constantes enteras y etiquetas.
Operadores: Binarios:‘+’ (suma), ‘-‘ (resta), ‘*’ (producto), ‘/’ (cociente)
Unarios:‘-‘ (signo)
3. Todos los operadores binarios tienen asociatividad a la izquierda.
4. La precedencia de los operadores es la siguiente: primero se hacen los operadores unarios, después vienen los
operadores ‘*’ seguidos de ‘/’, y finalmente los últimos operadores en realizarse con la menor precedencia son:
‘+’ (suma) y ‘-’ (resta).
5. El operador unario ‘-‘, de existir, irá siempre delante del operando. Además, se podrá anidar. Por ejemplo, es
válido - - - aux
y ---(x+1)
6. Finalmente, en las expresiones pueden aparecer paréntesis, teniendo en este caso los paréntesis la máxima
prioridad. Los paréntesis pueden aparecer anidados.
Ejemplo de programa fuente
Etq1 DS 2*a+D3 ;
MOVE 7 , D2 ;
ADD 3+a , D2 , etq2*4+b , D9
Se pide:
Teniendo en cuenta que el léxico = { cte_ent,etiqueta, reg_datos, DS, DC, MOVE, ADD , ‘;’,
‘,’, ‘+’, ‘-‘, ‘*’, ‘/’, ‘(‘, ‘)’}, definir la sintaxis anterior utilizando la notación BNF o EBNF
Nota: Debe especificar de forma clara en la solución la notación (BNF o EBNF) que se empleará.
Ejercicio 4 (2 puntos)
Sea el alfabeto  = {a, b, c}, sobre el que se define la siguiente gramática:
S ---> A$
A ---> BAc | aB | ε
B -- -> Bb | bb | A
Se pide:
1. Sin modificar la gramática dada calcular los símbolos directores de todas sus producciones. (1,5 puntos)
2. La definición del símbolo no terminal B contiene una recursión inmediata por la izquierda, que es
incompatible con la condición LL(1). Aplicando el algoritmo visto en clase, obtener una nueva definición
para B que no contenga recursión inmediata por la izquierda. (0,5 puntos)
Nota1: el cálculo de directores deberá figurar de forma detallada en función de los iniciales y seguidores
correspondientes.
Nota2: no se modificará la definición del símbolo S ni de A en el apartado 2.
Descargar