Está en la página 1de 19

UNIVERSIDAD MARIANO GALVEZ DE GUATEMALA FACULTAD DE INGENIERIA EN SISTEMAS DE INFORMACION Curso: Compiladores Pre-requisitos: 090454 Lenguajes Formales EVALUACIN

Cdigo: 090457

Parciales Primer Parcial Segundo Parcial Laboratorios, tares y trabajos de investigacin


Examen Final Examen Final Proyectos Nota Final

10 puntos 20 puntos 20 puntos

30 Puntos 20 Puntos 100 puntos

AHO ALFRED V., SEIT RAVI, ULLMAN JEFFREY D.; COMPILADORES Principios, tcnicas y herramientas; Editorial Addison Wesley Iberoamericana S.A.; Wilmington, USA; 1990.

Historia En 1946 se desarroll la primera computadora digital. En un principio, estas mquinas ejecutaban instrucciones consistentes en cdigos numricos que sealaban a los circuitos de la mquina los estados correspondientes a cada operacin, lo que se denomin lenguaje mquina. Pronto los primeros usuarios de estos ordenadores descubrieron la ventaja de escribir sus programas mediante claves ms fciles de recordar que esos cdigos; al final, todas esas claves juntas se traducan manualmente a lenguaje mquina. Estas claves constituyen los llamados lenguajes ensambladores. Pese a todo, el lenguaje ensamblador segua siendo el de una mquina, pero ms fcil de manejar. Los trabajos de investigacin se orientaron hacia la creacin de un lenguaje que expresara las distintas acciones a realizar de una manera lo ms sencilla posible para una persona. El primer compilador fue escrito por Grace Hopper, en 1952 para el lenguaje de programacin A-0. En 1950 John Backus dirigi una investigacin en IBM sobre un lenguaje algebraico. En 1954 se empez a desarrollar un lenguaje que permita escribir frmulas matemticas de manera traducible por un ordenador; le llamaron FORTRAN (FORmulae TRANslator). Fue el primer lenguaje de alto nivel y se introdujo en 1957 para el uso de la computadora IBM modelo 704.

Compilador
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. Este proceso de traduccin se conoce como compilacin. 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.

Definicin de compilador
Los compiladores son programas de computadora que traducen de un lenguaje a otro. Un compilador toma como su entrada un programa escrito en lenguaje fuente y produce un programa equivalente escrito en lenguaje objeto.

Modelo de anlisis y sntesis de la compilacin: En la compilacin hay dos partes: anlisis y sntesis. La parte del anlisis divide al programa fuente en sus elementos componentes y crea una representacin intermedia del programa fuente. La parte de la sntesis construye el programa objeto deseado a partir de la representacin intermedia. De las dos partes, la sntesis es la que requiere las tcnicas mas especializadas. Durante el anlisis, se determinan las operaciones que implica el programa fuente y se registra en una estructura jerrquica llamada rbol. A menudo, se usa una clase especial de rbol llamado rbol sintctico, donde cada nodo representa una operacin y los hijos un nodo son los argumentos de operacin.

