Documentos de Académico
Documentos de Profesional
Documentos de Cultura
FACULTAD DE INGENIERÍA
ESCUELA DE INGENIERÍA EN COMPUTACIÓN
Ensayo
COMPILADORES: CONCEPTOS, ESTRUCTURAS Y COMPARACIÓN
SEGÚN DISTINTOS AUTORES
Autores:
Tutor:
Prof. Susan León
Abril, 2023
INTRODUCCIÓN
Las partes del proceso de compilación se dividen en dos: una llamada fase de
Análisis y otra llamada fase de Sintaxis, las cuales interactúan entre sí para la
creación de la tabla de símbolos y el control del manejador de errores, dentro del
análisis hay tres etapas llamadas análisis léxico, análisis sintáctico, análisis
semántico. Dentro de la fase de Síntesis existen las etapas de generación de código
intermedio, optimización de código intermedio, y generación de código.
2
COMPILADORES
Para Alfred V. Aho, Ravi Sethi y Jeffrey D. Ullman el escritor del compilador,
como cualquier programador puede usar con provecho herramientas de software tales
como depuradores, administradores de versiones, analizadores, etc. para la
construcción de un compilador. En términos generales, ya se han creado algunas
herramientas para el diseño automático de los compiladores, dichas herramientas
utilizan lenguajes especializados para especificar e implantar el componente y pueden
utilizar algoritmos bastante complejos.
Las herramientas más efectivas son las que ocultan los detalles de algoritmo de
generación y producen componentes que se pueden integrar con facilidad al resto del
compilador. Las herramientas útiles para la construcción de un compilador serían las
siguientes:
3
4. Generadores automáticos de código: Tales herramientas toman un conjunto de
reglas que definen la traducción de cada operación del lenguaje intermedio al
lenguaje de máquina para la máquina objeto.
5. Dispositivos para análisis de flujo de datos: Consiste en la recolección de
información sobre la forma en que se transmiten los valores de una parte de un
programa a cada una de las otras partes.
Además, el autor Alfred V. Aho afirma que en la compilación hay dos partes.
Análisis y síntesis. La parte de análisis divide al programa fuente en sus elementos
componentes y crea una representación intermedia del programa fuente. La parte de
la síntesis construye el programa objeto deseado a partir de la representación
intermedia. De las dos partes, la síntesis es la que requiere las técnicas más
especializadas.
De acuerdo a los autores Según Sergio Gálvez Rojas y Miguel Ángel Mora Mata
(2005) Un compilador es aquel traductor que tiene como entrada una sentencia en
lenguaje formal y como salida tiene un fichero ejecutable, es decir, realiza una
traducción de un código de alto nivel a código máquina (también se entiende por
compilador aquel programa que proporciona un fichero objeto en lugar del
ejecutable final).
4
Sin embargo esto es muy difícil de conseguir y no suele ahorrar tiempo de
compilación más que en casos muy concretos.
El compilador es asistido por otros programas para realizar su tarea, por ejemplo, se
utiliza un preprocesador para añadir ficheros, ejecutar macros, eliminar comentarios,
etc. Hay compiladores que no generan código maquina sino un programa en
ensamblador, por lo que habrá que utilizar un programa ensamblador para generar el
código máquina.
Según Sergio Gálvez Rojas y Miguel Ángel Mora Mata (2005), las fases anteriores se
agrupan en una etapa inicial (front-end) y una etapa final (back- end). La etapa inicial
comprende aquellas fases, o partes de fases, que dependen exclusivamente del
lenguaje fuente y que son independientes de la máquina para la cual se va a generar el
código. En la etapa inicial se integran los análisis léxicos y sintácticos, el análisis
semántico y la generación de código
La etapa final incluye aquellas fases del compilador que dependen de la máquina
destino y que, en general, no dependen del lenguaje fuente sino sólo del
lenguaje intermedio.
5
En esta etapa, se encuentran aspectos de la fase de generación de código, además de
su optimización, junto con el manejo de errores necesario y el acceso a las estructuras
intermedias que haga falta. Se ha convertido en una práctica común el tomar la etapa
inicial de un compilador y rehacer su etapa final asociada para producir un
compilador para el mismo lenguaje fuente en una máquina distinta. También resulta
tentador crear compiladores para varios lenguajes distintos y generar el mismo
lenguaje intermedio para, por último, usar una etapa final común para todos ellos, y
obtener así varios compiladores para una máquina.
6
CONCLUSIÓN
También se sabe que la compilación hay dos partes: Análisis y Síntesis. La parte del
análisis divide al programa fuente en sus elementos componentes y crea una
representación intermedia. Aprendimos que las herramientas que muestran tipos de
análisis de programas fuente, son muy útiles al momento de crear un programa al
codificar un algoritmo, ya que estas herramientas nos ayudan formateando el texto,
corrigiendo errores, dando tips; para que nosotros como programadores seamos más
eficientes al momento de crear alguna aplicación.
7
REFERENCIAS BIBLIOGRAFICAS
Jacinto Ruíz Catalán (2008). Compiladores: Teoría y práctica con Java. Editorial
Lulu.
Sergio Gálvez Rojas y Miguel Ángel Mora Mata (2005). Compiladores: Traductores
y Compiladores con Lex/Yacc, Jlex/Cup y JavaCC. Universidad de Málaga.