Professional Documents
Culture Documents
Honestidad Acadmica
No utilizar trabajos de fuentes externas sin citarlas Incluyendo cdigo Se emplear software para detectar plagio varios casos en los semestres pasados
NO PLAGIO
Evaluacin
Calificaciones parciales: Entrega proyecto final: 25 % cada una 3 x 25% = 75% 25%
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
Elabor: Dr. Jos Raymundo Marcial Romero
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.)
Elabor: Dr. Jos Raymundo Marcial Romero
Fortran I
El primer compilador
Produjo cdigo casi tan bueno como escrito a mano. Alto impacto en ciencias de la computacin.
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)
Elabor: Dr. Jos Raymundo Marcial Romero
Adems los lenguajes de programacin emplean mas signos que otros lenguajes.
*p->f + = -.12345 e-5
Unidades:
If, x, ==, y, then, z, =, 1, ;, else, z, =, 2, ;
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.
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.
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
Anlogo a la traslacin entre lenguas
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.
Elabor: Dr. Jos Raymundo Marcial Romero
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 existen entre:
Nuevos lenguajes Nuevas arquitecturas.
Material Adicional
Flex (Para C)
http://www.gnu.org/software/flex/manual/ht ml_chapter/flex_toc.html
Tarea 1
Ejercicios 1.2 y 1.3 del libro de Kenneth