Documentos de Académico
Documentos de Profesional
Documentos de Cultura
FACULTADA DE SISTEMAS
COMPUTACIONALES
7 SEMESTRE
OBJETIVO GENERAL
EL ALUMNO APLICARA TCNICAS Y
HERRAMIENTAS DE DESARROLLO
DE COMPILADORES PARA
ELABORAR SOFTWARE DE BASE,
OBTENIENDO UN SOFTWARE QUE
OPTIMICE TANTO MEMORIA COMO
DESEMPEO.
UNIDAD 1
ELEMENTOS PARA EL ESTUDIO DE LOS
COMPILADORES.
OBJETIVO DE LA UNIDAD I
EL ALUMNO DESCRIBIR LAS
ETAPAS EN EL PROCESO DE
COMPILACIN, SIN IMPORTAR
EL TIPO DE TRADUCTOR DE
QUE SE TRATE.
COMPILADORES
FACULTADA DE SISTEMAS
COMPUTACIONALES
7 SEMESTRE
Conceptos relacionados
Arquitectura de
Computadoras
Teora de
Lenguajes
Lenguajes de
Programacin
Compiladores
Ingeniera de
Software
Teora de
Algoritmos
Conceptos
CDIGO FUENTE
Se le da el nombre de cdigo
fuente a los programas escritos en
un determinado lenguaje de
programacin
y
que
est
compuesto
por
instrucciones
escritas por un programador. El
cdigo fuente no constituye
software propiamente dicho pero
es una instancia mediante la cual
se logra el software
Conceptos
Traductores de un Lenguaje de Programacin
Los
traductores
son
programas que traducen los
programas en cdigo fuente,
escritos en lenguajes de alto
nivel, a programas escritos en
lenguaje mquina.
Definicin de compilador
Traductor:
Compilador:
Interprete:
traduce.
Compiladores
Un compilador es un programa que lee un programa en un lenguaje y
lo traduce a un programa equivalente en otro lenguaje, y adems
informa al usuario sobre la presencia de errores en el programa de
entrada
Programa
fuente
Programa
compilador
mensajes
de error
objeto
Compiladores
El trabajo del compilador y su funcin es
llevar el cdigo fuente escrito en C/C++ a un
programa escrito en lenguaje mquina.
Un programa en cdigo fuente es compilado
obteniendo un archivo parcial (un objeto)
que tiene extensin obj.
Luego el compilador invoca al linker que
convierte al archivo objeto en un ejecutable
con extensin exe;
Este ltimo archivo es un archivo en
formato binario (ceros y unos) y puede
funcionar por s slo.
Interprete
Los intrpretes no producen un lenguaje
objetivo como en los compiladores. Un
intrprete lee el cdigo como est escrito e
inmediatamente lo convierte en acciones; es
decir, lo ejecuta en ese instante.
Existen lenguajes que utilizan un intrprete
(como por ejemplo JAVA) que traduce en el
instante mismo de lectura el cdigo en
lenguaje mquina para que pueda ser
ejecutado.
coste espacial
Mayor interactividad en desarrollo
Aadir cdigo en caliente
HISTORIA
Computadoras
Hombre
Cdigo
Mquina
Ensamblador
Cdigo
Mquina
Ensamblador
Cdigo
Mquina
Lenguaje
Ensamblador
Compilador
Lenguaje
Lenguaje de
Ensamblador
Alto Nivel
Parte de la compilacin
Fase
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:
Palabras clave de forma automtica
Saltos desde un parntesis, llave, o corchete que abre hasta su correspondiente que cierra.
Ayuda en la edicin de las estructuras propias del lenguaje.
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:
Partes del programa que nunca se podrn ejecutar.
Si una variable se utiliza antes de ser definida.
Intentar utilizar una variable de tipo real como apuntador.
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).
Introduccin a la compilacin
Estructura del programa fuente
El contexto de un compilador
Preprocesador
Cuando
se requiere
generar
un
objeto
ejecutable, el compilador
requiere
de
otros
programas.
Programa fuente
Compilador
Ensamblador
Enlazador y cargador
1Actividad
Estructura y fases de un
Conceptualmente
un
compilador
en
opera
cuales
transforma
al
compilador
Estructura y fases de un
compilador
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
Anlisis lineal
Tambin
Identificador (posicin)
Smbolo de asignacin (=)
Identificador (inicial)
Signo de suma (+)
Identificador (velocidad)
Signo de multiplicacin (*)
Nmero (60)
Estructura y fases de un
compilador
Anlisis jerrquico
Proposicin
de asignacin
Identificador
posicin
=
expresin
expresin
+
expresin
identificador
expresin
inicial
identificador
Nmero
velocidad
60
expresin
Estructura y fases de un
compilador
expresin1 + expresin2
expresin1 * expresin2
Proposicin
(expresin1)
de asignacin
Identificador
posicion
=
expresin
expresin
+
expresin
identificador
expresin
inicial
identificador
Nmero
velocidad
60
expresin
Estructura y fases de un
Identificador1 = expresin2
compilador
Estructura y fases de un
compilador
Anlisis semntico
TABLA DE SMBOLOS
Estructura de datos que contiene un registro por cada
identificador, con los campos para los atributos:
-- Informacin sobre la memoria asignada
-- Tipo
-- mbito
-- Si es nombre de procedimiento (nmero, tipo
y mtodo de paso de cada argumento)
Ao 2004
34
Proposicin
de asignacin
d1
Identificador
posicion
t3
d2
expresin
expresin
d3
t2
expresin
*
t1
identificador
expresin
inicial
identificador
Nmero
velocidad
60
expresin
OPTIMIZACIN DE CDIGO
Trata de mejorar el cdigo intermedio para que resulte un cdigo de
mquina ms rpido de ejecutar
En el ejemplo:
t2 : = id3 * 60.0
id1 : = id2 + t2
La conversin a real se hace en compilacin
No necesita t1 ni t3.
Proposicin
de asignacin
d1
Identificador
posicion
t3
d2
expresin
expresin
d3
t2
expresin
*
t1
identificador
expresin
inicial
identificador
Nmero
velocidad
60
expresin
Proposicin
de asignacin
d1
Identificador
posicion
t3
d2
expresin
expresin
d3
t2
expresin
*
t1
identificador
expresin
inicial
identificador
Nmero
velocidad
60
expresin
GENERACIN DE CDIGO
La fase final genera cdigo objeto ( en general cdigo de mquina
recolalizable o cdigo ensamblador)
Se seleccionan las posiciones de memoria para las variables usadas por
el programa .
Se traduce cada una de las instrucciones intermedias a una secuencia de
instrucciones de mquina
Un aspecto decisivo es la asignacin de variables a registros.
En el ejemplo, utilizando los registros 1 y 2:
MOVF id3, R2
MULF % 60.0, R2
MOVF id2, R1
ADDF R2, R1
MOVF R1, id1
Analizador lxico
id1 = id2 + id3 * 60
Analizador sintctico
=
id1
+
id2
*
id3
60
Analizador semntico
=
id1
+
id2
id3
*
ent a real
T ABLA DE SIMBOLOS
1
posicion
inicial
velocidad
60
Generador de cdigo intermedio
temp1 = entreal(60)
temp2 = id3 * temp 1
temp3 = id2 +temp 2
Id1 = temp3
Optimizador de cdigo
temp 1 = id3 * 60.0
temp 2 = id2 +temp 1
Id1 = temp2
Generador de cdigo
MOVF id 3, R2
MULF #60.0, R2
MOVF id 2, R1
ADDF R2, R1
MOV R1, id1
Vel = V0 + Acel
V1 = V2 + V3
<sent>
< sent asign>
<var>
<expre>
<expre> + <term>
V1
<term>
<fact>
=
V2
V1 V2 V3 + =
LOAD Acel
ADD V0
STORE Vel
<fact>
+
V3
RECONOCEDOR:
Anlisis sintctico:
la sentencia es correcta
BENEFICIOS
Lenguaje de prog.
Inteligencia artificial
Interfases de reconocimiento de
lenguaje natural
Sistemas operativos
Diseo de interfaces
Administracin de
proyectos inform.
Seleccin de herramientas de
desarrollo. Evaluacin de costo y
beneficios.
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
LENGUAJES Y TIPOS DE
TRADUCTORES
Ensamblador
Compilador
Cargador o editor de vnculos
Preprocesador o macroprocesador
Conversor fuente-fuente
Simulador o intrprete de software
Compresores
Formateadores
EJEMPLO:
Legibilidad.
Facilidad de escritura.
Facilidad de verificacin.
Facilidad de traduccin.
Carencia de ambigedad.
ESPECIFICACIN DE TIPO Y
ESTRUCTURA DE DATOS.
Preguntas
OBJETIVO DE LA UNIDAD I
EL ALUMNO DESCRIBIR LAS ETAPAS EN
EL PROCESO DE COMPILACIN, SIN
IMPORTAR EL TIPO DE TRADUCTOR DE
QUE SE TRATE.