Вы находитесь на странице: 1из 12

REPUBLICA BOLIVARIANA DE VENEZUELA.

MINISTERIO DEL PODER POPULAR PARA LA EDUCACIN SUPERIOR.


UNIVERSIDAD NACIONAL EXPERIMENTAL DE GUAYANA.
VICERRECTORADO ACADMICO.
COORDINACIN GENERAL DE PREGRADO.
PROYECTO DE CARRERA: INGENIERA EN INFORMTICA.

PROF:
Mrquez Flix.

INTEGRANTES:
Carranza, Estefana.
Marapacuto, Katerin.
Moreno, Yuliannys.
Valera, David.

Puerto Ordaz, 16 de Noviembre de 2015.

INTRODUCCIN

La manera de interpretar lo que a diario percibimos del mundo de la


programacin que nos rodea depende en cierta manera de los lenguajes de
programacin, debido a que el software ejecutado en todos los ordenadores se
escribi en algn lenguaje de programacin. Estos lenguajes son notaciones que
detallan los clculos a las personas y las mquinas. Sin embargo, para que un
programa sea ejecutado en un computador, este debe traducirse a un formato en
el que una computadora pueda ejecutarlo.

Nuestro conocimiento sobre cmo organizar y escribir compiladores ha


aumentado mucho desde que comenzaron a aparecer los primeros compiladores
a principios de los aos cincuenta. Es difcil dar una fecha exacta de la aparicin
del primer compilador, porque en un principio gran parte del trabajo de
experimentacin y aplicacin se realiz de manera independiente por varios
grupos. Gran parte de los primeros trabajos de compilacin estaba relacionada
con la traduccin de frmulas aritmticas a cdigo de mquina. Sin embargo es
importante conocer sus fundamentos de forma breve.

Fundamentos de un Compilador.

Dicho en forma simple, un compilador es un programa que puede leer un


programa en un lenguaje (conocido como fuente y es un lenguaje de alto nivel) y
traducirlo en un programa equivalente en otro lenguaje (destino y es cdigo
maquina o ensamblador). Siendo su primordial funcin reportar cualquier error
detectado en el programa fuente durante el proceso de traduccin. Si el programa
destino es un programa ejecutable en lenguaje mquina, entonces el usuario
puede ejecutarlo para procesar las entradas y producir salidas (resultados). Fig. 1.

Fig. 1. Entrada/Salida de un programa en un Compilador.


Existe otro tipo de compilador conocido como intrprete, este 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 (fuente) con las entradas
proporcionadas por el usuario, es decir, no se produce un resultado fsico sino
lgico. Ver Fig. 2.

Fig. 2. Entrada/Salida de un programa en un 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. No obstante, por lo regular, el intrprete puede ofrecer mejores

diagnsticos de error que un compilador, ya que ejecuta el programa fuente


instruccin por instruccin; al mismo tiempo posee la ventaja de ser portable.
Adems de un compilador, pueden requerirse otros programas ms para la
creacin de un programa destino ejecutable, como se muestra a continuacin:

Fig. 3. Creacin de un programa ejecutable.

Un programa fuente puede dividirse en mdulos guardados en archivos


separados. La tarea de recolectar el programa de origen se confa algunas veces
a un programa separado, llamado

preprocesador. El preprocesador tambin

puede expandir algunos fragmentos de cdigo abreviados de uso frecuente,


llamados macros, en instrucciones del lenguaje fuente. Despus, el programa
fuente al ser modificado alimenta a un compilador. El compilador puede producir
un programa destino en ensamblador como su salida, ya que es ms fcil producir
el lenguaje ensamblador como salida y es ms fcil su depuracin. A continuacin,
el lenguaje ensamblador se procesa mediante un programa llamado ensamblador,
el cual produce cdigo mquina relocalizable como su salida. A menudo, los
programas extensos se compilan en partes, por lo que tal vez haya que enlazar
(vincular) el cdigo mquina relocalizable con otros archivos objeto relocalizables
y archivos de biblioteca para producir el cdigo que se ejecute en realidad en la

mquina. El enlazador resuelve las direcciones de memoria externas, en donde


el cdigo en un archivo puede hacer referencia a una ubicacin en otro archivo.
Entonces, el cargador rene todos los archivos objeto ejecutable en la memoria
para su ejecucin.

Un compilador se compone de las siguientes partes:

Fig. 4. Composicin de un Compilador.

Analizador Lxico o Morfolgico: es un anlisis lineal tambin


conocido como preprocesador o scanner, en ingls. Realiza la primera
fase de la compilacin. Convierte el programa que va a ser compilado
en una serie de unidades ms complejas (unidades sintcticas o tokens)
que desempean el papel de smbolos terminales para el analizador
sintctico. En esta etapa la cadena de caracteres que constituye el
programa fuente se lee de izquierda a derecha (de arriba hacia abajo) y
se agrupa en componentes lxicos que son secuencias de caracteres
que tienen un significado colectivo. Por ejemplo, en el anlisis lxico los
caracteres de la proposicin de asignacin. Asimismo, elimina espacios
en blanco y comentarios, y detecta errores morfolgicos. Usualmente se
implementa mediante un autmata finito determinista.

Ejemplo:
Tenemos la cadena: Posicin:= inicial + velocidad * 60
De esta cadena los tokens resultantes seran los siguientes:
1. El identificador posicin.
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.

Analizador Sintctico: tambin llamado parser, en ingls. Realiza el


