Automatas y compiladores clase1
Upcoming SlideShare
Loading in...5
×
 

Automatas y compiladores clase1

on

  • 2,640 views

 

Statistics

Views

Total Views
2,640
Views on SlideShare
2,640
Embed Views
0

Actions

Likes
0
Downloads
54
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

CC Attribution-NonCommercial-ShareAlike LicenseCC Attribution-NonCommercial-ShareAlike LicenseCC Attribution-NonCommercial-ShareAlike License

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Automatas y compiladores clase1 Automatas y compiladores clase1 Presentation Transcript

    • Teoría de Autómatas y Compiladores Germania Rodríguez grrodriguez@utpl.edu.ec
    • 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 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.
    • 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}
    • CadenasCombinación, secuencia, concatenación de símbolos basados de un alfabeto; cadena nula, prefijos, sufijos.EJM: casa, 01001Operaciones: – 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 partesCada 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
    • 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