Академический Документы
Профессиональный Документы
Культура Документы
Unidad 1. Introduccin al
proceso de compilacin.
Contenido
Introduccin
a la compilacin
Estructura y fases de un compilador
Lenguajes y tipos de traductores
Herramientas para el desarrollo de un
compilador
Clasificacin de los compiladores
Introduccin a la compilacin
La
Compilador
Mensajes
de error
Programa
Objeto
de anlisis y sntesis de la
compilacin
Fase de anlisis
Fase de sntesis
Existe una gran variedad de software que realiza algn tipo de anlisis sobre
programas fuente, por ejemplo:
Editores de estructuras
Analiza el texto del programa fuente imponindole una estructura jerrquica apropiada.
Tambin puede proporcionar:
Visualizadores estticos
Imprime el programa fuente de tal forma que visiblemente claro. Por ejemplo:
Los comentarios pueden aparecer con un tipo de letra especial, al igual que las palabras clave.
Indentacin proporcional a la profundidad del anidamiento.
Verificadores estticos
Lee el programa fuente y lo analiza para intentar descubrir errores potenciales sin
ejecutar el programa. Por ejemplo:
Intrpretes
En lugar de producir un programa objeto como resultado de una traduccin, realiza las
operaciones que implica el programa fuente.
En la mayora de las ocasiones son utilizados para ejecutar rdenes (por ejemplo: el
intrprete de comandos).
Tradicionalmente se concibe a un
compilador como un programa que recibe
un programa fuente, escrito en algn
lenguaje de alto nivel, y genera cdigo
mquina.
Sin embargo, los principios con los que se
construyen compiladores tambin son
utilizados en otros lugares:
Introduccin a la
Estructura del programa fuente
compilacin (6)
Preprocesador
El contexto de un compilador
Programa fuente
Compilador
Programa objeto en lenguaje ensamblador
Ensamblador
Cdigo mquina relocalizable
Libreras, bibliotecas y
Archivos objeto relocalizables
Enlazador y cargador
Estructura y fases de un
compilador
Anlisis lineal
La secuencia de caracteres que forma 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.
Anlisis jerrquico
Los componentes lxicos se agrupan jerrquicamente en
colecciones anidadas con un significado colectivo.
Anlisis semntico
Se realizan ciertas revisiones para asegurar que los
componentes de un programa se ajustan de un modo
significativo.
Estructura y fases de un
compilador (2)
Anlisis lineal
Identificador (posicion)
Smbolo de asignacin (=)
Identificador (inicial)
Signo de suma (+)
Identificador (velocidad)
Signo de multiplicacin (*)
Nmero (60)
Estructura y fases de un
compilador (3)
Anlisis jerrquico
=
expresin
expresin
+
expresin
identificador
expresin
inicial
identificador
Nmero
velocidad
60
expresin
Estructura y fases de un
compilador (4)
expresin1 + expresin2
expresin1 * expresin2
(expresin1)
Proposicin
de asignacin
Identificador
posicion
=
expresin
expresin
+
expresin
identificador
expresin
inicial
identificador
Nmero
velocidad
60
expresin
Estructura y fases de un
compilador (5)
Identificador1 = expresin2
Estructura y fases de un
compilador (6)
Anlisis semntico
Revisa el programa e intenta encontrar errores semnticos.
Rene la informacin sobre los tipos para la fase posterior de
generacin de cdigo.
Un componente importante es la verificacin de tipos.
El anlisis semntico inserta una conversin de entero a real en el rbol de anlisis sintctico
=
posicion
posicion
inicial
velocidad
inicial
*
60
velocidad
*
ent a real
60
Estructura y fases de un
compilador (7)
Analizador sintctico
Administrador de la
Tabla de smbolos
Analizador semntico
Generador de
cdigo intermedio
Optimizador de cdigo
Generador de cdigo
Programa objeto
Manejador
de errores
Estructura y fases de un
compilador (8)
Analizador lxico
id1 = id2 + id3 * 60
Analizador sintctico
=
id1
Generacin de cdigo
id1
T ABLA DE SIMBOLOS
1
posicion
inicial
velocidad
Optimizacin de cdigo
60
Analizador semntico
*
id3
+
id2
+
id2
id3
*
ent a real
60
Estructura y fases de un
compilador (9)
Etapa inicial
Etapa final
CLR Architecture.PNG
Estructura y fases de un
compilador (10)
Pasadas
Reduccin de pasadas
Las instrucciones de tipo goto que saltan hacia delante. En este caso
es posible dejar un espacio en blanco y rellenar cuando la
informacin est disponible
Lenguajes y tipos de
traductores
Claridad y sencillez
Naturalidad para la aplicacin
Apoyo para la abstraccin
Facilidad para verificar programas
Entorno de programacin
Portabilidad de programas
Costo de uso
Costo de ejecucin
Costo de traduccin
Costo de creacin y prueba
Costo de mantenimiento
Procesamiento de un
programa en lenguaje C
Lenguajes compilados
Ordinariamente se traducen al
lenguaje mquina de la computadora
real que los ejecutar.
El traductor para estos lenguajes es
relativamente grande y complejo,
adems produce cdigo objeto que se
ejecutar con tanta eficiencia como
sea posible
Lenguajes interpretados
Cdigo en C
Tiempo de compilacin
(Traduccin)
Tiempo de ejecucin
Precompilador
Cdigo en Java
Archivos
de Cabecera
Compilador
Cdigo objeto
Enlazador
Procesamiento de un
programa en lenguaje Java
Compilador
Java
Bibliotecas
o
Paquetes
Bytecode Java
Red
Archivos
de Librera
Cdigo mquina
Cargador de clases
Hardware
Verificador de
Bytecode
Intrprete Generador
de
Cdigo
JVM Runtime
Hardware
Herramientas para la
construccin de compiladores
Compiladores de compiladores
Generadores de compiladores
Sistemas generadores de compiladores
Herramientas para la
construccin de compiladores (2)
Herramientas para la
construccin de compiladores (3)
Herramientas para la
construccin de compiladores (3)
Clasificacin de los
compiladores
Examinan solo una vez el cdigo fuente para generar el cdigo objeto
Clasificacin de los
compiladores (2)
Descompilador
Clasificacin de los
compiladores (3)
Compiladores-intrpretes
Compiladores cruzados