resto de la reduccin al axioma de la gramtica para comprobar que la
instruccin es correcta, es decir, permite la comprensin de la estructura
en base a una gramtica dada. Y en caso de que el programa de
entrada sea vlido, suministra el rbol sintctico que lo reconoce.
Usualmente se implementa mediante un autmata a pila o una
construccin equivalente.

En teora, se supone que la salida del analizador sintctico es alguna


representacin del rbol sintctico que reconoce la secuencia de tokens
suministrada por el analizador lxico. En la prctica, el analizador
sintctico tambin hace:
Acceder a la tabla de smbolos (para hacer parte del trabajo del
analizador semntico).
Chequeo de tipos ( del analizador semntico).
Generar cdigo intermedio.

Generar errores cuando se producen. En definitiva, realiza casi todas


las operaciones de la compilacin. Este mtodo de trabajo da lugar a los
mtodos de compilacin dirigidos por sintaxis.

Ejemplo:
Sea la gramtica anterior.
EE+T|T
TT*F|F
F(E)|a|b
Supongamos que hay que reconocer: ( a + b ) * a + b
Si el rbol puede construirse, es que la sentencia es correcta:

Fig. 5. Gramtica resultante.

Analizador Semntico: Comprueba la correccin semntica de la


instruccin, puesto que luego de comprender la estructura se debe
definir su significado y de esta manera capturar las inconsistencias, por
ejemplo, la compatibilidad del tipo de las variables en una expresin.

Tabla de Smbolos o Identificadores: Es la tabla donde se almacena


toda la informacin o dicho de otra manera, es una estructura de datos
que contiene un registro vlido por cada identificador, con los campos
para los atributos del identificador. La estructura de datos permite
encontrar rpidamente el registro de cada identificador y almacenar o
consultar rpidamente datos de ese registro.

Generador de Cdigo: Traduce el programa fuente al lenguaje objeto


utilizando toda la informacin proporcionada por las restantes partes del
compilador.

Optimizador de cdigo: Mejora la eficiencia del programa objeto en


ocupacin de memoria o en tiempo de ejecucin.

Ejemplo:
X=Y*0 X=0

Gestin de Memoria: tanto en el procesador de lenguaje como en el


programa objeto.

Recuperacin de errores.

En los compiladores de un solo paso o etapa, suele fundirse el analizador


semntico con el generador de cdigo. Otros compiladores pueden ejecutarse en
varios pasos. Por ejemplo, en el primero se puede generar un cdigo intermedio
en el que ya se han realizado los anlisis morfolgico, sintctico y semntico. El

segundo paso es otro programa que parte de ese cdigo intermedio y, a partir de
l, genera el cdigo objeto. Todava es posible que un compilador se ejecute en
tres pasos, dedicndose el tercero a la optimizacin del cdigo generado por la
segunda fase. En un intrprete no existen las fases de generacin y optimizacin
de cdigo, que se sustituyen por una fase de ejecucin de cdigo.

Clasificacin de los Compiladores.


a) Compilador cruzado. Genera un cdigo ejecutable en un ordenador distinto de
aquel en que se realiza la compilacin.
b) Compilador de montaje y ejecucin. Se fragmenta el programa fuente en
mdulos que se compilan por separado, y una vez compilados se unen mediante
un enlazador para formar un mdulo ejecutable.
c) Compilador en una pasada. Examina el cdigo fuente una sola vez, generando
el cdigo objeto.
d) Compilador de pasadas mltiples Requiere varias lecturas del programa fuente
para producir y optimizar el cdigo objeto.
e) Compilador de optimizacin. Lee el cdigo fuente, lo analiza, optimiza y
descubre errores potenciales sin ejecutar el programa.
f) Compilador incremental. Compila el programa fuente, en caso de detectar
errores al volver a compilar el programa corregido, solo compila las modificaciones
que se han hecho respecto al primero.
g) Ensamblador. El lenguaje fuente es el lenguaje ensamblador.
h) Autocompilador. Es el compilador que est escrito en el mismo lenguaje a
compilar, bsicamente nos sirve para hacer ampliaciones al lenguaje, mejorar el
cdigo generado, etc.

i) Metacompilador. Compilador de compiladores. Obtiene como entrada la


definicin de un lenguaje y como salida el compilador para dicho lenguaje.

10

CONCLUSIN

La fundamental importancia de cualquier lenguaje de programacin, es el


ncleo o motor de que a simple vista no se ve, sin el cual sera incomprensible el
lenguaje mquina. Por esta razn, los compiladores existen y nos brindan la
posibilidad de establecer interaccin con los computadores a un nivel perceptible
para los humanos, mientras que detrs de las interfaces que apreciadas trabaja de
la mano con el computador.

La escritura de compiladores comprende lenguajes de programacin, la


arquitectura de computadores, la teora de lenguajes, los algoritmos y la ingeniera
del software que, por fortuna con algunas tcnicas bsicas de escritura de
compiladores permite la construccin de traductores para una gran variedad de
lenguajes y maquinas.

11

BIBLIOGRAFA
Compiladores principios, tcnicas y herramientas. Segunda edicin Alfred V. Aho
Columbia University Monica S. Lam Stanford University Ravi Sethi Avaya Jeffrey
D. Ullman Stanford University. Editorial PEARSON Educacin.
Compiladores e intrpretes: teora y prctica. Manuel Alfonseca, Moreno Marina
de la Cruz, Echeanda Alfonso Ortega de la Puente, Estrella Pulido Caabate.
Editorial PEARSON Preantice Hall.

12

Вам также может понравиться