de Compiladores
Ao 2003
BIBLIOGRAFA
[AHO] Compilers. Principles, Techniques, and Tools
Aho, Sethi; Adisson-Wesley 1986
[TEU] Compiladores: Conceptos fundamentales.
Teufel ; Addison Wesley - 1995
[SAN] Compiladores. Teora y construccin.
Sanchs Llorca y Galn Pascual. Paraninfo 1988
[WIR] Algoritmos + Estructuras de Datos = Programas
Niklaus Wirth . Ediciones del Castillo 1980
[GHE] Conceptos de Lenguajes de Programacin
Ghezzi, Jazayeri; Ed. Daz de Santos -1982-1986
[LEV] Lex &Yacc. Levine; Mason; Brown; OReilly & Ass. 1995
Ao 2003
CONTENIDOS
Tema 1.- Introduccin a la Compilacin
PROGRAMA DE PRCTICOS
Prctica 1: Construccin de Autmatas
Prctica 2: Anlisis y transformacin de gramticas.
Construccin de un analizador lxico
Prctica 3: Diseo e implementacin de un compilador
Ao 2003
INTRODUCCIN
Conceptos relacionados
Arquitectura de
Computadoras
Teora de
Lenguajes
Lenguajes de
Programacin
Compiladores
Ingeniera de
Software
Teora de
Algoritmos
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
compilador
fuente
programa
objeto
mensajes
de error
CLASIFICACION GENERAL
De una pasada o de mltiples pasadas
De carga y de ejecucin
De depuracin o de optimizacin
HISTORIA
Experimentacin relacionada a traduccin de
frmulas
1950: difcil escritura
Primer FORTRAN: 18 aos
Hoy: tcnicas sistemticas, lenguajes de
implementacin, entornos de programacin y
herramientas de software
8
HISTORIA
Computadoras
Hombre
Cdigo
Mquina
Ensamblador
Cdigo
Mquina
Lenguaje
Ensamblador
Ensamblador
Cdigo
Mquina
Compilador
Lenguaje
Lenguaje de
Ensamblador
Alto Nivel
9
HOY. Y A FUTURO
El Diseo de un compilador surge como resultado de:
Desarrollo de un nuevo lenguaje de programacin
Adicin de extensiones a los ya existentes
Explotacin de las caractersticas del hardware
A futuro:
Extensin para el cmputo paralelo y distribuido
Explotacin de caractersticas multimedia (MMX)
10
COMPILADOR
Traducen programas escritos en lenguaje de alto nivel a
cdigo intermedio o a cdigo mquina
INTERPRETE
No genera cdigo objeto, analiza y ejecuta directamente
cada proposicin del Programa Fuente (PF)
PREPROCESADOR
Sustituyen macros, incluyen archivos o extensin del
lenguaje.
11
biblioteca
archivos obj.relocal.
PARTES DE LA COMPILACIN
ANLISIS (Etapa Inicial):
Divide al PF en sus elementos componentes y crea
una representacin intermedia.
Se determinan las operaciones y se registran en una
estructura de rbol (ej. rbol sintctico)
SNTESIS (Etapa Final):
Construye el PO deseado a partir de la representacin
Intermedia (requiere tcnicas ms especializadas)
13
Anlisis lxico
Anlisis sintctico
Anlisis semntico
Intermedio
Generador de cdigo
Cdigo relocalizable
Enlazador
Objeto
14
ANALISIS SEMANTICO
Se realizan revisiones para asegurar que los componentes de
un programa se ajustan de un modo significativo
15
EJEMPLO DE ANLISIS:
posicion := inicial + velocidad * 60
a ) Componentes lxicos:
1. El identificador posicion
2. El smbolo de asignacin :=
3. El identificador inicial
4. El signo de suma: +
5. El identificador velocidad
6. El signo de multiplicacin: *
7. El nmero 60
Los identificadores o nombres reconocidos se organizan en una
tabla de smbolos que se usar en los pasos siguientes
16
:=
expresin
posicion
+
expresin
identificador
inicial
expresin
expresin
identificador
velocidad
expresin
nmero
60
17
18
posicion
+
inicial
*
velocidad
:=
posicion
60
inicial
*
velocidad entareal
60
19