Sie sind auf Seite 1von 18

COMPILADORE

S
Procesadores de lenguajes

COMPILADOR
Un compilador es un programa que puede leer un

programa en un lenguaje (el lenguaje fuente) y


traducirlo en un programa equivalente en otro
lenguaje (el lenguaje destino).
Una funcin importante del compilador es reportar

cualquier error en el programa fuente que detecte


durante el proceso d e traduccin.

INTRPRETE
Un intrprete es otro tipo comn de procesador de

lenguaje.

En vez de producir un programa destino como una

traduccin, el intrprete nos da la apariencia de


ejecutar directamente las operaciones especificadas
en el programa de origen (programa fuente) con las
entradas proporcionadas por el usuario.

COMPILADOR & INTRPRETE


El programa destino en lenguaje mquina que

produce un compilador es, por lo general, ms rpido


que un intrprete al momento de asignar las entradas
a las salidas.

El intrprete puede ofrecer mejores diagnsticos de

error que un compilador, ya que ejecuta el programa


fuente instruccin por instruccin.

LA
ESTRUCTURA
DE UN
COMPILADOR
Anlisis y sntesis

ANLISIS
La parte del anlisis divide el programa fuente en componentes e impone una

estructura gramatical sobre ellas.


Utiliza esta estructura para crear una representacin intermedia del programa fuente.
Si la parte del anlisis detecta que el programa fuente est mal formado en cuanto a

la sin taxis, o que no tiene una semntica consistente, entonces debe proporcionar
mensajes informativos para que el usuario pueda corregirlo.
Recolecta informacin sobre el programa fuente y la almacena en una estructura de

datos llamada tabla de smbolos, la cual se pasa junto con la representacin


intermedia a la parte de la sntesis.

SNTESIS
La parte de la sntesis construye el programa destino deseado

a partir de la representacin intermedia y de la informacin en


la tabla de smbolos.

A la parte del anlisis se le llama comnmente el front-end del

compilador.

La parte de la sntesis (propiamente la traduccin) es el back-

end.

Un compilador opera como una secuencia de fases, cada una de las cuales

transforma una representacin del programa fuente en otro.

ANLISIS DE LXICO
(ESCANEO)
En esta fase se lee el flujo de caracteres que componen el programa fuente y los

agrupa en secuencias significativas, conocidas como lexemas.

Para cada lexema, el analizador lxico produce como salida un token de la forma:

( nombre-token, valor-atributo)
Este token pasa a la fase siguiente, el anlisis de la sintaxis.
En el token, el primer componente nombre-token es un smbolo abstracto que

se utiliza durante el anlisis sintctico , y el segundo componente valor-atributo


apunta a una entrada en la tabla de smbolos para este token.

La informacin de la entrada en la tabla de smbolos se necesita para el anlisis

semntico y la generacin de cdigo.

Por ejemplo, suponiendo que un programa fuente contiene la instruccin de

asignacin:

posicin = inicial + velocidad * 60


Los caracteres en esta asignacin podran agruparse en los siguientes

lexemas y mapearse a los siguientes tokens que se pasan al analizador


sintctico:

1. posicin es un lexema que se asigna a un token (id , 1), en donde id es


un smbolo abstracto que representa la palabra identificador y 1 apunta a la
entrada en la tabla de smbolos para posicin. La entrada en la tabla de
smbolos para un identificador contiene informacin acerca de ste, como su
nombre y tipo.
2. El smbolo de asignacin = es un lexema que se asigna al token (=).

3. inicial es un lexema que se asigna al token (id , 2), en donde 2 apunta


a la entrada en la tabla de smbolos para inicial.
4. + es un lexema que se asigna al token (+).
5. velocidad es un lexema que se asigna al token ( id , 3 ), en donde 3
apunta a la entrada en la tabla de smbolos para velocidad .
6. * es un lexema que se asigna al token (*).
7. 60 es un lexema que se asigna al token (60 )

El analizador lxico ignora los espacios en blanco que separan a

los lexemas.

La representacin de la instruccin de asignacin despus del anlisis lxico


como la secuencia de tokens.

posicin = inicial + velocidad * 60


(*) (60)

( id , 1) (=) ( id , 2) ( + ) ( id , 3)

ANLISIS SINTCTICO
La segunda fase d el compilador es el anlisis sintctico o parsing.
En esta fase se utiliza los primeros componentes de los tokens

producidos por el analizador lxico para crear una representacin


intermedia en forma de rbol que describa la estructura
gramatical del flujo de tokens.

Una representacin tpica es el rbol sintctico, en el cual cada

nodo interior representa una operacin y los hijos del nodo


representan los argumentos de la operacin.

ANLISIS SEMNTICO
El analizador semntico utiliza el rbol sintctico y la

informacin en la tabla de smbolos para comprobar la


consistencia semntica del programa fuente con la definicin
del lenguaje.

Tambin recopila informacin sobre el tipo y la guarda, ya sea

en el rbol sintctico o en la tabla de smbolos, para usarla


ms tarde durante la generacin de cdigo intermedio.

Una parte importante del anlisis semntico es la

comprobacin (verificacin ) de tipos, en donde el compilador


verifica que cada operador tenga operandos que coincidan.

Por ejemplo, muchas definiciones de lenguajes de

programacin requieren que el ndice de un arreglo sea entero;


el compilador debe reportar un error si se utiliza un nmero de
punto flotan te para indexar el arreglo.

La especificacin del lenguaje puede permitir ciertas

conversiones de tipo conocidas como coerciones.

Por ejemplo, puede aplicarse un operador binario aritmtico a

un par de enteros o a un par de nmeros de punto flotante.

Si el operador se aplica a un nmero de punto flotante y a un

entero, el compilador puede convertir u obligar a que se


convierta en un nmero de punto flotante.

TRADUCCIN DE UNA
INSTRUCCIN DE
ASIGNACIN

GENERACIN DE CDIGO
INTERMEDIO
Despus del anlisis sintctico y semntico del programa fuente, muchos

compiladores generan un nivel bajo explcito, o una representacin intermedia


similar al cdigo mquina.

Esta representacin intermedia debe tener dos propiedades importantes:

debe ser fcil de producir y fcil de traducir en la mquina destino.

Una forma intermedia llamada cdigo de tres direcciones, consiste en una

secuencia de instrucciones similares a ensamblador, con tres operandos por


instruccin.

Cada operando puede actuar como un registro.

OPTIMIZACIN DE CDIGO
La fase d e optimizacin de cdigo independiente de

la mquina trata de mejorar el cdigo intermedio, de


manera que se produzca un mejor cdigo destino.

Por lo general, mejor significa ms rpido, pero pueden

lograrse otros objetivos, como un cdigo ms corto.

Das könnte Ihnen auch gefallen