Documente Academic
Documente Profesional
Documente Cultură
Bibliografa
Libros de texto:
Compiladores. Principios, tcnicas y herramientas. Alfred V. Aho, Ravi Sethi, J. D. Ullman Addison-Wesley, 1998 (2007) Construccin de Compiladores. Principios y prcticas Kenneth C. Louden Thomson, 2004. Modern Compiler implementation in Java Andrew w. Appeal Cambridge
Fortran I
1954 IBM desarroll el 704 John Backus Idea: Trasladar cdigo de alto nivel a ensamblador Muchos pensaron que era imposible. 1954-7 Proyecto FORTRAN-1 Para 1958, >50% de todo el software estaba en Fortran. Redujo el tiempo de desarrollo dramticamente. (2 semanas -> 2 horas.) FORTRAN,
acrnimo de FORmula TRANslation (traduccin de frmulas). Primer lenguaje de programacin de alto nivel para computadoras, desarrollado de 1954 a 1958 por Jim Backus, padre de muchos de los conceptos fundamentales de alto nivel, como variables, expresiones, instrucciones, instrucciones condicionales y repetitivas, subrutinas compiladas de forma independiente y entrada y salida con formato. El FORTRAN es un lenguaje compilado y estructurado, utilizado tambin en los campos de la ciencia y la ingeniera. Este lenguaje se fue extendiendo y mejorando mucho, aunque en la actualidad apenas se utiliza; se ha sustituido por otros ms potentes y flexibles.
Fortran I
El primer compilador
Produjo cdigo casi tan bueno como escrito a mano. Alto impacto en ciencias de la computacin.
Condujo a un gran trabajo terico en el rea. Los compiladores modernos preservan la forma de Fortran.
La Estructura de un Compilador
Anlisis lxico Anlisis Sintctico Anlisis Semntico Optimizacin Generacin de cdigo
Los primeros 3, al menos se pueden entender por analoga con el pensamiento humano.
Anlisis Lxico
Primer paso: reconocer palabras. Las unidades ms pequeas Esto es una sentencia. Note la Mayscula " E " (smbolo inicial de la sentencia) Espacio " " (separador de palabras) Punto ". " (fin de la sentencia)
Adems los lenguajes de programacin emplean mas signos que otros lenguajes.
*p->f + = -.12345 e-5
Unidades:
Anlisis Sintctico
Una vez que se entendieron las palabras, el siguiente paso es entender la estructura de las sentencias.
Parsing = Diagramas de sentencias
El diagrama es un rbol
Anlisis Semntico
Una vez que se entendi la estructura, se analiza el significado. Los compiladores realizan un anlisis limitado para detectar inconsistencias. Algunos realizan un mayor anlisis para mejorar el rendimiento del programa.
Jack said Jerry left his assigment. A que se refiere his? Jack o Jerry.
An peor
Jack said Jack left his assigment at home. Cul dejo la tarea?
{
Int Jack = 3; { Int Jack = 4; count << Jack; } }
Optimizacin
No hay contraparte en Espaol o Ingles, pero es semejante a llevar a cabo edicin. Automticamente modifica programas para que: Corran ms rpido. Usen menos memoria En general, conserven mas recursos. El proyecto no tiene componentes de optimizacin.
Ejemplo de Optimizacin
X=Y*0
Es lo mismo que
X=0
Generacin de Cdigo
Generalmente produce cdigo en ensamblador.
Una traslacin a otro lenguaje
Problemas
La compilacin es casi simple, pero se tienen algunos problemas.
Ejemplo: Cmo se manipulan los programas errneos? El diseo de lenguajes tiene un gran impacto en los compiladores.
Determina que es fcil y difcil de compilar Tema del curso: mucho influye el diseo de los lenguajes.
Compiladores hoy en da
La estructura de casi cualquier compilador se adhiere a nuestro esquema de trabajo. Las proporciones han cambiado desde FORTRAN.
Antes: lxico, sintctico ms complejo, caro. Ahora: la optimizacin domina todas las otras fases, lxico y sintctico es barato.
Tendencias en Compilacin
La optimizacin para mejorar la velocidad es menos interesante. Excepto en:
Programas cientficos Procesadores avanzados Pequeos dispositivos donde la velocidad = vida mayor de la batera.
Tendencias
Compiladores
Ms complejos. Manejados por la distincin que existe entre:
Nuevos lenguajes Nuevas arquitecturas.
Material Adicional
Flex (Para C)
http://www.gnu.org/software/flex/manual/htm l_chapter/flex_toc.html
Tarea 1
Ejercicios 1.2 y 1.3 del libro de Kenneth