Your SlideShare is downloading. ×
Cap2 compiladores
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Introducing the official SlideShare app

Stunning, full-screen experience for iPhone and Android

Text the download link to your phone

Standard text messaging rates apply

Cap2 compiladores

2,681
views

Published on

Cap2 compiladores

Cap2 compiladores

Published in: Education

0 Comments
5 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
2,681
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
0
Comments
0
Likes
5
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. FUNCIONES Y CLASIFICACIÓN DE LOS COMPILADORES
    • Capítulo 2
    Materia: Compiladores Docente: Ing. Carlos J. Archondo O.
  • 2. Funciones
    • Un compilador es:
      • Un programa que lee un programa escrito en un lenguaje,
        • El lenguaje fuente.
      • Y lo traduce a un programa equivalente en otro lenguaje,
        • El lenguaje objeto.
    • Como parte importante de este proceso de traducción, el compilador informa a su usuario de la presencia de errores en el programa fuente.
    • Para cada lenguaje de programación se requiere un compilador separado.
    • El compilador traduce todo el programa antes de ejecutarlo.
    • Los compiladores son programas de traducción insertados en
      • La memoria por el sistema operativo para convertir programas de cómputo en pulsaciones electrónicas ejecutables (lenguaje de máquina).
    Materia: Compiladores Docente: Ing. Carlos J. Archondo O.
  • 3. Funciones
    • Las funciones de un compilador son entonces:
    Materia: Compiladores Docente: Ing. Carlos J. Archondo O.
    • Traducir un programa fuente a uno objeto.
    • Informar al usuario por la presencia de errores.
  • 4. Diversidad de Compiladores Materia: Compiladores Docente: Ing. Carlos J. Archondo O.
  • 5. Origen de los Compiladores
    • Nuestro conocimiento sobre cómo organizar y escribir compiladores ha aumentado mucho desde que comenzaron a aparecer los primeros compiladores a principios de los años cincuenta.
    • Es difícil dar una fecha exacta de la aparición del primer compilador:
      • Esto porque en un principio gran parte del trabajo de experimentación y aplicación se realizó de manera independiente por varios grupos.
    • Gran parte de los primeros trabajos de compilación estaba relacionada con la traducción de fórmulas aritméticas a código de máquina.
    Materia: Compiladores Docente: Ing. Carlos J. Archondo O.
  • 6. Técnicas Sistemáticas
    • En la década de 1950, se consideró a los compiladores como programas notablemente difíciles de escribir.
    • El primer compilador de FORTRAN, por ejemplo, necesitó para su implantación de “18 años” de trabajo en grupo (Backus y otros [1975]).
      • Desde entonces, se han descubierto técnicas sistemáticas para manejar muchas de las importantes tareas que surgen en la compilación.
      • También se han desarrollado buenos lenguajes de implantación, entornos de programación y herramientas de software.
    • Con estos avances, puede hacerse un compilador real incluso como proyecto de estudio sobre diseño de compiladores.
    Materia: Compiladores Docente: Ing. Carlos J. Archondo O.
  • 7. Partes de la Compilación
    • En la compilación hay dos partes:
    Materia: Compiladores Docente: Ing. Carlos J. Archondo O.
  • 8. Árbol Sintáctico
    • Es una clase especial de árbol (estructura), donde cada nodo representa una operación y los hijos de un nodo son los argumentos de la operación.
      • Por ejemplo, en la figura siguiente se muestra un árbol sintáctico para una proposición de asignación.
        • Posición = inicial + velocidad * 60
    Materia: Compiladores Docente: Ing. Carlos J. Archondo O.
  • 9. Clasificación Materia: Compiladores Docente: Ing. Carlos J. Archondo O.
  • 10. Compilador de Una Sola Pasada
    • Examina el código fuente una vez.
      • Generando el código o programa objeto.
    Materia: Compiladores Docente: Ing. Carlos J. Archondo O. Programa fuente Compilador Programa objeto Existen errores en la compilación? Programa ejecutable Enlazador Ejecución no si Con un editor Ej.: C++ Verificación y corrección de errores Obtención del programa objeto El montador obtiene el programa ejecutable Se ejecuta el programa y salida del mismo
  • 11. Compilador de Pasadas Múltiples
    • Requieren pasos intermedios para producir un código en otro lenguaje.
      • Y una pasada final para producir y optimizar el código producido durante los pasos anteriores.
    Materia: Compiladores Docente: Ing. Carlos J. Archondo O. Programa fuente Compilador Programa objeto Existen errores en la compilación? Programa ejecutable Enlazador Ejecución no si Con un editor Ej.: C++ Verificación y corrección de errores Obtención del programa objeto El montador obtiene el programa ejecutable Se ejecuta el programa y salida del mismo
  • 12. Compilador de Optimación
    • Lee un código fuente.
      • Lo analiza.
      • Descubre errores potenciales sin ejecutar el programa.
    Materia: Compiladores Docente: Ing. Carlos J. Archondo O. Programa fuente Compilador Programa objeto Existen errores en la compilación? Programa ejecutable Enlazador Ejecución no si Con un editor Ej.: C++ Verificación y corrección de errores Obtención del programa objeto El montador obtiene el programa ejecutable Se ejecuta el programa y salida del mismo
  • 13. Compiladores Incrementales
    • Generan un código objeto instrucción por instrucción (en vez de hacerlo para todo el programa) cuando el usuario teclea cada orden individual.
      • El otro tipo de compiladores requiere que todos los enunciados o instrucciones se compilen conjuntamente.
    Materia: Compiladores Docente: Ing. Carlos J. Archondo O. Programa fuente Compilador Programa objeto Existen errores en la compilación? Programa ejecutable Enlazador Ejecución no si Con un editor Ej.: C++ Verificación y corrección de errores Obtención del programa objeto El montador obtiene el programa ejecutable Se ejecuta el programa y salida del mismo
  • 14. Compilador Ensamblador
    • Es aquel que trabajará con el lenguaje ensamblador como lenguaje fuente.
      • Posee una estructura sencilla.
    Materia: Compiladores Docente: Ing. Carlos J. Archondo O. Programa fuente Compilador Programa objeto Existen errores en la compilación? Programa ejecutable Enlazador Ejecución no si Con un editor Ej.: C++ Verificación y corrección de errores Obtención del programa objeto El montador obtiene el programa ejecutable Se ejecuta el programa y salida del mismo
  • 15. Compilador Cruzado
    • Se genera código en lenguaje objeto para una máquina diferente de la que se está utilizando para compilar.
      • Es perfectamente normal construir un compilador de Pascal que genere código para MS-DOS y que el compilador funcione en Linux y se haya escrito en C++.
    Materia: Compiladores Docente: Ing. Carlos J. Archondo O. Programa fuente Compilador Programa objeto Existen errores en la compilación? Programa ejecutable Enlazador Ejecución no si Con un editor Ej.: C++ Verificación y corrección de errores Obtención del programa objeto El montador obtiene el programa ejecutable Se ejecuta el programa y salida del mismo
  • 16. Compilador con Montador
    • Compilador que “compila” distintos módulos de forma independiente y después es capaz de enlazarlos.
    Materia: Compiladores Docente: Ing. Carlos J. Archondo O. Programa fuente Compilador Programa objeto Existen errores en la compilación? Programa ejecutable Enlazador Ejecución no si Con un editor Ej.: C++ Verificación y corrección de errores Obtención del programa objeto El montador obtiene el programa ejecutable Se ejecuta el programa y salida del mismo
  • 17. Autocompilador
    • Compilador que está escrito en el mismo lenguaje que va a compilar.
      • Evidentemente, no se puede ejecutar la primera vez.
      • Sirve para hacer ampliaciones al lenguaje, mejorar el código generado, etc.
    Materia: Compiladores Docente: Ing. Carlos J. Archondo O. Programa fuente Compilador Programa objeto Existen errores en la compilación? Programa ejecutable Enlazador Ejecución no si Con un editor Ej.: C++ Verificación y corrección de errores Obtención del programa objeto El montador obtiene el programa ejecutable Se ejecuta el programa y salida del mismo
  • 18. Metacompilador
    • Es sinónimo de compilador de compiladores y se refiere a un programa que recibe como entrada las especificaciones del lenguaje para el que se desea obtener un compilador y genera como salida el compilador para ese lenguaje.
    • El desarrollo de los metacompiladores se encuentra con la dificultad de unir la generación de código con la parte de análisis.
    • Lo que sí se han desarrollado son generadores de analizadores léxicos y sintácticos.
      • Por ejemplo, los conocidos:
        • LEX: generador de analizadores léxicos
        • YACC: generador de analizadores sintácticos desarrollados para UNIX.
      • Los inconvenientes que tienen son que los analizadores que generan no son muy eficientes.
    Materia: Compiladores Docente: Ing. Carlos J. Archondo O.
  • 19. Descompilador
    • Es un programa que acepta como entrada código máquina y lo traduce a un lenguaje de alto nivel.
      • Realizando el proceso inverso a la compilación.
    Materia: Compiladores Docente: Ing. Carlos J. Archondo O.