TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES CURSO 2009/10 – CONVOCATORIA DE JULIO 8 de Julio 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 15 de julio a las 13 : 00 horas. Las revisiones se realizarán el martes 20 de julio. La hora en concreto del inicio de la revisión se publicará el día 15 junto con las calificaciones. EXAMEN Ejercicio 1 (3 puntos) Dado el siguiente alfabeto Σ={ a, b}, sea el lenguaje L, formado por las palabras constituidas por un número par de símbolos a (el 0 es par), pero que no contienen dos símbolos a consecutivos en ningún lugar de la palabra. Palabras correctas: ε, bbb, aba, baba, bbbbbbabababa, abbbabbbb “ incorrectas: ab, aab, baab, abababb Se pide 1. 2. 3. : Construir un AFD mínimo que reconozca el lenguaje L. Obtener una ER equivalente que denote el lenguaje L. Encontrar la expresión regular lo más simplificada posible para cada uno de los siguientes apartados. Cada apartado realiza operaciones entre lenguajes formales representados por expresiones regulares. a) ( a*b* ∩ c*d* ) - b) ( b* a* )* . ( a* b* )+ . * Ejercicio 2 (2 puntos) Dado el alfabeto Σ={ 0, 1, ‘.’ }, sea el lenguaje L = {v’.’w | v, w {0,1}+ ; en donde |v |=|w | y w no puede finalizar en dos o mas ceros} Palabras correctas: 0.0, 1.0, 000.010, 010100 .000010, 0101.1111 “ Incorrectas: ., 10.00, 11110, 1100.11, 0.11, 11000.11000 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 que define la sintaxis de una función <llamada> ::= id (<parámetros>) | id <parámetros> ::= <operando> <op> <parámetros> | <signo> <operando> <signo> ::= + | - | ε <operando>::=id | cte <op>::= + | Se pide: 1. Representarla en notación BNF (Ampliada). 2. Encontrar otra gramática equivalente a la dada que sea LL(1), realizando todas las transformaciones que se consideren necesarias, justificándolas adecuadamente. Finalmente deberá aparecer la gramática resultante junto con el cálculo detallado de los símbolos directores en función de iniciales y seguidores de todas sus producciones. Ejercicio 4 (3 puntos) Construir una gramática sintáctica en notación BNF (Ampliada) que defina la sentencia de selección de un lenguaje SQL, que permita consultar datos almacenados en las tablas de una base de datos. La sentencia tiene las siguientes características: Comienza con la palabra reservada SELECCIONA seguida de una lista de elementos a seleccionar (uno o más) separados por el símbolo ´ ,´ . Los elementos a seleccionar pueden ser el nombre de una columna o el nombre de una tabla seguido del símbolo `.` y el nombre de una columna. A continuación viene la palabra reservada DE seguida de una lista nombres de tablas (una o más) separadas opcionalmente por el símbolo ´,´ ; desde las cuales queremos recuperar los datos. Seguidamente puede aparecer la palabra reservada DONDE seguida de la condición de selección. Condición que debe cumplirse para que los datos sean devueltos por la consulta. La condición de selección es una expresión que relaciona los operadores y operandos con las siguientes condiciones: Operadores lógicos: AND y OR, operadores binarios y asociativos por la derecha. Operadores de relación: =, <=, >=, y <> , operadores binarios que no se pueden anidar Operadores de cadenas: +, ´.` , operadores binarios y asociativos por la izquierda Operador NOT unario que se puede anidar El orden de precedencia es según el orden de escritura anterior de menor a mayor. Los operandos pueden ser: constantes, variables o una expresión entre paréntesis. Seguidamente a la expresión, puede aparecer la parte de ordenación, consistente en la palabra reservada ORDENAR POR seguida de (0 o más) nombres de columnas pudiendo estar separados por el símbolo ´,´ . A cada nombre de columna le puede seguir opcionalmente la palabra reservada ASC o DES, que indican el sentido de ordenación: ASC (orden ascendente), DES (orden descendente). En el caso de no llevar la palabra reservada (ASC, DES), se considera el valor de ordenación predeterminado, en tal caso se considera una ordenación ascendente. Tanto para representar los nombres de las columnas, como los nombres de las tablas, así como las variables utilizadas en la expresión de selección, se usará el componente léxico id. Fuentes correctos: - SELECCIONA tAlumnos.nombre, Apellidos, tNotas.notafinal DE tAlumnos tNotas - SELECCIONA tCoches.matricula, marca, modelo, color DE tCoches, tFabricantes tMarca DONDE matricula = 'M-0000-A' OR matricula = '2010-XXX' ORDENAR POR matricula, marca color ASC modelo DESC Obtener una gramática sintáctica en notación BNF ampliada (ó extendida) que genere la anterior definición.