UNIVERSIDAD MARIANO GALVEZ DE GUATEMALA FACULTAD DE INGENIERIA EN SISTEMAS DE INFORMACION INGENIERIA EN SISTEMAS DE INFORMACION JORNADA DIARIA VESPERTINA Curso: LENGUAJES FORMALES Y TEORÍA DE AUTÓMATAS Pre-requisitos: 090411,090412 Código: 090454 PRESENTACION Este curso es un contacto importante con las nociones y conceptos del proceso computacional o proceso algorítmico. Forma las bases para los cursos de complejidad y compiladores. Incluye el estudio de técnicas de reconocimiento de patrones, procesos básicos computacionales, análisis léxico y sintáctico, así como una base para computabilidad. OBJETIVOS GENERALES. Proporcionar al estudiante la base científica para resolver problemas importantes dentro de la lógica algorítmica, fundamentales para la construcción de compiladores. OBJETIVOS ESPECIFICOS. Que el estudiante se introduzca en el análisis léxico, como método de solución de problemas de renacimiento de patrones. Que el alumno cuente con una idea básica de procesos computacionales. CONTENIDO PROGRAMÁTICO DEL CURSO 1. Unidad Lenguaje 1.1 Definición de lenguaje, orientada a la formalidad, operaciones con lenguajes. 1.2 Conceptos básicos orientados a la teoría de compiladores. 1.3 Terminología asociada a la definición conceptual de lenguaje. 1.4 Esquema y simbología de definición de lenguaje. 2. Unidad Lenguajes formales. 2.1 Conceptos básicos. 2.2 Operadores básicos * y +. 2.3 Primera definición de lenguaje. Lenguaje formal. Lenguaje regular. 2.4 Expresiones regulares. 2.5 Precedencia en las expresiones regulares. 2.6 Álgebra de expresiones regulares. 2.7 Diseño de expresiones regulares. 3. Unidad Autómatas finitos. 3.1 Conceptos básicos. 3.2 Definición formal de autómata finito. Autómatas finitos en representación gráfica. 3.3 Análisis de la entrada a través de un autómata finito. Lenguaje aceptado por un autómata finito. 3.4 Ejemplos de autómatas orientados a diseñar la etapa de léxico de un lenguaje de 3.5 programación. 3.6 Tipos de autómatas. 3.7 Autómata finito determinista. 3.8 Autómata finito no determinista. 3.9 Análisis de la entrada a través de un autómata finito no determinista. 3.10 Autómata con transiciones-E 3.11 Análisis de la entrada a través de un autómata finito con transiciones-E. 3.12 Autómata no determinista y con transiciones-E. 3.13 Conversión de autómata finito no determinista a autómata finito determinista. 3.14 Conversión de autómata finito con transiciones-E 3.15 Conversión de expresión regular a autómata finito no determinista. 3.16 Conversión de expresión regular a autómata finito determinista. 4. Unidad Gramáticas. 4.1 Conceptos básicos. 4.2 Definición formal. 4.3 4.4 4.5 4.6 4.7 4.8 4.9 4.10 4.11 Convenciones de notación. Notación simplificada. Lema de Arden. Derivaciones, Árboles de direvación. Lenguaje generado por una gramática. Diseño de gramáticas. Técnicas para el diseño de gramáticas. Modularidad de las gramáticas. Límites de las gramáticas. Diseño arbitrario de gramáticas. Primer acercamiento a la jerarquía de Chomsky para gramáticas. Gramática regular implementada en un autómata finito no determinista. 5. Unidad Autómatas de pila 5.1 Conceptos básicos. 5.2 Definición formal. 5.3 Jerarquía de lenguajes. 5.4 Reconocimiento de una cadena en un autómata de pila. 5.5 Seguimiento en formato de corrida de escritorio. 5.6 Gramáticas independientes del contexto, implementadas en autómatas de pila. 6. Unidad Máquina de Turing 6.1 Conceptos básicos. 6.2 Máquina de Turing como realizadora de cálculos. 6.3 Reconocimiento de una cadena de entrada. 6.4 Máquina de Turing como reconocedora de lenguajes. 6.5 Diseño de la máquina de Turing. 6.6 Técnicas para la construcción de las máquinas de Turing. 7. Unidad Expresiones, primer acercamiento. 7.1 Consideraciones para generar expresiones en lenguajes de programación. 7.2 Conceptos básicos. 7.3 Términos dentro de una expresión. 7.4 Tipos de operadores. 7.5 Prioridad o precedencia. 7.6 Notaciones. 7.7 Generación de notaciones a través de árboles binarios. 7.8 Recorrido del árbol. 7.9 Importancia de la notación posfija. 7.10 Algoritmo para convertir de notación fija a notación posfija. 7.11 Algoritmo para evaluar notaciones pos fijas. 7.12 Aplicación de los algoritmos de conversión y evaluación en un programa. 7.13 Comentarios finales. EVALUACIÓN Primer Parcial Segundo Parcial Laboratorios, tares y trabajos de investigación Examen Final Nota Final 10 puntos 20 puntos 20 puntos 50 puntos 100 puntos BIBLIOGRAFIA Libro de Texto Teoría de Autómatas y Lenguajes Formales", Dean Kelley. Ed. Prentice Hall, 1995. Brookshear, J. Glenn “Teoría de la Computación, Lenguajes Formales, Autómatas y Complejidad”, Editorial Addison Wesley Iberoamérica, primera edición USA 1993. Hopcroft, John y Jeffey Ullman, “Introducción a la Teoría de Autómatas, Lenguajes y Computación”. CECSA, tercera reimpresión, México 1997 “Compiladores. Principios, técnicas y herramientas”, Aho A.V., Sethi R,. & Ullman J.D. Ed: Addison – Wesley Iberoamericana. 1990.