Anda di halaman 1dari 19

INTRODUCCIN A LA COMPILACIN

Compiladores: Definicin

Compiladores: Clasificacin
Como fueron construidos:
De una pasada De mltiples pasadas

De carga y ejecucin.

Funcin que realizan:


De depuracin o de optimizacin.

Las Fases del Compilador

Agrupamiento de Fases (1/2)


Etapa Inicial (de anlisis front-end): incluye fases que dependen principalmente del lenguaje fuente

Anlisis Lxico Anlisis Sintctico Creacin de la tabla de smbolos Anlisis Semntico Generacin de cdigo intermedio

Agrupamiento de Fases (2/2)


Etapa Final (sntesis back-end): incluye las fases que dependen del lenguaje intermedio y la maquina objeto.
Optimizacin de Cdigo
Generacin de Cdigo Manejo de Errores

Operaciones con la tabla de smbolos

Fases
Anlisis lxico, la cadena de caracteres que constituye el

programa fuente y los agrupa en secuencias significativas (lexemas). Para cada lexema el analizador produce como salida un token.
Anlisis sintctico, utiliza 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.

Fases
Anlisis semntico, utiliza el rbol y tabla de smbolos para comprobar la consistencia semntica del programa fuente con la definicin del lenguaje.
Generacin de cdigo intermedio: Entrega una

representacin intermedia (cdigo de tres direcciones) que la podemos considerar como un programa para una mquina abstracta

Fases
Optimizacin de cdigo, Independiente de la maquina

virtual trata de mejorar el cdigo intermedio de manera que se produzca un cdigo destino ms eficiente.
Generacin de cdigo: Recibe la representacin

intermedia y la transforma al lenguaje destino. Primero asigna las direcciones de memoria de c/u de las variables y luego traduce las instrucciones intermedias en secuencias de instrucciones de mquina que realizan la misma tarea.

Por Ejemplo:
Analicemos la siguiente cadena:

Posicin := inicial + velocidad * 60

Anlisis lxico
Componentes lxicos:
Identificadores: posicin, inicial, velocidad Smbolos: (:=), (+), (*).

Nmero: 60

Los espacios en blanco que separan a los

componentes lxicos se eliminan

Anlisis sintctico:
Sintctico

rbol

:= / \ id1 + / \ id2 * / \ id3 60

Anlisis semntico
Utiliza el rbol sintctico para identificar operadores, operando de expresiones y proposiciones.
Otra parte importante es la verificacin de tipos de cada operador.

Qu pasara si todos los identificadores del ejemplo fueran de tipo real?

Pasadas
Las actividades de varias fases se pueden agrupar en una sola pasada.
1era. Pasada, fases de anlisis

2da. Pasada, Optimizacin de Cdigo (Opcional).


3ra. Pasada, Generacin del cdigo para una

mquina destino especfica.

Reduccin del nmero de pasadas


Pocas pasadas debido al tiempo de lectura y escritura de archivos intermedios. Si se agrupan muchas fases dentro de una pasada, puede ser necesario tener todo el programa en memoria; debido a que alguna

fase puede necesitar informacin.

Herramientas de Construccin de Compiladores.- Caractersticas


Herramientas que utilizan lenguajes especializados para especificar e implementar componentes especficos.
Las ms exitosas son la que ocultan los detalles del algoritmo de generacin y producen

componentes que se integran fcilmente al resto del compilador

Herramientas de Construccin de Compiladores


Generadores de escaners.- Producen analizadores de lxicos a

partir de una descripcin de tokens de un lenguaje utilizando expresiones regulares.


Generadores de analizadores sintcticos (parsers).- Producen

analizadores sintcticos a partir de la gramtica del lenguaje de programacin. Motores de traduccin orientados a la sintaxis.- Producen rutinas para recorrer rboles sintcticos y generar cdigo intermedio

Herramientas de Construccin de Compiladores


Generadores de generadores de cdigo.- Producen un generador de cdigo a partir de una coleccin de reglas para traducir cada operacin del lenguaje intermedio en lenguaje de mquina.
Motores de anlisis de flujo de datos.- Analizan el flujo de informacin en un programa. Es vital para la optimizacin de cdigo

Anda mungkin juga menyukai