Tecnológico de Iztapalapa Carrera: Ingeniería en Sistemas Computacionales Semestre: séptimo Nombres: Jiménez Leyva Cesar Profesor: I.S.C. Abiel Tomas Parra Materia: Lenguajes y Autómatas II Trabajo: Proyecto Compilador Proyecto compilador Conversión léxica La conversión léxica nos permitirá analizar cada línea de código y observar si existe algún error en cada una de ellas. - Dentro de la conversión léxica el proyecto compilador contiene palabras clave en las que se basa para analizar un código y ejecutarlo a través de sus componentes como palabras clave comprendemos algunas de ellas como son: “jets, std, using, namespace, int, float char, stdio, cout, getch, conio, dos, string, stdlib, match, short, long, double, class, public, static, void, for, if, while, do, switch case, printf, scanf, gotoxy, return, include, else, getch, gets, clrscr, getch, final, cin”. Son algunas de muchas palabras clave existentes, pero son estas las más importantes que el proyecto maneja dentro de su estructura. - Como caracteres especiales y operadores que el proyecto compilador maneja para realizar la ejecución de código son los siguientes: =, <=, >=, <, >, +, *, -, /, %, #, %, &, (,), ¡, !, “, {, }, [, ]. Son algunos operadores y carácter especiales de los cuales el proyecto maneja dentro de su estructura para la ejecución y compilación de un código. - Una de las partes importantes del proyecto compilador es el manejo de sus identificadores los cuales permitirán reconocer que tipo de componentes son los que se manejan en la estructura del código y se observara la acción de cada uno de ellos. - En la estructura integra del proyecto se observa una de las partes importantes que realiza al ejecutar y compilar un código, la cual es el manejo de espacios en blanco, una vez que se analiza el código se reconoce el espacio entre textos y el espacio entre identificadores y otros componentes, ya que de no ser así el proyecto tendría una problemática y se darían una secuencia de errores en la salida. - El manejo de comentarios también es un factor importante ya que permitirá observar al momento de ejecutar un código, en la salida observara si es que también analiza esta parte de un fragmento de código, el proyecto compilador realiza esta acción sin problemas. ¿Qué es un compilador? Un traductor es cualquier programa que toma como entrada un texto escrito en un lenguaje, llamado fuente y da como salida otro texto en un lenguaje, denominado objeto. Texto Lenguaje Fuente ----------> Traductor ----------> Texto Lenguaje Objeto En el caso de que el lenguaje fuente sea un lenguaje de programación de alto nivel y el objeto sea un lenguaje de bajo nivel (ensamblador o código de máquina), a dicho traductor se le denomina compilador. Un ensamblador es un compilador cuyo lenguaje fuente es el lenguaje ensamblador. Un intérprete no genera un programa equivalente, sino que toma una sentencia del programa fuente en un lenguaje de alto nivel y la traduce al código equivalente y al mismo tiempo lo ejecuta. Sintaxis y semántica El proyecto compilador realiza el análisis sintáctico y semántico de manera correcta permitiendo que el código de muestra sea analizado de manera efectiva reconociendo sus errores (en caso de modificación), en otro caso el análisis del programa de muestra será el correcto. Programas de muestra Se tienen algunos programas de muestra los cuales permiten la ayuda que necesita el proyecto compilador para saber si es correcto el funcionamiento de cada componente de su estructura, teniendo un ejemplo de muestra un programa en lenguaje “c” que solo imprime el comentario “hola mundo” sin tener alguna modificación se ingresa al compilador y se analiza, siendo correcto el resultado del proyecto, ya que no marca algún error dentro del análisis. En otro caso modificando el programa para que al ejecutarlo nos muestre algún error en cualquier línea de código, se ingresa nuevamente el programa de muestra ya modificado y al obtener el resultado del análisis resulta correcto pero hay una excepción, la cual es que al obtener el resultado con un error en la salida de su análisis el proyecto compilador no muestra el error y no muestra donde estuvo, pero si lo identifica porque elimina la línea de código que contiene el error, es la única excepción del proyecto ya que si realiza las funciones correspondientes pero no muestra los resultados necesarios al momento de ejecución del programa de muestra. Ambiente de ejecución Dentro del ambiente de ejecución del proyecto compilador se desarrolló en java así mismo su ejecución y compilación de los programas de muestra y su finalización. Proyectos de programación Dentro de los proyectos de programación encontramos algunos relacionados con el proyecto compilador ya que este se fue construyendo por etapas hasta su finalización, estas etapas son consideradas importantes ya que fueron realizadas con todo el cuidado para que realizaran las funciones de cada una de ellas estas etapas fueron: análisis léxico, análisis sintáctico y el análisis semántico las cuales fueron las etapas más importantes del proyecto compilador. como sabemos ya los compiladores son programas o herramientas encargadas de compilar. Un compilador toma un texto (código fuente) escrito en un lenguaje de alto nivel ( en nuestro caso C++) y lo traduce a un lenguaje comprensible por las computadoras (código objeto). Debido a lo que hemos podido experimentar he investiga podemos concluir que generalmente un compilador se divide en dos partes: * Front End: parte que analiza el código fuente, comprueba su validez, genera el árbol de derivación y rellena los valores de la tabla de símbolos. Parte que suele ser independiente de la plataforma o sistema operativo para el que funcionará. * 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. Por lo general el resultado del back end no puede ser ejecutado directamente, se necesita pasar por un proceso de enlazado (linker). Existen varios tipos de compiladores: Compiladores cruzados, Compiladores optimizadores, Compiladores de una sola pasada, Compiladores de varias pasadas, Compiladores JIT (Just In Time). A grandes rasgos el proceso se puede describir en los siguientes pasos: * El compilador recibe el código fuente. * Se analiza lexicográficamente. * Se analiza semántica y sintácticamente * Se genera el código intermedio no optimizado. * Se optimiza el código intermedio. * Se genera el código objeto para una plataforma específica. Finalmente, ya puede ejecutarse el código máquina. Aunque se me dificulta aún muchas cosas pude realizar algunos ejercicios en algunos experimente errores y otros resultaron bien hay que tener presente que uno solo de los comandos mal proporcionados al compilador producirá errores. En por ejemplo Crimson Editor al utilizarlo como un editor profesional de código fuente nos facilita el pasar los categorismos al compilador.