1. Teoría de Autómatas y
Compiladores
Germania Rodríguez
grrodriguez@utpl.edu.ec
2. Compiladores
• Son programas de computador (de 10 000
a 1 000 000 de líneas de código) que
traducen un lenguaje fuente a un lenguaje
objeto.
Ejm: C++ a código máquina
3. Compiladores - Reseña
• Computador VonNeumann 1940
• Lenguaje máquina
• Lenguaje ensamblador (códigos a código
máquina)
• FORTRAN 1954-1957 IBM Backus
• Chomsky clasificación de Lenguajes por
Gramáticas tipo 0, 1, 2, 3 Tipo 2 . Libres de
contexto
• Problema de Análisis sintáctico resuelto en la
década 60 a 70 solución base para la teoría de
compiladores.
4. Compiladores - Reseña
• Autómatas finitos y expresiones regulares
corresponden a gramáticas tipo 3.
• Métodos para generación de código objeto eficaz
técnicas de optimización y mejoramiento de
código.
• 1975 generador de rastreadores o generador de
analizadores léxicos.
• 1970 y principios de los 80 se enfocaron a
automatizar la generación de otras partes de un
compilador.
• Avances, primero: algoritmos más sofisticados,
segundo: ambiente de desarrollo interactivo IDE
5. Compiladores – Programas Relacionados
• Intérpretes: Traduce un Lenguaje a otro
• Ensambladores: Traductor para el Lenguaje
ensamblador
• Ligadores:
– Recopila el código compilado a un archivo
ejecutable.
– Conecta el programa objeto con las funciones
del SO
• Cargadores: Hacen más flexible y organizado el
código ejecutable
6. Compiladores – Programas Relacionados
• Preprocesadores: Trata el Lenguaje fuente
eliminando aspectos no relevantes para su
ejecución como comentarios.
• Editores: SW orientado al formato o a la
estructura del Lenguaje.
• Depuradores:
– SW orientado a determinar errores de
ejecución en un programa compilado.
– Puede detener la ejecución en ubicaciones
establecidas.
7. Compiladores – Programas Relacionados
• Perfiladores: Recolecta estadísticas de
comportamiento del programa objeto en tiempo
de ejecución.
• Administradores del Proyecto: Coordina
archivos o actividades del Proyecto.
8. Compiladores – Proceso de Traducción
Código fuente
Analizador léxico o rasterador
Tokens
Analizador Sintáctico
Árbol sintáctico
Analizador Semántico
Árbol con anotaciones
Optimizador de código fuente
Código intermedio
Generador de código
Código objetivo
Optimizador de código objetivo
Código Objetivo
9. Estructuras de datos
• Tokens: Secuencia de caracteres aceptada dentro
de un Lenguaje.
• Árbol sintáctico: Estructura de carga dinámica
con un apuntador al efectuar análisis sintáctico.
• Tabla de símbolos: Mantiene información con id,
funciones, variables, constantes y tipos de datos.
• Tabla de literales: Almacena constantes y
cadenas utilizadas por el programa
• Código intermedio: Arreglo de cadenas de texto
temporal con estructuras ligadas.
• Archivos temporales: Información para proceder
a la traducción.
10. Estructura de un compiladores
• Análisis y síntesis: propiedades de programa
fuente Análisis y Síntesis producción de código
objetivo
• Etapa inicial y etapa final: Inicial que dependen
del código fuente y final que dependen del código
objetivo
• Pasadas: Veces que se procesa el código
fuente.
• Lenguaje: fuente y objetivo
• Interfaces
• Manejo de Errores
13. Alfabetos
• Conjunto finito no vacío de símbolos sobre
el que se puede generar cadenas y
posteriormente Lenguajes
Latino = {a, b, c, d, e, f, …….z}
Binario = {0,1}
15. Lenguaje
• Conjunto de palabras formadas sobre un
alfabeto
– Castellano
• Restricciones: palabras que no forman
parte del Lenguaje, que no están
conceptualizadas.
– Ejm: abcam
16. Operaciones Lenguaje
• Dado que un Lenguaje es un conjunto, es
aplicable todas las operaciones entre
conjuntos
– Unión
– Intersección
– Diferencia
– Complemento
– Potencia o partes
Cada una con sus propiedades de las
operaciones
17. Operaciones Lenguaje
• Y algunas propias
– Concatenación
– Estrella Kleene *
– Cierre transitivo +
Técnicas de Demostración
– Demostración por inducción
18. Gramáticas
• Mecanismo para generar las cadenas que
pertenecen a un lenguaje, a la vez define
un conjunto finito de reglas que aplicadas a
un estado inicial, son capaces de generar
todas sus cadenas.
G={ A, T, P, S}
A = símbolos auxiliares
T= símbolos terminales
P= producciones - pares (antecedente,
consecuente)
S= símbolo inicial de la gramática
19. Bibliografía
• Kenneth C. Louden, Construccion de Compiladores
Principios Y Práctica
• Universidad Jaume, Open Course Ware –II20 Teoría de
autómatas y lenguajes formales en: http://e-ujier.uji.es/pls/
w w w / ! g r i _ w w w . e u j i 2 2 1 0 1 ?
p_id=7&p_tipo=A&p_curso=II20&p_idioma=ES