Professional Documents
Culture Documents
¿Qué es un compilador?
Michel Ruiz Tejeida, Ciudad de México, 2011
Un compilador, “es aquel traductor que tiene como entrada
Resumen—Un compilador es un programa que traduce un una sentencia en lenguaje formal y como salida tiene un
código de entrada comúnmente escrito en un lenguaje de fichero ejecutable, es decir, realiza una traducción de un
programación a otro lenguaje que será interpretado por la lenguaje de alto nivel a código máquina, (también se entiende
máquina destino para su ejecución. por compilador aquel programa que proporciona un fichero
objeto en lugar del ejecutable final)”
Palabras clave—Compilador, análisis léxico, análisis
sintáctico, análisis semántico, generador de código. Por otro lado, un intérprete, “es como un compilador, solo
que la salida es una ejecución. El programa de entrada se
reconoce y ejecuta a la vez. No se produce un resultado físico
(código máquina) sino lógico (una ejecución).”
El desarrollo del compilador utilizado por el lenguaje 1. Universales: Son aquellos analizadores capaces de
FROTAN tardó poco más de una década en su analizar cualquier tipo de gramática, (ejemplos: Cocke-
implementación, uno de los principales problemas que Younger-Kasami y Earley).
presentaron durante ese tiempo fue la arquitectura de la 2. Descendentes: Se caracterizan por construir el árbol de
máquina en que se utilizaría. análisis sintáctico de la parte superior (raíz) a la parte inferior
(hojas).
A finales de la década de los años 50, se ofreció una 3. Ascendentes: Se caracterizan por construir los árboles
solución al problema de que un compilador fuera utilizable por empezando por las hojas y avanzan hasta la raíz.
varias máquinas, ésta consistía en dividir el compilador en dos
etapas, una inicial (análisis) y otra final (de síntesis) que se
denominaron “front-end” y “back-end”. En la etapa inicial se C. Analizador semántico
analiza el programa fuente y la etapa final es la encargada de Se compone de un conjunto de rutinas independientes,
generar el código utilizado por la máquina objeto. La unión de llamadas por los analizadores léxico y sintáctico.
estas dos etapas se realiza por medio de un lenguaje
intermedio universal, este lenguaje, ampliamente discutido El análisis semántico utiliza como entrada el árbol
pero nunca implementado, se denominó UNCOL (Universal sintáctico detectado por el análisis sintáctico para comprobar
Computer Oriented Language).
restricciones de tipo y otras limitaciones semánticas y preparar
la generación de código.
F. Optimizador de código
El último proceso de un compilador es opcional, ya que la
optimización de código depende de la arquitectura de la
máquina, si ésta acepta paralelismo y que tipo de paralelismo,
además de que no es posible saber a ciencia cierta si un código
optimizado es mejor que el código ingresado por el
programador.