Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
LENGUAJES Y AUTOMATAS
COMPILADOR
Un compilador toma como su entrada un programa escrito en su lenguaje fuente y produce un programa equivalente escrito en su lenguaje objetivo.
ISC. ROSA IMELDA GARCIA CHI, MTI
COMPILADOR
Por lo regular, el lenguaje fuente es un lenguaje de alto nivel, tal como C o C++, mientras que el lenguaje objetivo es cdigo objeto (tambin llamado en ocasiones cdigo de mquina) para la mquina objetivo, es decir, cdigo escrito en las instrucciones de mquina correspondientes a la computadora en la cual se ejecutar.
PROGRAMA FUENTE
COMPILADOR
PROGRAMA OBJETO
ENLAZADOR O LINKEADOR
PROGRAMA EXECUTABLE
UN COMPILADOR
Un compilador es un programa muy complejo con un nmero de lneas de cdigo que puede variar de 10,000 a 1,000,000. Escribir un programa de esta naturaleza, o incluso comprenderlo, no es una tarea fcil, y la mayora de los cientficos y profesionales de la computacin nunca escribirn un compilador completo
ISC. ROSA IMELDA GARCIA CHI, MTI
EL COMPILADOR Y EL INTRPRETE
No obstante, los compiladores se utilizan en casi todas las formas de la computacin, y cualquiera que est involucrado profesionalmente con las computadoras debera conocer la organizacin y el funcionamiento bsicos de un compilador. Adems, una tarea frecuente en las aplicaciones de las computadoras es el desarrollo de programas de interfaces e intrpretes de comandos, que son ms pequeos que los compiladores pero utilizan las mismas tcnicas. Por lo tanto, el conocimiento de estas tcnicas tiene una aplicacin prctica importante.
ISC. ROSA IMELDA GARCIA CHI, MTI
EL LENGUAJE ENSAMBLADOR
Por supuesto la escritura de tales cdigos es muy tediosa y consume mucho tiempo.
MOV X,2
ISC. ROSA IMELDA GARCIA CHI, MTI
UN ENSAMBLADOR
Un ensamblador traduce los cdigos simblicos y las localidades de memoria del lenguaje ensamblador a los cdigos numricos correspondientes del lenguaje de mquina. El lenguaje ensamblador mejor enormemente la velocidad y exactitud con la que podan escribirse los programas, y en la actualidad todava se encuentra en uso, en especial cuando se necesita una gran velocidad o brevedad en el cdigo.
Sin embargo, el Lenguaje ensamblador tiene varios defectos: an no es fcil de escribir y es difcil de leer y comprender.
LENGUAJE ENSAMBLADOR
Adems, el lenguaje ensamblador depende en extremo de la mquina en particular para la cual se haya escrito, de manera que el cdigo escrito para una computadora debe volver a escribirse por completo para otra mquina. Como es evidente, el siguiente paso fundamental en la tecnologa de programacin fue escribir las operaciones de un programa de una manera concisa que se pareciera mucho a la notacin matemtica o lenguaje natural de manera que fueran independientes de cualquier mquina en particular y todava se pudieran traducir mediante un programa para convertirlas en cdigo ejecutable.
Por ejemplo, el anterior cdigo del Lenguaje ensamblador se puede escribir de manera concisa e independiente de una mquina en particular como:
X=2
ISC. ROSA IMELDA GARCIA CHI, MTI
PRIMER COMPILADOR
Al principio se tema que esto no fuera posible, o que si lo fuera, el cdigo objeto sera tan poco eficiente que resultara intil.
El desarrollo del lenguaje FORTRAN y su compilador, llevado a cabo por un equipo en IBM dirigido por John Backus entre 1954 y 1957 demostr que estos temores eran infundados.
No obstante, el xito de este proyecto se debi slo a un gran esfuerzo, ya que la mayora de los procesos involucrados en la traduccin de lenguajes de programacin no fueron bien comprendidos en el momento.
LENGUAJE NATURAL
Ms o menos al mismo tiempo en que el primer compilador se estaba desarrollando, Noam Chomsky comenz a estudiar la estructura del lenguaje natural. Sus hallazgos finalmente hicieron que la construccin de compiladores se volviera mucho ms fcil e incluso pudiera ser automatizado hasta cierto punto.
Los estudios de Chomsky condujeron a la clasificacin de los lenguajes de acuerdo con la complejidad de sus gramticas (las reglas que especifican su estructura) y la potencia de los algoritmos necesarios para reconocerlas.
ISC. ROSA IMELDA GARCIA CHI, MTI
LA JERARQUA DE CHOMSKY
La jerarqua de Chomsky como ahora se le conoce, se compone de cuatro niveles de gramticas, denominadas gramticas tipo O, tipo 1, tipo 2 y tipo 3, cada una de las cuales es una especializacin de su predecesora.
LA JERARQUA DE CHOMSKY
Las gramticas de tipo 2, o gramticas libres de contexto, demostraron ser las ms tiles para lenguajes de programacin, en la actualidad son la manera estndar para representar la estructura de los lenguajes de programacin.
El estudio del problema del anlisis sintctico (la determinacin de algoritmos eficientes para el reconocimiento de lenguajes libres de contexto) se llev a cabo en las dcadas de los 60 y 70 y condujo a una solucin muy completa de este problema, que en la actualidad se ha vuelto una parte estndar de la teora de compiladores.
ISC. ROSA IMELDA GARCIA CHI, MTI
TCNICAS DE OPTIMIZACIN
Mucho ms complejo ha sido el desarrollo de mtodos para la generacin de cdigo objeto eficaz, que comenz con los primeros compiladores y contina hasta nuestros das.
Estas tcnicas suelen denominarse, incorrectamente, tcnicas de optimizacin, pero en realidad deberan llamarse tcnicas de mejoramiento de cdigo, puesto que casi nunca producen un cdigo objeto verdaderamente ptimo y slo mejoran su eficacia.
ISC. ROSA IMELDA GARCIA CHI, MTI
GENERACIN DE CDIGO
A fines de los aos 70 y principios de los 80 diversos proyectos se enfocaron en automatizar la generacin de otras partes de un compilador, incluyendo la generacin del cdigo.
Estos intentos han tenido menos xito, posiblemente debido a la naturaleza compleja de las operaciones y a nuestra poca comprensin de las mismas.
LIGADORES
EDITORES
PREPROCESADORES
CARGADORES
DEPURADORES
PERFILADORES
ADMINISTRADORES DE PROYECTO
TAREA 3.
Elabora un mapa conceptual en base a cada uno de los programas relacionados con los compiladores.
PROCESO DE TRADUCCIN
De un COMPILADOR
ARBOL SINTCTICO
ANALIZADOR SEMNTICO ARBOL CON ANOTACIONES
OPTIMIZADOR DE CDIGO FUENTE CDIGO INTERMEDIO GENERADOR DE CDIGO CDIGO OBJETO OPTIMIZADOR DE CDIGO OBJETO
CDIGO OBJETO
ISC. ROSA IMELDA GARCIA CHI, MTI
COMPILACIN
Un compilador es un programa informtico que traduce un programa escrito en un lenguaje de programacin a otro lenguaje de programacin, generando un programa equivalente que la mquina ser capaz de interpretar. Usualmente el segundo lenguaje es lenguaje de mquina, pero tambin puede ser un cdigo intermedio (bytecode), o simplemente texto.
COMPILADOR
Un compilador es un programa que permite traducir el cdigo fuente de un programa en lenguaje de alto nivel, a otro lenguaje de nivel inferior (tpicamente lenguaje de mquina). De esta manera un programador puede disear un programa en un lenguaje mucho ms cercano a como piensa un ser humano, para luego compilarlo a un programa ms manejable por una computadora.
PARTES DE UN COMPILADOR
FASES DE UN COMPILADOR
La construccin de un compilador involucra la divisin del proceso en una serie de fases que variar con su complejidad. Generalmente estas fases se agrupan en dos tareas:
Anlisis:
Se trata de la comprobacin de la correccin del programa fuente, e incluye las fases correspondientes al Anlisis Lxico (que consiste en la descomposicin del programa fuente en componentes lxicos), Anlisis Sintctico (agrupacin de los componentes lxicos en frases gramaticales ) y Anlisis Semntico (comprobacin de la validez semntica de las sentencias aceptadas en la fase de Anlisis Sintctico).
Sntesis:
Su objetivo es la generacin de la salida expresada en el lenguaje objeto y suele estar formado por una o varias combinaciones de fases de Generacin de Cdigo (normalmente se trata de cdigo intermedio o de cdigo objeto) y de Optimizacin de Cdigo (en las que se busca obtener un cdigo lo ms eficiente posible).
ALTERNATIVAMENTE, LAS FASES DESCRITAS PARA LAS TAREAS DE ANLISIS Y SNTESIS SE PUEDEN AGRUPAR EN FRONT-END Y BACK -END:
Es la parte que analiza el cdigo fuente, comprueba su validez, genera el rbol de derivacin y rellena los valores de la tabla de smbolos. Esta parte suele ser independiente de la plataforma o sistema para el cual se vaya a compilar, y est compuesta por las fases comprendidas entre el Anlisis Lxico y la Generacin de Cdigo Intermedio.
Front-end:
Back-end:
Es la parte que genera el cdigo mquina, especfico de una plataforma, a partir de los resultados de la fase de anlisis, realizada por el Front End.
TIPOS DE COMPILADORES
E STA TA XONOMA DE LOS T I P OS DE C OM P I LA DORES N O E S E XC LUY E NTE, P OR LO QUE P UE DE H A BE R C OM P I LADORES QUE SE A DSC RI BAN A VA RI AS CAT EG ORAS :
realizan cambios en el cdigo para mejorar su eficiencia, pero manteniendo la funcionalidad del programa original.
generan el cdigo mquina a partir de una nica lectura del cdigo fuente.
necesitan leer el cdigo fuente varias veces antes de poder producir el cdigo mquina.