Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Comp Il Adores Clase 2
Comp Il Adores Clase 2
COMPILADORES
Unidad I: Introduccin al
proceso de compilacin
Flor Prof. Flor Narciso
GIDyC-Departamento de Computacin
LABSIULA-Escuela de Ingeniera de Sistemas
Facultad de Ingeniera
Universidad de Los Andes
fnarciso@ula.ve
Un lenguaje de programacin se
puede definir de diferentes maneras:
Notacin formal para describir algoritmos y
funciones que sern ejecutados por una
computadora.
Lenguaje para comunicar instrucciones a una
computadora.
Convencin para escribir descripciones que
puedan ser evaluadas.
de la mquina)
de la mquina)
Lenguaje de mquina
Datos
Operaciones aritmticas y lgicas
Asignaciones de posiciones de memoria
Control de flujo
Lenguaje ensamblador
Versin simblica de un lenguaje de
mquina:
Cada cdigo de operacin se indica por un
cdigo simblico: ADD, MUL...
Asignaciones de memoria se dan con nombres
simblicos
de la mquina)
de la mquina)
del
TAREA!!!!
Ejemplo: Lenguaje C
Procesar
de la mquina)
Lenguaje orientado a problemas concretos
Someter
a
un
proceso
de
transformacin mediante operaciones
programadas. Es decir, transformar un
origen
(fuente) en un destino
mediante
una
herramienta
de
transformacin
que
permita
operaciones
programadas:
la
computadora.
Procesador de lenguaje
Nombre genrico que reciben las aplicaciones
informticas en las que uno de los datos
fundamentales de entrada es un lenguaje:
-
Traductores
Ensambladores
Cargadores
Desensambladores
Depuradores
Optimizadores de cdigo
Preprocesadores
Editores
- Compiladores
- Enlazadores
- Intrpretes
- Decompiladores
- Analizadores de rendimiento
- Compresores
- Formateadores
Procesador de lenguaje
Se tomar como paradigma de los procesadores de
lenguaje los compiladores.
Los lenguajes de alto nivel hicieron necesarios los
compiladores a partir de los aos 50. Desde entonces,
gracias al descubrimiento de tcnicas sistemticas para el
manejo de muchas tareas que surgen en la compilacin, al
desarrollo de buenos lenguajes de implantacin, entornos
de programacin y herramientas de software, el diseo y
desarrollo de un compilador se ha simplificado
enormemente.
TAREA!!!!
Traductor
Compilador
Compilacin
Cdigo fuente
Conjunto de lneas de cdigo que conforman un
bloque de texto que normalmente genera otro
cdigo mediante un compilador o intrprete para
ser ejecutado por una computadora.
Normalmente se refiere a la programacin de
software. Un nico programador o un equipo de
programadores escriben el cdigo fuente en el
lenguaje de programacin elegido. Posteriormente
en un proceso de compilacin el cdigo fuente se
traduce en cdigo objeto.
Compilacin
El tiempo que se tarda en traducir un programa en
cdigo fuente se llama tiempo de compilacin.
El tiempo que tarda en ejecutarse un programa en
cdigo objeto se llama tiempo de ejecucin.
El programa fuente y los datos se procesan en
momentos diferentes.
Cdigo objeto
Cdigo resultante de la compilacin
del cdigo fuente, por lo general est
codificado en cdigo de mquina y
distribuido en varios archivos
resultantes de la compilacin de cada
archivo de cdigo fuente.
Compiladores
Los compiladores son las
utilizadas por los informticos
de aplicaciones.
herramientas ms
para el desarrollo
Estructura y fases de un
compilador
La construccin de un compilador para un
determinado lenguaje es una tarea
compleja, que se puede reducir siguiendo
una metodologa: dividir en mdulos las
diferentes fases.
La
complejidad
depender
de
las
caractersticas del lenguaje fuente y del
lenguaje objeto y de su diferencia de
niveles.
Estructura y fases de un
compilador
ANLISIS
Fases de un compilador:
Anlisis : Comprobar la correccin del programa fuente
SNTESIS
Lxico
Sintctico
Semntico
Sntesis
Generacin de cdigo intermedio
Optimizacin de cdigo intermedio
Generacin de cdigo
Optimizacin de cdigo
BACK-END
Programa objeto
Estructura y fases de un
compilador
Fases de un compilador:
Anlisis lxico: Se realiza en el nivel de los caracteres, debe reconocer
tokens y entregarlos junto con sus atributos al analizador sintctico, aunque
estos ltimos no son necesarios para el anlisis sintctico, sino para las fases
siguientes.
El programa fuente es tratado con el analizador lxico (scanner), lee
secuencialmente caracteres, los compara con patrones que representan
unidades sintcticas e identifica stas, tambin llamadas componentes lxicos
o tokens, tales como: constantes, identificadores (de variables, de funciones,
de procedimientos, de tipos, etc.), palabras reservadas y operadores. Una vez
identificado el token es entregado al analizador sintctico. A cada token se le
asocia una serie de informaciones, segn las necesidades del traductor.
Estructura y fases de un
compilador
Estructura y fases de un
compilador
Fases de un compilador:
Anlisis sintctico: Llamado tambin parser, realiza su anlisis en
el nivel de la sentencia.
Es mucho ms complejo que el anlisis lxico.
Su funcin es tomar los tokens que ha encontrado el analizador
lxico y determinar la estructura sintctica de las sentencias,
agrupando los tokens en clases sintcticas ( los no terminales de la
gramtica), tales como expresiones, funciones, etc.
Estructura y fases de un
compilador
Fases de un compilador:
Anlisis semntico: Detecta la validez semntica (reglas de
Fases de un compilador:
Generacin de cdigo intermedio: El cdigo intermedio no es
Estructura y fases de un
compilador
Estructura y fases de un
compilador
Fases de un compilador:
Optimizacin de cdigo intermedio: Es independiente de la
Fases de un compilador:
Optimizacin de cdigo: En este caso ya depende de la
Estructura y fases de un
compilador
Fases de un compilador:
Tabla de smbolos: Es una estructura de datos que contiene toda
la informacin relativa a cada identificador que aparece en el
programa fuente. Cada elemento de la tabla se compone de al menos
del identificador y sus atributos.
Los atributos son informaciones relativas a cada identificador,
necesarias para o bien realizar el anlisis semntico o bien la
traduccin. Cualquiera de los tres analizadores puede rellenar algn
atributo, pero el nombre del identificador (lexema) es misin del
analizador lxico.
Estructura y fases de un
compilador
Estructura de un compilador:
FRONT-END: Analiza el cdigo fuente,
comprueba su validez, genera el rbol de
derivacin y rellena los valores de la tabla de
smbolos. Suele ser independiente de la
plataforma o sistema para el cual se vaya a
compilar.
BACK-END: Genera el cdigo de mquina,
especfico de una plataforma, a partir de los
resultados de la fase de anlisis, realizada por el
FRONT-END.
Estructura y fases de un
compilador
Estructura de un compilador:
Esta divisin permite que el mismo BACK-END se utilice
para generar el cdigo de mquina de varios lenguajes de
programacin distintos y que el mismo FRONT-END que
sirve para analizar el cdigo fuente de un lenguaje de
programacin concreto sirva para la generacin de cdigo
de mquina en varias plataformas distintas.
El cdigo que genera el BACK END normalmente no se
puede ejecutar directamente, sino que necesita ser
enlazado por un programa enlazador (linker).
Tipos de compiladores
Compiladores de varias pasadas: Necesitan leer
el cdigo fuente varias veces antes de poder
producir el cdigo de mquina.
Compiladores JIT (Just In Time): Forman parte de
un intrprete y compilan partes del cdigo segn
se necesitan.
Tarea: Investigar acerca de los compiladores de
varias pasadas
Tipos de compiladores
Esta taxonoma de los tipos de compiladores no es
excluyente, por lo que puede haber compiladores
que se adscriban a varias categoras:
Compiladores cruzados: Se ejecutan en una mquina pero
el cdigo objeto que producen es para otra mquina.
Compiladores optimizadores: Realizan cambios en el
cdigo para mejorar su eficiencia, pero manteniendo la
funcionalidad del programa original.
Compiladores de una sola pasada: Generan el cdigo
mquina a partir de una nica lectura del cdigo fuente.
Generadores
de
analizadores
sintcticos:
Aplicaciones de los
procesadores de lenguaje
Las tcnicas empleadas en la construccin
de traductores, compiladores e intrpretes
pueden aplicarse en la construccin de
otras herramientas:
Editores sensibles al contexto
automticos
Analizadores
de
de
cdigo:
flujo:
informacin
necesaria
optimizaciones de cdigo.
para
Suministran
la
realizar
las
Aplicaciones de los
procesadores de lenguaje
Formateadores de texto
Intrpretes de comandos de un sistema
operativo
Construccin de entornos operativos
Conversores de formato
Preprocesadores
Compiladores de silicio
Generadores de cdigo