jueves, 25 de agosto de 2016

Compilador

Un compilador es un programa informático que traduce un programa escrito en un lenguaje de programación a otro lenguaje diferente. Usualmente el segundo lenguaje es lenguaje de máquina, pero también puede ser un código intermedio (bytecode), o simplemente texto. Este proceso de traducción se conoce como compilación.La construcción de un compilador involucra la división del proceso en una serie de fases que variará con su complejidad. Generalmente estas fases se agrupan en dos tareas: el análisis del programa fuente y la síntesis del programa objeto.

Clasificación de los Compiladores

Los compiladores pueden ser de:

*Una sola pasada: examina el código fuente una vez, generando el código o programa objeto.
*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.
*Optimación: lee un código fuente, lo analiza y descubre errores potenciales sin ejecutar el programa.
*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.
*Ensamblador: el lenguaje fuente es lenguaje ensamblador y posee una estructura. sencilla.
*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++.
*Compilador con montador: compilador que compila distintos módulos de forma independiente y después es capaz de enlazarlos.
*Auto-compilador: 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.
*Meta-compilador: 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.
*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.


http://www.monografias.com/trabajos11/compil/compil.shtml

No hay comentarios:

Publicar un comentario