Descriptores: Representación de lenguajes, Análisis léxico, Análisis sintáctico, Análisis Semántico, Generación de código, Recuperación de errores, Optimización de código
TEMA I: Introducción
Historia de los compiladores y lenguajes
Conceptos básicos
Lenguajes y Gramáticas
Definiciones formales de Gramática, Expresiones Regulares y Autómata
Fases y estructura de un compilado
Diagramas de Tombston
TEMA II: Análisis Léxico
Diseño de un Analizador Léxico
Autómatas Finitos reconocedores de Lenguajes Regulares
Construcción de un Autómata Finito. Ejemplos
Generadores Automáticos de Analizadores Léxicos: LEX
Manejo de Errores Léxicos
TEMA III: Análisis Sintáctico
Introducción al Análisis Sintáctico
Clasificación de los métodos de Análisis Sintáctico
Análisis Descendente, Análisis Sintáctico LL
Obtención de la tabla LL(1). Ejemplos
Análisis Ascendente, Análisis Sintáctico LR
Tratamiento de Gramáticas Ambiguas. Ejemplos
Generadores automáticos de Analizadores Sintácticos: YACC
TEMA IV: Tratamiento de Errores Sintáctico
Errores. Estrategias de Detección y Recuperación. Ejemplos
Recuperación con diferentes analizadores
Analizador descendente L
Analizador ascendente de precedencia de operador
Analizador ascendente L
TEMA V: Análisis Semántico
Gramáticas de Atributos, Ejemplos, Formalización
Especificación de un traductor: Traducción Dirigida por Sintaxis y Esquemas de Traducción
Evaluación de gramáticas
Construcción de árboles de sintaxis abstracta
TEMA VI: Verificación de Tipo
Introducció
Expresiones de tipo
Sistemas de tipos. Comprobación estática y dinámico
Ejemplo de construcción y verificación de tipos sencillo
Equivalencia de expresiones de tipos
Sobrecarga y Orientación a Objetos
TEMA VII: Generación de Código Intermedio
Tipos de Lenguajes Intermedios
Códigos de tres direcciones. Alternativas
Generación de código intermedio: declaraciones, expresiones aritméticas, arrays
Sentencias de flujo de control
TEMA VIII: Generación de Código Máquina
Código máquina y máquina objetivo
Opciones de código máquina
Instrucciones y direccionamiento y coste
Generación simple de código a partir de lenguaje intermedio
Bloques básicos y grafos de flujo
Asignación de registro
Traducción de otras instrucciones
TEMA IX: Tabla de Símbolos y Entorno de Ejecución
Asignación de memoria
Asignación estática y dinámica
Gestión de pila y montículo. Ejemplos
Llamadas a funciones
Registros de activación
Paso de parámetros
Operaciones y organización de la tabla de símbolos
TEMA X: Optimización de Código
Concepto de Optimización de código
Optimización local sobre bloques básicos
Transformaciones que preservan la función
Eliminación de código inactivo
Optimización de bucles
Análisis global del flujo de datos
TEMA XI: Aspectos Específicos
Otros procesadores de lenguajes
Intérpretes
Preprocesadores y macroprocesadores
Diseño de lenguajes
Estructuras de datos y de control
Aspectos de compilación para tipos específicos de lenguajes
Algunos ejemplos de compiladores