automatas y compiladores clase1

19
Germania Rodríguez [email protected] Teoría de Autómatas y Compiladores

Upload: germania-rodriguez

Post on 04-Jul-2015

3.440 views

Category:

Documents


10 download

TRANSCRIPT

Page 1: Automatas y compiladores clase1

Germania Rodríguez [email protected]

Teoría de Autómatas y Compiladores

Page 2: Automatas y compiladores clase1

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

Page 3: Automatas y compiladores clase1

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.

Page 4: Automatas y compiladores clase1

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

Page 5: Automatas y compiladores clase1

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

Page 6: Automatas y compiladores clase1

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.

Page 7: Automatas y compiladores clase1

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.

Page 8: Automatas y compiladores clase1

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

Page 9: Automatas y compiladores clase1

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.

Page 10: Automatas y compiladores clase1

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

Page 11: Automatas y compiladores clase1

Ejercicios •  Pág. 27-29 • Dibujar el árbol de análisis gramátical

a[i+1] = a[i] + 2

Page 12: Automatas y compiladores clase1

Análisis Léxico

Page 13: Automatas y compiladores clase1

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}

Page 14: Automatas y compiladores clase1

Cadenas Combinación, secuencia, concatenación de

símbolos basados de un alfabeto; cadena nula, prefijos, sufijos.

EJM: casa, 01001 Operaciones:

– Longitud – Concatenación

Page 15: Automatas y compiladores clase1

Lenguaje • Conjunto de palabras formadas sobre un

alfabeto – Castellano

• Restricciones: palabras que no forman parte del Lenguaje, que no están conceptualizadas. – Ejm: abcam

Page 16: Automatas y compiladores clase1

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

Page 17: Automatas y compiladores clase1

Operaciones Lenguaje •  Y algunas propias

– Concatenación – Estrella Kleene * –  Cierre transitivo +

Técnicas de Demostración – Demostración por inducción

Page 18: Automatas y compiladores clase1

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

Page 19: Automatas y compiladores clase1

•  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