You are on page 1of 5

INSTITUTO TECNOLGICO SUPERIOR DEL OCCIDENTE DEL ESTADO DE

HIDALGO

INGENIERA EN SISTEMAS COMPUTACIONALES

LENGUAJES Y AUTMATAS I

ETAPAS DE UN COMPILADOR Y DE UN INTRPRETE

FLORES REYES VICTOR HUGO

6 B

ASESOR:

HCTOR DANIEL HERNNDEZ


Etapas de un compilador

Las tres primeras fases de un compilador suelen agrupan en un sola fase


llamada Anlisis del programa a compilar y las tres ltimas en una sola fase
llamada Sntesis de un programa en lenguaje mquina.

Anlisis

Anlisis Lxico
Esta fase se encarga de verificar si una cadena de entrada del cdigo fuente pertenece o
no al lenguaje, es decir se realiza un anlisis smbolo a smbolo indicando el tken para
cada una de las cadenas reconocidas o un error en caso de no reconocer la cadena.

Anlisis Sintctico
En esta fase se analiza la estructura de las expresiones en base a gramticas en base a
reglas que determinar si una cadena de entrada del cdigo fuente es vlida. El anlisis que
se realiza es jerrquico ya que se obtiene arboles de derivacin de las mismas gramticas
especificadas en el lenguaje.
Anlisis Semntico
Este anlisis es mucho ms difcil de formalizar que el sintctico ya que tiene que verificar
que el rbol sintctico tenga un significado valido dentro de las reglas especificadas en
el lenguaje. El anlisis semntico verifica que:

En una asignacin, el tipo de la variable concuerde con el tipo de la expresin


asignada.

Que las variables estn declaradas antes de ser usadas.

Sntesis

Una vez analizado el programa de entrada, es necesario generar cdigo, a ser posible
eficiente, para la mquina objetivo. Supongamos que tenemos L lenguajes fuente y
queremos escribir compiladores para M maquinas distintas. La aproximacin inmediata,
escribir un compilador para cada par lenguaje-maquina, supone escribir LM compiladores.
Sin embargo, si los lenguajes son razonablemente parecidos (como Pascal y C), existe una
aproximacin mejor: escribir L traductores desde los lenguajes fuente a un lenguaje
intermedio y despus escribir M traductores de este lenguaje intermedio a los lenguajes
maquina correspondientes:

Esta aproximacin tiene diversas ventajas. La ms obvia es la reduccin del nmero de


traductores que se necesitaran. Adems, si se quiere aadir un nuevo lenguaje a nuestra
coleccin, no es necesario crear M compiladores para l, basta con un traductor al lenguaje
intermedio. Esto permite que se desarrollen nuevos lenguajes con comodidad. Ms
importante, si aparece una nueva arquitectura, basta con desarrollar un traductor del
lenguaje intermedio a esta nueva mquina. Otro aspecto de gran importancia es que la
representacin intermedia suele elegirse de modo que no necesite el gran nivel de detalle
que exige el cdigo mquina y permita abstraer problemas como el nmero limitado de
registros disponibles o la gran variedad de instrucciones de maquina donde elegir. Esto
simplifica notablemente la generacin de cdigo desde el AST.

Fases:

Generacin de Cdigo Intermedio: El cdigo intermedio es una representacin en base


a elementos de 3 y 4 direcciones. Lo que nos permite llegar a la fase de optimizacin de
cdigo.
a=b+c
1: + b c T1
2: = a T1
Optimizacin de Cdigo: Consiste en realizar una mejora en el cdigo intermedio, para
reducir el nmero de lneas y hacer que la ejecucin sea ms rpida
a=b+c
1: + b c a
Generacin de Cdigo: Llegamos a la generacin de cdigo ensamblador o cdigo
mquina del procesador que nos interese por ejemplo:
a: =b+c
LOAD B
ADD C
STORE A
Etapas de un intrprete

Un lenguaje es interpretado si sus instrucciones se ejecutan secuencialmente a partir de


cdigo fuente. Para ejecutar el cdigo de un lenguaje interpretado, necesitamos un
intrprete de ese lenguaje. El intrprete ir recibiendo lneas de cdigo que traducir a
lenguaje mquina para que se ejecute. A diferencia de los lenguajes compilados, no se
produce un ejecutable. De este modo, de una plataforma a otra, slo habr que cambiar el
intrprete, no el cdigo.

Funcionamiento de un intrprete:
Fases:

A la hora de construir un intrprete es conveniente utilizar una Representacin Interna (RI)


del lenguaje fuente a analizar. De esta forma, la organizacin interna de la mayora de los
intrpretes se descompone en los mdulos:

Traductor a Representacin Interna: Toma como entrada el cdigo del programa P en


Lenguaje Fuente, lo analiza y lo transforma a la representacin interna correspondiente a
dicho programa P.

Representacin Interna (P/RI): La representacin interna debe ser consistente con el


programa original. Entre los tipos de representacin interna, los rboles sintcticos son los
ms utilizados y, si las caractersticas del lenguaje lo permiten, pueden utilizarse estructuras
de pila para una mayor eficiencia

Tabla de smbolos: Durante el proceso de traduccin, es conveniente ir creando una tabla


con informacin relativa a los smbolos que aparecen. La informacin a almacenar en dicha
tabla de smbolos depende de la complejidad del lenguaje fuente. Se pueden almacenar
etiquetas para instrucciones de salto, informacin sobre identificadores (nombre, tipo, lnea
en la que aparecen, etc.) o cualquier otro tipo de informacin que se necesite en la etapa
de evaluacin.

Evaluador de Representacin Interna: A partir de la Representacin Interna anterior y de


los datos de entrada, se llevan a cabo las acciones indicadas para obtener los resultados.
Durante el proceso de evaluacin es necesario contemplar la aparicin de errores

Tratamiento de errores: Durante el proceso de evaluacin pueden aparecer diversos


errores como desbordamiento de la pila, divisiones por cero, etc. que el intrprete debe
contemplar.

You might also like