Está en la página 1de 18

Teoria de Compiladores

INTRODUCCIN

Conceptos relacionados
Arquitecturade
de
Arquitectura
Computadoras
Computadoras

Teorade
de
Teora
Lenguajes
Lenguajes

Lenguajesde
de
Lenguajes
Programacin
Programacin
Compiladores
Compiladores
Ingenierade
de
Ingeniera
Software
Software
Teorade
de
Teora
Algoritmos
Algoritmos

Con algunas tcnicas bsicas de escritura de compiladores se pueden


construir traductores para una gran variedad de lenguajes y mquinas
3

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

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

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.

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


7

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)

UN AMBIENTE GENERAL DE COMPILACIN


Fuente
Anlisis lxico
Anlisis sintctico
Anlisis semntico
Intermedio

Ms:
Sistemas de
edicin y
depuracin

Generador de cdigo
Cdigo relocalizable
Enlazador
Objeto

Ao 2004

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
10

posicion := inicial + velocidad * 60


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

:=

expresin

posicion

+
expresin
identificador
inicial

expresin
expresin
identificador
Ao 2004
velocidad

expresin
nmero
60

11

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 Begin-End)
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
12

posicion := inicial + velocidad * 60


c ) 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 semntico permite una representacin interna compacta del
rbol de anlisis sintctico. Ejemplos:
:=

posicion
+
inicial
*
velocidad

:=
posicion
60

+
inicial
*
velocidad entareal
60
13

FASES DE UN COMPILADOR
PROGRAMA FUENTE

administrador
de la tabla
de smbolos

analizador lxico
analizador sintctico
analizador semntico
generador de cdigo intermedio

manejador
de errores

optimizador de cdigo
generador de cdigo
PROGRAMA OBJETO

Cada fase transforma al PF de una representacin a otra

14

ADMINISTRADOR DE LA TABLA DE SMBOLOS

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)
Permite encontrar rpidamente cada ID y almacenar o consultar datos de ese
registro

En el Anlisis Lxico se detectan los ID y se introducen en la Tabla de Smbolos

Las fases restantes introducen informacin sobre los ID y despus la utilizan

Ao 2004

15

DETECCIN E INFORMACIN DE ERRORES

Cada fase puede encontrar errores y debe tratarlo para


continuar con la Compilacin, permitiendo detectar ms
errores
Las fases de Anlisis Lxico, Sintctico y Semntico
manejan la mayora de los errores

En el Anlisis Semntico se detectan errores donde la


estructura sintctica es correcta pero no tiene significado
la operacin
( Por. ej. sumar dos ID , donde uno es el nombre de una
matriz y el otro un nombre de procedimiento)

16

OPTIMIZACIN DE CDIGO

Trata de mejorar el cdigo intermedio para que resulte un


cdigo de mquina ms rpido de ejecutar

Hay optimaciones sencillas que mejoran el tiempo de


ejecucin del programa sin retardar mucho la compilacin

17

GENERACIN DE CDIGO

La fase final genera cdigo objeto ( en general cdigo de


mquina recolalizable o cdigo ensamblador)

18