automatas y compiladores clase1
TRANSCRIPT
Germania Rodríguez [email protected]
Teoría de Autómatas y Compiladores
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
Compiladores - Reseña • Computador VonNeumann 1940 • Lenguaje máquina • Lenguaje ensamblador (códigos a código
máquina) • FORTRAN 1954-1957 IBM Backus • Chomsky clasif icació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.
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
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
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.
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.
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
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.
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
Ejercicios • Pág. 27-29 • Dibujar el árbol de análisis gramátical
a[i+1] = a[i] + 2
Análisis Léxico
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}
Cadenas Combinación, secuencia, concatenación de
símbolos basados de un alfabeto; cadena nula, prefijos, sufijos.
EJM: casa, 01001 Operaciones:
– Longitud – Concatenación
Lenguaje • Conjunto de palabras formadas sobre un
alfabeto – Castellano
• Restricciones: palabras que no forman parte del Lenguaje, que no están conceptualizadas. – Ejm: abcam
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
Operaciones Lenguaje • Y algunas propias
– Concatenación – Estrella Kleene * – Cierre transitivo +
Técnicas de Demostración – Demostración por inducción
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
• 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
Bibliografía