Sig:
Índice de Figuras
Sup:
Análisis Léxico y Sintáctico
Ant:
Análisis Léxico y Sintáctico
Err:
Si hallas una errata ...
Índice General
Índice de Figuras
Índice de Tablas
Expresiones Regulares en Perl
Introducción
Un ejemplo sencillo
Depuración de Expresiones Regulares
Tablas de Escapes, Metacarácteres, Cuantificadores, Clases
Variables especiales después de un emparejamiento
Ambito Automático
Opciones
Algunas Extensiones
Comentarios
Modificadores locales
Mirando hacia adetrás y hacia adelante
Definición de Nombres de Patrones
Patrones Recursivos
Cuantificadores Posesivos
Perl 5.10: Numeración de los Grupos en Alternativas
Ejecución de Código dentro de una Expresión Regular
Expresiones Regulares en tiempo de matching
Expresiones Condicionales
Verbos que controlan el retroceso
Unicode
Expresiones Regulares en Otros Lenguajes
Casos de Estudio
Secuencias de números de tamaño fijo
Palabras Repetidas
Análisis de cadenas con datos separados por comas
Las Expresiones Regulares como Exploradores de un Árbol de Soluciones
Número de substituciones realizadas
Expandiendo y comprimiendo tabs
Modificación de Múltiples Ficheros: one liner
tr y split
Pack y Unpack
Práctica: Un lenguaje para Componer Invitaciones
Analisis Sintáctico con Expresiones Regulares Perl
Introducción al Anaĺisis Sintáctico con Expresiones Regulares
Construyendo el AST con Expresiones Regulares 5.10
Práctica: Traducción de invitation a HTML
Análisis Sintáctico con Regexp::Grammars
Introducción
Objetos
Renombrando los resultados de una subregla
Listas
Pseudo sub-reglas
Llamadas a subreglas desmemoriadas
Destilación del resultado
Llamadas privadas a subreglas y subreglas privadas
Mas sobre listas
La directiva require
Casando con las claves de un hash
Depuración
Mensajes de log del usuario
Depuración de Regexps
Manejo y recuperación de errores
Mensajes de Warning
Simplificando el AST
Reciclando una Regexp::Grammar
Práctica: Calculadora con Regexp::Grammars
La Estructura de los Compiladores: Una Introducción
Las Bases
Repaso: Las Bases
Práctica: Crear y documentar el Módulo PL::Tutu
Las Fases de un Compilador
Repaso: Fases de un Compilador
Práctica: Fases de un Compilador
Análisis Léxico
Ejercicio: La opción g
Ejercicio: Opciones g y c en Expresiones Regulares
Ejercicio: El orden de las expresiones regulares
Ejercicio: Regexp para cadenas
Ejercicio: El or es vago
Práctica: Números de Línea, Errores, Cadenas y Comentarios
Pruebas para el Analizador Léxico
Comprobando el Analizador Léxico
Práctica: Pruebas en el Análisis Léxico
Repaso: Pruebas en el Análisis Léxico
Conceptos Básicos para el Análisis Sintáctico
Ejercicio
Análisis Sintáctico Predictivo Recursivo
Introducción
Ejercicio: Recorrido del árbol en un ADPR
Ejercicio: Factores Comunes
Derivaciones a vacío
Construcción de los conjuntos de Primeros y Siguientes
Ejercicio: Construir los
Ejercicio: Calcular los
Práctica: Construcción de los FIRST y los FOLLOW
Gramáticas LL(1)
Ejercicio: Caracterización de una gramática LL(1)
Ejercicio: Ambiguedad y LL(1)
Práctica: Un analizador APDR
Práctica: Generación Automática de Analizadores Predictivos
Esquemas de Traducción
Recursión por la Izquierda
Eliminación de la Recursión por la Izquierda en la Gramática
Eliminación de la Recursión por la Izquierda en un Esquema de Traducción
Ejercicio
Convirtiendo el Esquema en un Analizador Predictivo
Ejercicio
Práctica: Eliminación de la Recursividad por la Izquierda
Árbol de Análisis Abstracto
Lenguajes Árbol y Gramáticas Árbol
Realización del AAA para Tutu en Perl
AAA: Otros tipos de nodos
Declaraciones
Práctica: Arbol de Análisis Abstracto
Análisis Semántico
Práctica: Declaraciones Automáticas
Práctica: Análisis Semántico
Optimización Independiente de la Máquina
Práctica: Plegado de las Constantes
Patrones Árbol y Transformaciones Árbol
Práctica: Casando y Transformando Árboles
Asignación de Direcciones
Práctica: Cálculo de las Direcciones
Generación de Código: Máquina Pila
Generación de Código: Máquina Basada en Registros
Práctica: Generación de Código
Optimización de Código
Práctica: Optimización Peephole
Análisis Sintáctico con Parse::Eyapp
Conceptos Básicos para el Análisis Sintáctico
Parse::Eyapp: Un Generador de Analizadores Sintácticos
Depuración de Errores
Acciones y Acciones por Defecto
Traducción de Infijo a Postfijo
Práctica: Gramática Simple en Parse::Eyapp
El Método YYName y la Directiva %name
Construyendo el Arbol de Análisis Sintactico Mediante Directivas
La Maniobra de bypass
Salvando la Información en los Terminales Sintácticos
Práctica: Análisis Sintáctico
Podando el Arbol
Nombres para los Atributos
Bypass Automático
La opción alias de %tree
Diseño de Analizadores con Parse::Eyapp
Práctica: Construcción del Arbol para el Lenguaje Simple
Práctica: Ampliación del Lenguaje Simple
Agrupamiento y Operadores de Listas
El método str en Mas Detalle
El Método descendant
Conceptos Básicos del Análisis LR
Construcción de las Tablas para el Análisis SLR
Los conjuntos de Primeros y Siguientes
Construcción de las Tablas
Algoritmo de Análisis LR
Precedencia y Asociatividad
Acciones en Medio de una Regla
Manejo en eyapp de Atributos Heredados
Acciones en Medio de una Regla y Atributos Heredados
Análisis Sintáctico con yacc
Introducción a yacc
Precedencia y Asociatividad
Uso de union y type
Acciones en medio de una regla
Recuperación de Errores
Recuperación de Errores en Listas
Análisis de Ámbito
Análisis de Ámbito: Conceptos
Descripción Eyapp del Lenguaje SimpleC
Práctica: Construcción del AST para el Lenguaje Simple C
Práctica: Análisis de Ámbito del Lenguaje Simple C
La Dificultad de Elaboración de las Pruebas
Análisis de Ámbito con Parse::Eyapp::Scope
Resultado del Análisis de Ámbito
Usando el Método str para Analizar el Árbol
Práctica: Establecimiento de la relación uso-declaración
Práctica: Establecimiento de la Relación Uso-Declaración Usando Expresiones Regulares Árbol
Práctica: Estructuras y Análisis de Ámbito
Análisis de Tipos
Análisis de Tipos: Conceptos Básicos
Conversión de Tipos
Expresiones de Tipo en Simple C
Construcción de las Declaraciones de Tipo con hnew
Inicio de los Tipos Básicos
Comprobación Ascendente de los Tipos
Análisis de Tipos: Mensajes de Error
Comprobación de Tipos: Las Expresiones
Comprobación de Tipos: Indexados
Comprobación de Tipos: Sentencias de Control
Comprobación de Tipos: Sentencias de Asignación
Comprobación de Tipos: Llamadas a Funciones
Comprobación de Tipos: Sentencia RETURN
Comprobación de Tipos: Sentencias sin tipo
Ejemplo de Árbol Decorado
Práctica: Análisis de Tipos en Simple C
Práctica: Análisis de Tipos en Simple C
Práctica: Análisis de Tipos en Simple C con Gramáticas Atribuidas
Práctica: Sobrecarga de Funciones en Simple C
Análisis de Tipos de Funciones Polimorfas
Un Lenguaje con Funciones Polimorfas
La Comprobación de Tipos de las Funciones Polimorfas
El Compilador
Un Algoritmo de Unificación
Práctica: Inferencia de Tipos
Instrucciones Para la Carga de Módulos en la ETSII
Usando Subversion
Índice de Materias
Bibliografía
Sig:
Índice de Figuras
Sup:
Análisis Léxico y Sintáctico
Ant:
Análisis Léxico y Sintáctico
Err:
Si hallas una errata ...
Casiano Rodríguez León
2009-12-09