Sig:
Índice General
Sup:
LHP
Err:
Si hallas una errata ...
Análisis Léxico y Sintáctico con Perl
Casiano R. León
1
Índice General
Índice de Figuras
Índice de Tablas
Comenzando
A Juana
Agradecimientos/Acknowledgments
Erratas
Como Obtener Estos Apuntes
Prólogo
Las Bases
Introducción
Escalares
La Lógica de Perl
Algunas Sentencias de Control
Depuración de errores
Una Breve Introducción a las Expresiones Regulares
Práctica: Radio de una circunferencia
Arrays y Listas
Hashes
Subrutinas
Entrada /Salida
El operador diamante
Filehandles
Directorios
Operaciones con ficheros, links y directorios
Gestión de Procesos
La función
system
La función
exec
Variables de entorno
Uso de comillas de ejecución
Pipes
La función
fork
La función
pipe
La Depuración de Procesos
Práctica: Un Cálculo Sencillo con Procesos
Señales
Práctica: Gestor de Colas
Expresiones Regulares
Un ejemplo sencillo
Copia y sustitución simultáneas
Variables especiales después de un emparejamiento
El uso de
$1
dentro una expresión regular
Ambito automático
Expresiones regulares abreviadas
Listas y ExpReg
Map
y las expresiones regulares
Opciones
La opción
/m
La opción
/s
El Modificador
/g
La opción
/x
Interpolación en los patrones
RegExp no ``Greedy''
Negaciones y operadores no
greedy
Algunas extensiones
Secuencias de números de tamaño fijo
El ancla
G
Palabras Repetidas
Análisis de cadenas con datos separados por comas
Número de substituciones realizadas
Evaluación del remplazo
Anidamiento de
/e
Expandiendo y comprimiendo tabs
Modificación en múltiples ficheros
tr y split
Pack
y
Unpack
Referencias
Referencias a variables ya existentes
Paso de arrays y hashes a subrutinas
Identificando un referente
ref
Referencias a almacenamiento anónimo
Estructuras anidadas
Creación implícita y asignación de memoria
Impresión de estructuras anidadas
Ejemplo: El Producto de Matrices
Ejercicio: Indentificadores entre LLaves
Gestión de la memoria
Referencias simbólicas
Referencias a subrutinas anónimas
Funciones de orden superior
Typeglobs
Prototipos
Clausuras
Programación Avanzada en Perl
Módulos
Introducción a los packages
Tablas de símbolos y packages
Paquetes y ficheros
Búsqueda de librerías y módulos
Control de Versiones
Importación
Acceso a la tabla de símbolos
Carga Automática
Uso del Módulo de Exportación
Práctica: AUTOLOAD
Instalación de módulos
Construcción de un Módulo con
h2xs
La Documentación en Perl
Bancos de Pruebas y Extreme Programming
Práctica: Construcción de una Distribución
Pruebas en la Construcción de una Distribución
Programación Orientada a Objetos
Introducción
Generación Automática de Accesors/Mutators
Constructores
Copia de Objetos
Destructores
Herencia
¿Atados? ó ¿Corbatas? ó
Tie
s
Sobrecarga de Operadores
CGI
Introducción a CGI (Common Gateway Inteface)
Usando CGI.pm
Depuración
Usando Formas
Acción: enviar por correo
Redirección
Gráficos aleatorios
.htaccess
Quadraphobia
Graffiti
cookies
Upload
Frames
JavaScript
Mejora del Rendimiento
B::Xref
Devel::Coverage
Devel::Cover
DProf
Devel::SmallProf
Hilos en Perl: ithreads
Tuberías y Pipes
El Problema de la mochila 0-1
Práctica: Aumentando el Grano
Práctica: El Problema de Asignación de un Único Recurso
Práctica: La criba de Eratostenes
Net::SSH::Perl
Módulos para FTP Seguro
Arañas, Análisis de HTML y XML
Decargando Páginas
Búsqueda en formularios con
get
Búsqueda en formularios con
post
y autentificación
Buscando en Amazon
Análisis Léxico y Sintáctico
La Estructura de los Compiladores: Una Introducción
Las Bases
Las Fases de un Compilador
Análisis Léxico
Haciendo mas Modular el Analizador Léxico
Conceptos Básicos para el Análisis Sintáctico
Análisis Sintáctico Predictivo Recursivo
Esquemas de Traducción
Recursión por la Izquierda
Árbol de Análisis Abstracto
Análisis Semántico
Optimización Independiente de la Máquina
Patrones Árbol y Transformaciones Árbol
Asignación de Direcciones
Generación de Código: Máquina Pila
Generación de Código: Máquina Basada en Registros
Optimización de Código
Construcción de Analizadores Léxicos
Encontrando los terminales mediante sustitución
Construcción usando la opción
g
y el ancla
G
La clase
Parse::Lex
La Clase
Parse::CLex
Usando
Text::Balanced
RecDescent
Introducción
Orden de Recorrido del Árbol de Análisis Sintáctico
La ambiguedad de las sentencias
if-then-else
La directiva
commit
Las Directivas
skip
y
leftop
Las directivas
rulevar
y
reject
Utilizando
score
Usando
autoscore
El Hash
%item
Usando la directiva
autotree
Práctica
Construyendo un compilador para Parrot
Práctica
Práctica
Análisis LR
Parse::Yapp
: Ejemplo de Uso
Conceptos Básicos
Construcción de las Tablas para el Análisis SLR
El módulo Generado por
yapp
Algoritmo de Análisis LR
Depuración en
yapp
Precedencia y Asociatividad
Generación interactiva de analizadores
Yapp
Construcción del Árbol Sintáctico
Acciones en Medio de una Regla
Esquemas de Traducción
Definición Dirigida por la Sintáxis
Manejo en
yapp
de Atributos Heredados
Acciones en Medio de una Regla y Atributos Heredados
Recuperación de Errores
Recuperación de Errores en Listas
Consejos a seguir al escribir un programa
yapp
Práctica: Un C simplificado
La Gramática de
yapp
/
yacc
El Analizador Ascendente
Parse::Yapp
Práctica:
YappParse.yp
Práctica: El Análisis de las Acciones
Práctica: Autoacciones
Práctica: Nuevos Métodos
Práctica: Generación Automática de Árboles
Recuperacion de Errores: Visión Detallada
El Generador de Analizadores
byacc
Apéndice
Código de
Calc.yp
Código de
Calc.pm
Código de
aSb.output
Código de
Calc.output
Código de
Parse.yp
Índice de Materias
Bibliografía
Sig:
Índice General
Sup:
LHP
Err:
Si hallas una errata ...
Casiano Rodríguez León
2006-02-21