Documentos de Académico
Documentos de Profesional
Documentos de Cultura
1) Introduccin
2) Las partes de un compilador
2.1) El analizador lxico
2.2) El analizador sintctico
2.3) El analizador semntico
2.4) El optimizador
2.5) El generador de cdigo
2.6) La tabla de smbolos
3) Y los intrpretes?
-J.Ezpeleta-
Introduccin
Qu es un compilador?
Programa que lee un programa (fuente) en un lenguaje
Lo traduce a un programa EQUIVALENTE en otro lenguaje (objeto)
Adems:
da mensajes de error
lleva a cabo determinadas correcciones (recuperacin de errores)
puede optimizar el cdigo generado
programa
fuente
programa
objeto
compilador
errores
-J.Ezpeleta-
Introduccin
De dnde el nombre compilador?
Murray Hopper (50s)
La traduccin se vea como la compilacin de una secuencia de
subprogramas tomados de una librera (biblioteca) de programas
Compilacin (actual) se llamaba programacin automtica
se vea como algo futurista
Primeros compiladores modernos:
FORTRAN (finales 50)
independencia de la mquina
coste: 18 personas/ao
desarrollo de tcnicas ad hoc
-J.Ezpeleta-
Introduccin
No siempre el lenguaje objeto tiene que ser de bajo nivel
(traductor)
-J.Ezpeleta-
tabla de smbolos
scanner
tokens
analizador sintctico
(parser)
estructura sintctica
analizador semntico
generador cdigo
intermedio
cdigo intermedio
optimizador
generador cdigo
objeto
cdigo objeto
optimizador
Compiladores I. C.P.S. Universidad de Zaragoza
-J.Ezpeleta-
no siempre se realiza
sustituciones de macros
eliminacin de comentarios
inclusin de ficheros
extensiones al lenguaje (C+SQL)
-J.Ezpeleta-
es la parte fundamental (y
siempre presente)
consta de:
analizador lxico
analizador sintctico
generador de cdigo
traduce el cdigo fuente a otro
objeto
puede ser el definitivo
puede ser un cdigo
intermedio
Preprocesador (precompilador)
man cpp
etc.
The C preprocessor provides four separate facilities that you can use as you see fit:
Inclusion of header files. These are files of declarations that can be substituted
into your program.
Macro expansion. You can define macros, which are abbreviations fo arbitrary
fragments of C code, and then the C preprocessor will re place the macros with their
definitions throughout the program.
Conditional compilation. Using special preprocessing directives, you can include
or exclude parts of the program according to various conditions.
Line control. If you use a program to combine or rearrange source files into an
intermediate file which is then compiled, you can us line control to inform the
compiler of where each source line originally came from.
etc.
Compiladores I. C.P.S. Universidad de Zaragoza
-J.Ezpeleta-
Muchas variaciones
posibles:
sin preprocesador
sin usar cdigo intermedio
optimizando directamente
sobre el ensamblador de la
mquina
generar directamente
binario, sin pasar por el
ensamblador
.........
Cuarta fase:
traduce el cdigo
intermedio (optimizado) a
ensamblador
Binario
Quinta fase:
Optimizacin ligada a la
mquina de destino
-J.Ezpeleta-
El analizador lxico
Lo realiza un scanner
tambin tokenizer
-J.Ezpeleta-
El analizador lxico
Adems, suele realizar otras tareas:
-J.Ezpeleta-
10
El analizador lxico
Ejemplo:
posicin = inicial + velocidad * 60
lexema
IDENTIFICADOR
posicin
IDENTIFICADOR
inicial
IDENTIFICADOR
velocidad
CONSTANTE
60
-J.Ezpeleta-
11
El analizador sintctico
O parser
Objetivo: agrupar los tokens suministrados por el scanner para
reconocer frases
Cmo lo hace?
La sintaxis se suele especificar formalmente mediante una GLC
tambin de otros tipos
El parser recibe tokens y los agrupa de acuerdo a
producciones
producciones
-J.Ezpeleta-
12
El analizador sintctico
Ejemplo:
supongamos sintaxis asignacin como:
asignacin
identif.
identif.
==
expr.
expr.
expr.
lo habitual
y debemos analizar
posicion = inicial + velocidad * 60
-J.Ezpeleta-
13
El analizador sintctico
El rbol sintctico correspondiente es
posicion = inicial + velocidad * 60
inst. asignacin
identif.
posicion
expr.
=
expr.
expr.
identif.
expr.
inicial
identif.
velocidad
-J.Ezpeleta-
expr.
const.
60
14
El analizador semntico
Realiza dos funciones:
Anlisis de la semntica esttica
Es cada construccin legal y con sentido?
variables en una expresin definidas
del tipo adecuado
alcance de los objetos
tipo
valor
acciones a ejecutar cuando se detecta una construccin legal
....
-J.Ezpeleta-
15
-J.Ezpeleta-
16
El optimizador
El cdigo intermedio generado es analizado y transformado en
uno equivalente optimizado
Es una tarea muy costosa
de hecho, generalmente se puede invocar al compilador
activando/desactivando esta opcin
es una tarea difcil
-J.Ezpeleta-
17
El generador de cdigo
Toma cdigo intermedio y genera cdigo objeto para la mquina
considerada
Es la parte ms prxima a la arquitectura de la mquina
Habitualmente, se escriben a mano
desarrollo a medida para cada mquina especfica
-J.Ezpeleta-
18
La tabla de smbolos
Mecanismo para almacenar/acceder la informacin de los
identificadores
Las informaciones asociadas a un identificador se denominan
atributos
Cada vez que se usa un identificador, la tabla de smbolos
proporciona la informacin necesaria
Se usa tanto en la parte de anlisis como en la de sntesis
-J.Ezpeleta-
19
Y los intrpretes?
Un intrprete:
ejecuta programas sin una traduccin explcita
es decir: no hay una fase de traduccin y otra de ejecucin
no se genera cdigo mquina. El intrprete ejecuta
Ventajas:
la propia ejecucin puede modificar el programa
datos y programa son datos
variables pueden cambiar dinmicamente de tipo
facilidades de depuracin
fuente presente durante ejecucin
-J.Ezpeleta-
20
Y los intrpretes?
Inconvenientes:
lentitud (entre 1/10 y 1/100 de velocidad)
sobrecarga de memoria
programa en ejecucin e intrprete simultneamente en memoria
adems de tablas de smbolos y otros elementos necesarios para la
traduccin
-J.Ezpeleta-
21