Anda di halaman 1dari 19

Introduccin al Diseo

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

Tema 2.- Lenguajes, autmatas y gramticas


Tema 3.- Anlisis lxico
Tema 4: Tablas de Smbolos

Tema 5.- Anlisis sintctico


Tema 6.- Anlisis semntico

Tema 7.- Principios bsicos de la fase de sntesis


Ao 2003

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

Con algunas tcnicas bsicas de escritura de compiladores se pueden


construir traductores para una gran variedad de lenguajes y mquinas
6

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

TIPOS DE SISTEMAS DE COMPILACIN


ENSAMBLADOR
Traducen programas escritos en lenguaje ensamblador
a cdigo mquina

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

SISTEMA PARA PROCESAMIENTO DE UN LENGUAJE


estructura del programa fuente
preprocesador
programa fuente
compilador

programa objeto en lenguaje ensamblador


ensamblador
cdigo de mquina relocalizable

editor de carga y enlace

biblioteca
archivos obj.relocal.

cdigo de mquina absoluto


12

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

UN AMBIENTE GENERAL DE COMPILACIN


Fuente

Anlisis lxico
Anlisis sintctico
Anlisis semntico
Intermedio
Generador de cdigo

Cdigo relocalizable

Enlazador
Objeto

14

ANLISIS DEL PROGRAMA FUENTE


ANALISIS LINEAL (Lxico- Exploracin- Scanner)
Se lee el programa como una cadena de izquierda a derecha,
se agrupan y se generan componentes lxicos o tokens
(secuencia de caracteres con significado colectivo)

ANALISIS JERARQUICO (Sintctico- Parser)


Los componentes lxicos se agrupan en colecciones
anidadas con un significado colectivo ( frases gramaticales
que por lo general se representan mediante
rboles sintcticos)

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

posicion := inicial + velocidad * 60


b ) Anlisis sintctico (rbol de analis. sint.)
proposicin
de asignacin
identificador

:=

expresin

posicion

+
expresin

identificador
inicial

expresin

expresin
identificador
velocidad

expresin
nmero
60

17

posicion := inicial + velocidad * 60


b ) Anlisis sintctico ( reglas recursivas)
Las construcciones lxicas no requieren recursin
(ej. Reconocer un identificador) mientras que las sintcticas
suelen requerirlas (ej. Emparejamiento de parntesis o BeginEnd)

La estructura jerrquica de un programa normalmente se


expresa mediante reglas recursivas
Exp :: ident | nro
Exp :: Exp + Exp| Exp * Exp | (Exp)
Las gramticas libres de contexto (GLC) son una
formalizacin de reglas recursivas que pueden guiar el
anlisis sintctico

18

posicion := inicial + velocidad * 60


b ) Anlisis semntico

Significado de una unidad gramatical, interpretacin


Traducir la entrada a una forma de representacin intermedia
Anlisis y verificacin de tipos
Utiliza la estructura jerrquica del Anlisis sintctico
El rbol sintctico permite una representacin interna
compacta del rbol de anlisis sintctico. Ejemplos:
:=

posicion
+
inicial
*
velocidad

:=
posicion

60

inicial
*
velocidad entareal
60
19

Anda mungkin juga menyukai