TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES CURSO 2009/10 – CONVOCATORIA DE DICIEMBRE 14 de Junio de 2010 NORMATIVA 1. 2. 3. 4. 5. 6. 7. 8. No está permitido fumar en el aula de examen. No está permitido salir del examen durante la primera media hora. Es obligatorio entregar antes de abandonar el examen. Tiempo disponible: 2 : 45 horas. Este examen consta de 4 ejercicios, que deberán entregarse en hojas separadas. Las distintas partes de que consta cada ejercicio sí podrán realizarse de forma continuada en las hojas de examen. En caso de no haber realizado un ejercicio se entregará una hoja en blanco con el nombre y apellidos. 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 24 de junio a las 13 : 00 horas. Las revisiones se realizarán el martes 29 de junio. La hora en concreto del inicio de la revisión se publicará el día 24 junto con las calificaciones. EXAMEN Ejercicio 1 (3 puntos) Dado el alfabeto = {a, b}, sea L el lenguaje formado por las palabras que tienen longitud par y finalizan en el sufijo ab o el sufijo a. Además, el lenguaje L también contiene la palabra vacía. Se pide: 1. Obtener un AFD mínimo que reconozca el lenguaje L. 2. Sin emplear ningún algoritmo, obtener una expresión regular que denote el lenguaje L. 3. Sobre el mismo alfabeto , sean los lenguajes L1 y L2, denotados respectivamente por las expresiones regulares ER1=( aa | b )* , ER2=( bb |a )*. Encontrar las expresiones regulares lo mas simplificadas posible que denoten las siguientes operaciones: a) ER que denote L1 ∩ L2 b) ER que denote L1 c) ER que denote L22 Ejercicio 2 (2 puntos) Dado el alfabeto = {a, b, c} y, sea el lenguaje L={xcn | x{a, b}* , en donde el número de cadenas ab es igual al número de c´s} Por ejemplo, pertenecen a este lenguaje: aabc, ababbbbcc, bbbaaa, bbbb, aaaaa, ε. No pertenecen a este lenguaje : ac, aab, bbc, bbbaababcccc, c, babaccba. Se pide: 1. Encontrar una gramática de contexto libre (o tipo2) que genere el lenguaje L. 2. Sin utilizar ningún algoritmo, representar el diagrama de transiciones de un autómata a pila (AP) que reconozca L. Explicar brevemente la lógica del AP, es decir, de qué manera se va a determinar que una palabra debe reconocerse o rechazarse. Indicar si se va a realizar el reconocimiento por vaciado de pila o por estado final. Para este último caso señalar el/los estado/s final/es. Explicar si el AP es determinista o no. Nota: Las palabras siempre vienen finalizadas por el símbolo $ Ejercicio 3 (2 puntos) Dada la siguiente gramática: S´→ S $ S → AS | A A→ Aaa | Ab | ε Se pide: 1. Después de eliminar los prefijos comunes y la recursividad inmediata por la izquierda, justificar mediante el cálculo detallado de los símbolos directores si la gramática resultante cumple la condición LL (1). 2. En caso de que no sea LL (1), obtener una gramática equivalente que sí cumpla dicha condición, demostrándolo igualmente a través de los símbolos directores. Nota: El cálculo de los símbolos directores deberá aparecer de forma detallada en función de iniciales y seguidores Ejercicio 4 (3 puntos) En un lenguaje de programación L, se desea definir la sentencia de alternativa múltiple cuya estructura general es la siguiente: SWITCH ( expresión ) { case valor1: case valor2: grupo de sentencias ; break ……………………….. case valorn: grupo de sentencias ; break DEFAULT grupo de sentencias } Para construir la expresión se podrán utilizar identificadores y constantes como operandos, y como operadores los símbolos aritméticos binarios: (+, -, *, /). Debiéndose tomar además en consideración las siguientes reglas de precedencia: cada operador tiene una precedencia distinta, según el siguiente orden de menor a mayor : -, +, / y *, teniendo una asociatividad por la derecha, excepto el operador ´/´ que no se puede anidar. Los operadores + y - pueden ser también operadores unarios, que preceden al operando, ambos tienen la misma precedencia, y mayor que la de los operadores binarios, se pueden anidar pero no mezclar entre ellos. También se podrán utilizar paréntesis de forma habitual para alterar la precedencia entre operadores. Puede que no existan alternativas en cuyo caso debe existir la opción DEFAULT, que consta de la palabra reservada DEFAULT seguida de un grupo de sentencias (0 o más). En otro caso de existir alternativas, no es obligatorio que aparezca la opción DEFAULT. Pero si aparece deberá ser la última y nunca llevará la sentencia break. Cada alternativa está formada por una lista (1 o más) de componentes seguidos de un grupo de sentencias. Cada componente está formado por la palabra reservada case seguida de una constante que puede ser indistintamente entera o carácter y finaliza por el símbolo ´:´. El grupo de sentencias está formado por cero o más sentencias separadas por el símbolo ‘;’, la última de las cuales podrá ser la sentencia break (no es obligatoria pero si aparece será la última). Obtener una gramática sintáctica en notación BNF ampliada (ó extendida) definición. que genere la anterior Nota: No es necesario la definición de las sentencias, puesto que no se especifica (se dejará en función del no terminal <sentencia>). No será válida la solución si no se utilizan adecuadamente los metasímbolos propios de esta notación.