Professional Documents
Culture Documents
Introduccin
Perspectiva histrica
Motivacin Definiciones Componentes y fases de un compilador
Compilador
Programa Objeto
Mensajes de Error
Compiladores e intrpretes
Introduccin
Perspectiva histrica:
Aos 40-50
Aos 50-60
Aos 60-
Compiladores e intrpretes
Compiladores e intrpretes
Compiladores e intrpretes
Introduccin.
Conceptos Relacionados
Lenguajes de programacin
Teora de algoritmos
Compiladores e intrpretes
Introduccin.
Motivacin: el conocimiento de estos tpicos permite
Saber ms sobre correccin y eficiencia del cdigo Profundizar ms sobre lenguajes: Tipos:clases, estticos, dinmicos, polimorfismo, sobrecarga de operadores, conversiones Estructura de bloques, mbitos Paso de parmetros Gestin de memoria, punteros
Compiladores e intrpretes
Introduccin.
Motivacin: el conocimiento de estos tpicos permite
Aplicacin de la teora a la prctica Antes de el uso de teora de autmatas y lenguajes formales, tcnicas de programacin, los compiladores eran muy malos. Aplicar teora y herramientas a otros campos: Intrpretes de comandos y consultas en interfases usuarias Formateadores de textos (latex) Lenguajes de simulacin (GPSS) Editores de texto
Compiladores e intrpretes
Introduccin.
Compilador, definiciones I:
Ensamblador Compilador de bajo nivel, el lenguaje fuente tiene una estructura simple que permite una traduccin , una a una de una sentencia fuente a una en cdigo de mquina. Compilador cruzado: Compilador que toma un lenguaje fuente y genera un cdigo objeto, este objeto es para una plataforma o computador distinto en el que se compila.Ejemplo uso: fase de desarrollo de nuevos computadores.
Compiladores e intrpretes
Introduccin.
Compilador, definiciones II:
Compilar- linkear-ejecutar versus compilar-ejecutar: La primera opcin permite la modularizacin, compilando por separado las partes y luego enlazndolas. La segunda opcin es la ms simple. El compilador deja en memoria directamente un mdulo cargable que se ejecuta a continuacin. Compilador de una o varias pasadas: pasada:es el recorrido total de todo el fuente, con algn objetivo especfico. Por ejemplo, recursin indirecta: a()-?b() y b()--?a(), se pueden hacer dos pasadas.
Compiladores e intrpretes
Introduccin.
Compilador, definiciones III:
Compilador incremental (interactivo o conversacional): Si se descubren errores, luego de modificado el fuente, se compilan slo las modificaciones. Autocompilador: Compilador escrito en el propio lenguaje que compila Facilita la portabilidad, ejemplo C. Metacompilador: Es un programa que tiene como entrada una gramtica y genera el compilador del lenguaje definido por la misma, en realidad genera el cdigo del autmata, se debe aadir cdigo para lograr un compilador. Ej: Lex,Yacc
Compiladores e intrpretes
Introduccin.
Compilador, definiciones IV:
Decompilador Es un programa que tiene como entrada cdigo de mquina y lo traduce a un lenguaje de alto nivel. En la prctica es muy difcil volver atrs, en la prctica existen desensambladores, sirven para opciones de depuracin. Preprocesador Es un proceso anterior a la compilacin que permite modificar el programa fuente usando macroinstrucciones y directivas. Por ejemplo en C: #define constante 100. #include modulo.c
compilacin
objeto si Error? no
ejecucin
datos
Programa objeto
Resultados
Preprocesador
Ensamblador
Anlisis
Analizador Analizador Analizador Lxico Sintctico Semntico Generador Cdigo Intermedio
Generacin
Optimizador Generador de Cdigo
Entrada Salida
Tratamiento de errores
Analizador Lxico
(op,*)
(op, c)
(punt,;)
:=
corX a b + * c corY
:=
+ * b c
10
:=
corX a b + * c corY
:=
+ 3
11
:=
corX a b + * c corY
:=
+ 3
Push a a ->pila Push b b->pila Load ( c), R1 c->R1 Mult S, R1 b*c->R1 Store R1, R2 R1->R2 Add S, R1 a+b*c->R1 Store R1,(corX) R1 ->CorxX Add #3, R2 3+b*c->R2 Store R2,(corY) R1 ->corY
12