Muchas herramienta de software que manipulan programas fuente realizan primero algn tipo de anlisis. Alguno ejemplos de tales herramientas son: 1. Editores de estructuras. Un editor de estructuras toma como entrada una secuencia de ordenes para construir un programa fuente. El editor de estructuras no solo realiza las funciones de creacin y modificacin de textos de un editor de textos ordinario, sino que tambin analiza el texto del programa, imponiendo al programa fuente una estructura jerrquica apropiada. Por ejemplo, puede comprobar si la entrada esta formada correctamente, puede proporciona palabras clave de manera automtica (por ejemplo, cuando el usuario escribe while, el editor proporciona el correspondiente do y le recuerda al usuario que entre las dos palabras debe ir un condicional. 1. Impresoras estticas: Una impresora esttica analiza un programa y lo imprime de forma que la estructura del programa resulte claramente visible. Por ejemplo, los comentarios pueden aparecer con un tipo de letra especial, y las proposiciones pueden aparecer con una indentacin proporcional a la profundidad de su anidamiento en la organizacin jerrquica de las proposiciones.

3. Verificadores estticos: Un verificador esttico lee un programa, lo analiza e intenta descubrir errores potenciales sin ejecutar el programa. La parte del anlisis es similar a la que se encuentra en los compiladores de optimacin. As un verificador esttico puede detectar si hay partes de un programa que nunca se podrn ejecutar o si cierta variable se usa antes de ser definida. Adems, puede detectar errores de lgica como intentar utilizar una variable real como apuntador, empleando las tcnicas de verificacin de tipos.

4. Intrpretes: En lugar de producir un programa objeto como resultado de una traduccin, un interprete realiza las operaciones que implica el programa fuente. Para una proposicin de asignacin, por ejemplo, un intrprete podra construir un rbol como el de la figura 5, y despus efectuar las operaciones de los nodos conforme "recorre" el rbol. En la raz descubrira que tiene que realizar una asignacin, y llamara a una rutina para evaluar la expresin de la derecha y despus almacenara el valor resultante en la localidad de memoria asignada con el identificador posicin. En el hijo derecho de la raz, la rutina descubrira que tiene que calcular la suma de dos expresiones. Se llamara a si misma de manera recursiva para calcular el valor de la variable de la expresin velocidad * 60. despus sumaria ese valor de la variable inicial.

Muchas veces los interpretes se usan para ejecutar lenguajes de ordenes, pues cada operador que se ejecuta en un lenguaje de ordenes suele ser una invocacin de una rutina compleja. Como un edito o un compilador. Del mismo modo, algunos lenguajes de muy alto nivel, como APL, normalmente son interpretados, porque hay muchas cosas sobre los datos, como el tamao y la forma de las matrices, que no se pueden deducir en el momento de la compilacin.

1. Formadores de textos. Un formador de texto toma como entrada una cadena de caracteres, la mayor parte de la cual es texto para componer. 2. Compiladores de circuitos de silicio. Tiene un lenguaje fuente similar o idntico a un lenguaje de programacin convencional.

3. Interpretes de consultas. Traduce un predicado que contiene operadores relacionales y booleanos a ordenes.
El contexto de un compilador Adems de un compilador, se pueden necesitar otros programas para crear un programa objeto ejecutable. Un programa fuente se puede dividir en mdulos almacenados en archivos distintos. El preprocesador tambin puede expandir abreviaturas. La figura 1.3 muestra una compilacin tpica. El programa objeto creado por el compilador puede requerir procesamiento adicional antes de poderlo ejecutar.

1.2 anlisis del programa fuente: En la compilacin el anlisis consta de tres fases: 1. Anlisis lineal, en el que la cadena de caracteres que constituye el programa fuente se lee de izquierda a derecha y se agrupa en componentes lxicos, que son secuencias de caracteres que tienen un significado colectivo. 2. Anlisis jerrquico, en el que los caracteres o los componentes lxicos se agrupan jerrquicamente en colecciones anidadas con un significado colectivo. 3. Anlisis semntico, en el que se realizan ciertas revisiones para asegurar que los componentes de un programa se ajustan de un modo significativo.

Anlisis lxico: En un compilador, el anlisis lineal se llama anlisis lxico o exploracin. Por ejemplo, en el anlisis lxico los caracteres de la proposicin de asignacin. Posicin := inicial + velocidad * 60 Se agruparan en los componente lxicos siguientes: 1. El identificador posicin. 2. El smbolo de asignacin :=. 3. El identificador inicial. 4. El signo de suma +. 5. El identificador velocidad. 6. El signo de multiplicacin *. 7. El numero 60.

Los espacios en blanco que separan los caracteres de estos componentes lxicos normalmente se eliminan durante el anlisis lxico.

Anlisis sintctico: El anlisis jerrquico se denomina anlisis sintctico. Este implica agrupar los componente lxicos del programa fuente en frases gramaticales que el compilador utiliza para sintetizar la salida. Por lo general, las frases gramaticales del programa fuente se representan mediante un rbol de anlisis sintctico.

Tarea para el sbado 8 de febrero Tipos de compiladores Investigar que es APL.

RECORRIDO: con sus palabra decir que recorrido se realiza en este rbol y generar el recorrido y cuales son los otros recorridos que hay
Posicin:= inicial + velocidad * 60

http://www.monografias.com/trabajos11/c ompil/compil2.shtml