1Instituto Tecnológico Superior de Nochistlán Ingeniería en Sistemas Computacionales Lenguajes y Autómatas I Ing. Antonio de Jesús Damián López Unidad 1: INTRODUCCIÓN A LA TEORÍA DE LENGUAJES FORMALES Tarea 1.1 Investigación sobre compiladores Nochistlán de Mejía, Zacatecas. 4 de Febrero de 2014 ................................................................................................................2 Contenido Introducción:.........................................................................................................................7 Introducción: Para traducir las instrucciones de un programa escrito en un lenguaje de alto nivel a instrucciones de un lenguaje maquina es necesario utilizar un programa llamado compilador.................................................4 Analizador Léxico:...............................................................................5 Analizador Sintáctico:... los cuales son los responsables de que existan todas las aplicaciones que utilizamos en nuestras computadoras a diario......................6 Generador De Código Intermedio:................ La finalidad de este documento es ampliar nuestro conocimiento acerca del funcionamiento y la importancia y la utilidad de los mismos...................................... .........7 Conclusiones.................7 Bibliografía..................... el compilador es un programa que recibe como datos de entrada el código fuente de un programa escrito por un programador..................................................................................................................................... y genera como salida un conjunto de instrucciones escritas en el lenguaje binario de la computadora donde se van a ejecutar......................6 Generador Del Código Final:................................................................................................................6 Características de un compilador.... Así pues.....................................................2 Definición de un compilador..............................................................................................................................................................................................................................................................6 Optimización Del Código:.... para qué se utilizan y cómo se clasifican estos pequeños programas..........................................................................................................................5 Analizador Semántico:.............................................3 Estructura De Un Compilador............................................................................................... En el siguiente documento veremos el concepto de compilador.................................................................. la convierte en código objeto y la ejecuta. Figura 2 Esquema de un traductor La diferencia entre compilador e interprete es que el compilador analiza todo el programa fuente. es fácil comprender que tras compilar un programa. Por lo tanto. crea el programa objeto y luego permite su ejecución (solo del programa objeto obtenido) y el intérprete lee sentencia por sentencia el programa fuente. . Figura 1 esquema de un compilador Un traductor es un programa que convierte el texto escrito en un lenguaje en texto. su ejecución es mucho más rápida que la ejecución de un programa interpretado. escrito en otro lenguaje.3 Definición de un compilador Un compilador es un tipo especial de traductor en el que el lenguaje fuente es un lenguaje de alto nivel y el lenguaje objeto es de bajo nivel. 4 El compilador es asistido por otros programas para realizar su tarea. aunque no están faltos de dificultad. Los pasos o faces de la compilación están actualmente bien definidos y en cierta medida sistematizados. Esta aumenta conforme se incrementa la riqueza del lenguaje compilador. 2010) . etc. y que como resultado convierte un programa en un lenguaje de alto nivel en otro de bajo nivel (generalmente código maquina o lenguaje ensamblador). (Catalan. ejecutar macros. Un compilador es un programa complejo que consta de una serie de pasos. El enlazador se encarga de añadir al programa objeto obtenido. las partes de las librerías necesarias. El depurador permite al programador ver paso a paso lo que ocurre durante la ejecución del programa. generalmente entrelazados. Estructura De Un Compilador. por ejemplo. eliminar comentarios. se utiliza un preprocesador para añadir ficheros. (Catalan. 2010) . (Sanchez Dueñas & Valverde Andreu. de acuerdo con la descripción sintáctica reflejada en la gramática. su tarea es revisar el significado de lo que se va leyendo para ver si tiene sentido. 1989) En resumen. Si la ordenación es correcta. 1989). Los tokens reconocidos son la entrada a la siguiente fase. etc.5 Analizador Léxico: También denominado SCANNER. separadores. (Sanchez Dueñas & Valverde Andreu. 2010) Figura 3 Árbol Sintáctico Analizador Semántico: Se ocupa de analizar la semántica de las sentencias. Ejemplo de tokens son los identificadores. Su función consiste básicamente en agrupar los caracteres del texto fuente en grupos con entidad propia denominados tokens (signos lingüísticos). La tarea del analizador sintáctico es procesar los lexemas que le suministra el analizador léxico. 2010) Generador De Código Intermedio: Consiste en el proceso de ir realizando estas direcciones temporales para que el consumo de memoria no se dispare. Además consiste en optimizar el código generado para reducir el número de instrucciones necesarias para realizar las mismas operaciones. (Catalan. 1989) Por lo tanto y resumiendo el analizador léxico lee los caracteres que componen el texto del programa fuente y suministra tokens al analizador sintáctico. palabras reservadas. (Catalan. (Catalan. comprobar que están bien ordenados y si no lo están. generar los informes de error correspondientes. se genera un árbol sintáctico teórico. realizando una serie de consultas en unas tablas auxiliares denominadas tablas de símbolos. (Sanchez Dueñas & Valverde Andreu. 2010) Analizador Sintáctico: Se ocupa de analizar la sintaxis de las sentencias (compuestas de tokens). En resumen. el analizador sintáctico. Además de los procesos descritos. Compiladores optimizadores. Características de un compilador Generalmente un compilador se divide en dos partes: Front End: parte que analiza el código fuente. se necesita pasar por un proceso de enlazado (linker). Por lo general el resultado del back end no puede ser ejecutado directamente. de las que se destacan dos: El Control De Las Tablas De Símbolos Y El Tratamiento De Errores. 2010) Optimización Del Código: Se ocupa de optimizar en tamaño y/o velocidad el código generado en la fase anterior. 1989). (alegsa. Compiladores JIT (Just In Time). en un compilador hay otras actividades a realizar. comprueba su validez. Parte que suele ser independiente de la plataforma o sistema operativo para el que funcionará. son pieza fundamental para la creación de aplicaciones y programas dándonos información precisa de la presencia de errores en el programa fuente.6 Generador Del Código Final: La generación de códigos final (CF) es un proceso más mecánico. . Existen varios tipos de compiladores: Compiladores cruzados. 1998) Conclusiones Los compiladores fueron creados para facilitar y agilizar el proceso de creación de un programa sin ellos programar sería un trabajo aún más complicado de lo que ya es. Compiladores de varias pasadas. pero este proceso ya es automático). (Sanchez Dueñas & Valverde Andreu. (Catalan. se puede ensamblar el código y obtener un ejecutable. ya que consiste en ir pasando las distintas instrucciones de CI (que suelen ser de pocos tipos diferentes) al lenguaje ensamblador de la máquina que se vaya a utilizar (más adelante. genera el árbol de derivación y rellena los valores de la tabla de símbolos. Compiladores de una sola pasada. Back End: parte en donde se genera el código máquina exclusivo para una plataforma a partir de lo analizado en el front end. (1989).7 Bibliografía alegsa.alegsa. (1998). Sanchez Dueñas. 448). Compiladores e intérpretes: un enfoque pragmático (pág. http://www. J.php.ar/Dic/compilador. R. Compiladores: Teoria he implementacion.ar/Dic/compilador. Obtenido de http://www.ar/Dic/compilador. En G. Valverde Andreu. A.alegsa. 369). Sanchez Dueñas. Madrid: RC Libros. (2010). Compiladores: Teoria he implementacion (pág. G.alegsa. & Valverde Andreu. .com..com. Compiladores e intérpretes: un enfoque pragmático. & J. En J. J.com. Madrid: Diaz de Santos .php Catalan. R.php: http://www. Catalan.