Escolar Documentos
Profissional Documentos
Cultura Documentos
Definicin de compilador
Historia de los compiladores
Tipos de traductores
Fases de un compilador
Agrupamiento de fases
Compiladores cruzados
Herramientas automticas
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.
Mensajes de error
Definicin de compilador
Generalmente al lenguaje fuente se le asocia como lenguaje de alto nivel,
mientras al lenguaje objeto se el conoce como cdigo objeto (cdigo de
maquina) escrito especficamente para una maquina objeto. A lo largo del
proceso de traduccin el compilador debe informar la presencia de
errores en el lenguaje fuente.
X=2
John Backus lider un grupo de trabajo en IBM para realizar de un traductor de cdigo
mquina a frmulas matemticas. Resultando con gran xito: la especificacin de un
lenguaje de alto nivel (FORTRAN, FORmule TRANslation) Trabajaron 18 personas
durante mas de un ao en el proyecto.
Fe un compilador hecho ad-hoc (a puro corazn), pues no exista una teora formal,
sino que se iban resolviendo las construcciones una a una, para cada situacin
particular.
Historia de los Compiladores
Noam Chomsky comienza sus estudios sobre la estructura del lenguaje natural. Sus
estudios lo condujeron a la clasificacin de los lenguajes de acuerdo a una jerarqua de
sus gramticas, adems sus estudios sobre los algoritmos de reconocimiento derivaron
en una automatizacin del proceso de traduccin mas eficiente.
Aparecen los primeros programas que automatizan los procesos de anlisis lxico y
sintctico. Surgiendo la llamada Torre de Babel debido a la proliferacin de la teora
para la construccin de compiladores.
Historia de los Compiladores
Niklaus Wirth, disea Pascal, pensado para la enseanza.
1980,
980 comienzan
i a proliferar
lif l tcnicas
las i d mejoramiento
de j i d cdigo
de di
(optimizacin), se consolida y prolifera el concepto de asignacin y liberacin
de memoria dinmica. La programacin orientada a objetos es extensamente
utilizada y madura.
Es til pensar en estas fases como piezas separadas dentro del compilador,
y pueden en realidad escribirse como operaciones codificadas
separadamente aunque en la prctica a menudo se integran.
Fases de Compilacin
Analizador lxico: lee la secuencia de caracteres de izquierda a derecha del
programa fuente y agrupa las secuencias de caracteres en unidades con
significado propio (componentes lxicos o tokens en ingles).
Fases de Compilacin
Los nodos internos del rbol de anlisis gramatical estn etiquetados con los
nombres de las estructuras que representan y las hojas del rbol representan
la secuencia de tokens.
Fases de Compilacin
Anlisis semntico: realiza las comprobaciones necesarias sobre el rbol
sintctico para determinar el correcto significado del programa.
Fases de Compilacin
Generacin y optimizacin de cdigo intermedio: la optimizacin consiste
en la calibracin del rbol sintctico donde ya no aparecen construcciones
de alto nivel. Generando un cdigo mejorado, ya no estructurado, ms
fcil de traducir directamente a cdigo ensamblador o mquina,
compuesto de un cdigo de tres direcciones (cada instruccin tiene un
operador, y la direccin de dos operndoos y un lugar donde guardar el
resultado),), tambin conocida como cdigog intermedio.
Suelen implementarse
p a mano,, y son complejos
p j p porque
q la ggeneracin de un
buen cdigo objeto requiere la consideracin de muchos casos particulares.
Encuentra errores:
En tiempo de compilacin: errores lxicos (ortogrficos), sintcticos
(construcciones incorrectas) y semnticos (p.ej. errores de tipo)
En tiempo de ejecucin: direccionamiento de vectores fuera de rango, divisiones
por cero,
cero etc.
etc
De especificacin/diseo: compilan correctamente pero no realizan lo que el
programador desea.
Etapa de anlisis:
Anlisis lxico
Anlisis sintctico
Anlisis semntica
Etapa de sntesis:
Optimizacin y generacin de cdigo intermedio
Generacin de cdigo objeto
Compilador Cruzado
Herramientas Automticas
Son programas de ayuda en el proceso de escritura de compiladores:
sistemas generadores de traductores. Tambin se les conoce como
compiler writing tools, compiler generators, compiler-compilers. A
continuacin mencionaremos los mas conocidos.
Aho, A.V., Sethi, R., Ullman, J.D. (1990), Compiladores: principios, tcnicas
y herramientas, capitulo 1, pginas: 1- 25, 743-747.