La estructura que sigue este libro consiste en presentar, por cada una de estas fases de la compilación, primero, los conceptos teóricos de la misma y, después, su diseño e implementación, haciendo uso de las distintas alternativas que se presentan.
Para lograr una mejor comprensión por parte del lector, se facilitará el código fuente y sus correspondientes archivos ejecutables de dos versiones de analizadores sintácticos diferentes y una tercera implementación con la fase semántica, a partir de uno de los analizadores sintácticos anteriores. Capítulo 1. Definición del lenguaje: Planteamiento teórico Capítulo 2. Definición del lenguaje: Diseño Capítulo 3. analizador léxico: Planteamiento teórico Capítulo 4. análisis léxico: Diseño e implementación Capítulo 5. analizador sintáctico: Planteamiento teórico Capítulo 6. análisis sintáctico: Diseño e implementación Capítulo 7. analizador semántico: Planteamiento teórico Capítulo 8. análisis semántico: Diseño e implementación BIBLIOGRAFÍA
1.1 Ventajas del uso de gramáticas libres de contexto
1.2 Definición del vocabulario básico para la definición de Lenguajes
1.3 Especificación sintáctica de los lenguajes de programación: Gramáticas libres de contexto
2.1 Diseño del lenguaje de programación
2.2 Producciones del analizador léxico
2.3 PRODUCCIONES DEL ANALIZADOR SINTÁCTICO
3.1 Responsabilidad del analizador léxico como fase de un compilador
3.2 ¿Por qué separar el análisis léxico del análisis sintáctico?
3.3 Tratamiento de los errores léxicos
3.4 Definición del vocabulario básico para un analizador léxico
3.5 Especificación de un analizador léxico
3.5.1 Reconocimiento de los componentes léxicos
3.5.2 Implementación del DT
4.1 Diseño del analizador léxico
4.2 Estudio de la implementaci ón del analizador léxico
4.2.1 Implementación del DT: Estado inicial
4.2.2 Implementación del DT: Estados finales
4.2.3 Implementación del DT: Algunos tokens interesantes
5.1 Responsabilidades del analizador sintáctico como fase de un compilador
5.2 Tratamiento de errores sintácticos
5.2.1 ¿Qué información debe ofrecer un manejador de errores ante un error?
5.2.2 Estrategias de recuperación de errores en analizadores sintácticos
5.3 Definición del vocabulario básico para un analizador sintáctico
5.4 Clasificación de los métodos de análisis sintáctico
5.5 Métodos de análisis descendente
5.5.1 Analizador sintáctico por descenso recursivo
5.5.2 Analizador sintáctico predictivo (por descenso recursivo sin retroceso)
5.5.3 Analizador sintáctico predictivo y no recursivo
5.5.4 Recuperación de errores en análisis sintácticos predictivos
5.6 Métodos de análisis ascendente
5.6.1 Ventajas
5.6.2 Inconvenientes
5.6.3 Método por desplazamiento y reducción
5.6.4 Analizadores sintácticos LR
5.6.5 Recuperación de errores en analizadores sintácticos LR
6.1 Primeros pasos comunes
6.2 Estudio del diseño y la implementaci ón DEL ANALIZADOR SINTÁCTICO PREDICTIVO Y NO RECURSIVO
6.2.1 Diseño del analizador sintáctico predictivo y no recursivo
6.2.2 Estudio de la implementación del analizador sintáctico predictivo y no recursivo
6.3 Estudio del diseño y la implementaci ón del analizador sintáctico SLR
6.3.1 Diseño del analizador sintáctico SLR
6.3.2 Estudio de la implementación del analizador sintáctico SLR
6.4 Tratamiento de los errores sintácticos
6.4.1 Método que gestiona los errores sintácticos
6.4.2 Tratamiento de errores si la cima de la pila es un terminal
6.4.3 Tratamiento de errores si la cima es un no terminal
7.1 Responsabilidades del analizador semántico como fase de un compilador
7.2 Definición del vocabulario básico para un analizador semántico
7.2.1 Definiciones dirigidas por sintaxis y esquemas de traducción
7.3 Clasificación de los métodos de análisis semántico
7.3.1 Métodos de análisis descendente
7.3.2 Métodos de análisis ascendente
8.1 Definición dirigida por sinta xis de las reglas semánticas
8.1.1 Asignación de tipos a las variables declaradas
8.1.2 Comprobación de que los elementos que se comparan en la condición de un if y un while sean del mismo tipo
8.1.3 Comprobación de tipos en asignaciones
8.2 Diseño del analizador sintáctico SLR
8.2.1 Primeros y Siguientes
8.2.2 GLC numerada
8.2.3 Conjunto canónico de elementos LR(0)
8.2.4 Construcción de la tabla de análisis sintáctico SLR
8.2.5 Desarrollo de un ejemplo para comprobar el funcionamiento del analizador a nivel sintáctico y semántico.
8.3 Estudio de la implementaci ón del analizador semántico
8.3.1 Estructuras de datos utilizadas
8.3.2 Implementación de la estructura de datos con las reglas semánticas
8.3.3 Proceso de análisis semántico
Anexo A: Manual de uso del compilador
A.1 La ventana principal
A.2 La compilación
A.3 Ejemplos de los errores que el compilador realizado "sabe" detectar
A.3.1 Ejemplos de errores léxicos
A.3.2 Ejemplos de errores sintácticos
A.3.3 Ejemplos de errores semánticos
Material adicional
ÍNDICE ALFA BÉTICO