Está en la página 1de 5

Tecnolgico Nacional de Mxico

Instituto Tecnolgico de Veracruz


Ingeniera en Sistemas Computacionales

Ensayo: Fases de los Compiladores


Unidad 1

Presenta

Erick de Jess Munguia Hernandez


Nmero de Control: E14021272

Para acreditar la materia de:


Lenguajes y Autmatas 1
Con el catedrtico:
Ofelia Gutirrez Giraldi

Fecha 5/Febrero/2017
Ensayo Fases de un Compilador

Las computadoras actuales son mquinas potentes que permiten realizar un


sinfn de tareas, desde operaciones de aritmtica bsica, hasta operaciones mucho
ms complejas como derivar, integrar o utilizar mtodos numricos para llegar al
resultado de una problemtica. Sin embargo, los seres humanos y las computadoras
entendemos lenguajes distintos, nosotros usamos idiomas como el espaol, ingls
o alemn, mientras que las computadoras solo entienden cdigo binario, eso
significa que solo utiliza nmeros 1 y 0 para realizar cualquier accin. Con el paso
del tiempo se han creado diversos tipos de lenguajes para la programacin, los de
alto nivel que son en los que se dan las ordenes escritas en un lenguaje que los
seres humanos podemos utilizar, y los de bajo nivel, los cuales se encuentran ms
cercanos al lenguaje que el hardware de las computadoras entiende.
Lamentablemente siguen siendo lenguajes diferentes, las computadoras por si
solas no entienden las rdenes escritas en lenguajes de alto nivel, y escribir
programas en lenguaje de bajo nivel es una tarea difcil, laboriosa y complicada para
cualquier experto en sistemas, es ah donde entran los distintos traductores, ya que
para que un lenguaje de programacin sea til, se necesita un traductor que los
interprete o los transforme de manera adecuada para el entendimiento y ejecucin
del ordenador.
Un traductor es un programa que recibe texto escrito en un lenguaje, al que
se le denomina programa fuente o cdigo fuente y regresa otro texto escrito en un
lenguaje diferente pero conservando el significado y las rdenes del texto fuente, al
que se le denomina programa objeto. Generalmente, el cdigo fuente que se recibe
est escrito en un lenguaje de alto nivel, y el objeto fuente esta traducido a un nivel
de lenguaje ms bajo que el que entr. Dentro de los traductores se identifican dos
grupos ms usados, los intrpretes y los compiladores, siendo estos ltimos el
objeto de estudio de este ensayo.
Los primeros
compiladores fueron
escritos en lenguaje
ensamblador o mquina,
en la actualidad no se
hacen as, debido a
diversas herramientas
que hacen ms fcil la
Fig.1 Forma de Trabajo de un Compilador creacin y diseo de
compiladores. Un
compilador traduce un programa escrito en un lenguaje a otro, pero tambin puede
generar aplicaciones que pueden ser directamente ejecutadas desde el ordenador
(Vase Figura 1). Existen una gran cantidad de compiladores, los cuales a menudo
se clasifican en compiladores de una revisin, de mltiples revisiones, de carga y
ejecucin, de depuracin o de optimizacin, la clasificacin de cada compilador
depende de la arquitectura que tenga o de las funciones para las que fue diseado
a realizar, sin embargo, las tareas bsicas que deben hacer los compiladores son
esencialmente las mismas.
Tener el programa objeto no es
una tarea fcil para los compiladores,
deben seguir una serie de pasos,
etapas o fases que los ayuden a
realizar las operaciones lgicas, estas
fases son 6: Anlisis lxico, Anlisis
Sintctico, Anlisis semntico,
Generador de Cdigo Intermedio,
Optimizador de cdigo, y Generador
de Cdigo Objeto. (Vase Figura 2)
La fase de Anlisis Lxico, es
en la que se lee el programa de
izquierda a derecha y de arriba hacia
abajo, como si estuviramos leyendo, Fig. 2 Fases de un Compilador
y se agrupan los componentes lxicos
o palabras en algo llamado Tokens, los cuales tienen un significado. Adems de
leer y agrupar los tokens, se omiten todos los espacios en blanco, los comentarios
y toda la informacin que no se vaya a necesitar, as como hacer la verificacin del
uso correcto de los smbolos que se usan para el lenguaje. En esta etapa se
necesitan usar mtodos de especificacin y reconocimiento de patrones, por lo que
se usan los autmatas finitos que sean capaces de aceptar expresiones regulares.
Una vez que se han agrupado los tokens, se continua con la siguiente fase
del compilador, la del anlisis Sintctico, en esta fase se agrupan los tokens en
frases gramaticales que el compilador utiliza para realizar la salida, comprobando si
lo obtenido en el anlisis lxico obedece la gramtica que se defini para el
lenguaje. Es en esta etapa en la que se hace uso de rboles de anlisis sintctico
para representar las frases gramaticales que vienen en el programa fuente. La
estructura jerrquica se expresan normalmente mediante el uso de reglas
recursivas.
La fase de anlisis semntico se encarga de revisar el programa fuente para
encontrar errores semnticos y juntar la informacin de los tipos de error para la
siguiente fase. En la fase de anlisis semntico se utilizan los arboles generados
por la clase de anlisis sintctico para identificar los operadores y operandos de
algunas expresiones y proposiciones. En esta etapa el compilador verifica si cada
operador tiene operandos que se permitan usar en el lenguaje fuente.
Despus de hacer los anlisis, algunos compiladores comienzan con la
generacin de cdigo, que debe contener dos propiedades fundamentales: que sea
fcil de producir y fcil de traducir al programa objeto. La representacin del cdigo
puede ser de diversas formas, pero existe una forma intermedia a la que se le
conoce como Cdigo de tres direcciones, muy similar al lenguaje ensamblador,
que consiste en escribir secuencias de instrucciones con un mximo de tres
operandos por instruccin, en esta forma cada posicin de memoria puede actuar
como un registro. La representacin del cdigo no solo se escribe as como as,
tiene tres propiedades, aparte de las fundamentales, que debe seguir: la primera
indica que cada instruccin tiene como mximo un operador y el smbolo de
asignacin; la segunda indica que el traductor debe darle nombres temporales a los
valores que sean resultantes de cada instruccin; la tercera y ltima, indica que
algunas instrucciones de tres direcciones pueden tener menos de los tres
operandos, por ejemplo, la asignacin.
Despus vamos a la fase de optimizacin de cdigo, en la cual se toma el
cdigo intermedio y se busca que sea ms eficiente en cuanto a tiempo de ejecucin
y el espacio de memoria que utiliza; optimiza tambin los arboles sintcticos, tuplas
o cuadruplas y reordena instrucciones. No solo se trata de optimizar el cdigo solo
por hacerlo, si no de mantener el mismo comportamiento en el cdigo optimizado
que el cdigo fuente presentaba.
La ltima fase que realiza un compilador, es la de generar el cdigo objeto
en un lenguaje entendible por la mquina, donde se eligen las posiciones de
memoria para cada variable que va a usar el programa, este es un aspecto decisivo.
Esta etapa tiene diversos aspectos generales, como la administracin de la
memoria, la seleccin de las instrucciones, la asignacin de los registros y la
eleccin del orden de evaluacin. Despus de pasar por esta ltima etapa, se
produce el programa objeto, el cual puede ser un ejecutable para el sistema
operativo husped o para otro.
En conclusin, aunque muchas veces pasen desapercibidos y no se les tome
la importancia que de verdad necesitan, los compiladores son una parte importante
en el avance de las tecnologas de la informacin y comunicacin, ya que sin ellos,
la realizacin de programas sera una tarea realmente complicada para cualquier
desarrollador. Forman parte de la clasificacin de traductores, transforman el cdigo
de alto nivel a uno de bajo nivel que entiendan los ordenadores, y para hacerlo
deben tomar el cdigo fuente y pasarlo por diversas etapas. En la fase de anlisis
lxico bsicamente lee el cdigo fuente y separa las palabras en tokens, en el
anlisis sintctico se agrupan los tokens para formar frases gramaticales que
utilizara en la salida; en la fase de anlisis semntico se encarga de revisar el
cdigo, buscar errores y reunir la informacin de los mismos, para despus hacer la
generacin de cdigo intermedio, que ya es un cdigo ms fcil de traducir a cdigo
maquina; despus de generar el cdigo intermedio se busca la optimizacin del
mismo antes de pasarlo a cdigo mquina, el cual ya puede dar como resultado el
programa objeto, despus de las asignaciones de memoria necesarias para cada
variable.
BIBLIOGRAFIA

Instituto Politcnico Nacional (2017). Traductores de lenguaje. [En Linea] Disponible en:
http://www.sites.upiicsa.ipn.mx/polilibros/portal/polilibros/p_terminados/PolilibroFC/Unidad_III/
Unidad%20III_6.htm [Accedido 1 Feb. 2017].

Cidecame. (2017). 1.3. Fases de un Compilador y sus Fundamentos Tericos. [En Linea] Disponible
en:
http://cidecame.uaeh.edu.mx/lcc/mapa/PROYECTO/libro32/autocontenido/autocon/13_fases_de
_un_compilador_y_sus_fundamentos_tericos.html [Accedido 1 Feb. 2017].

Garca, J. (2017). Qu es un compilador y cmo funciona? - michelletorres.mx. [en Linea]


michelletorres. Disponible en: http://michelletorres.mx/que-es-un-compilador-y-como-funciona/
[Accedido 3 Feb. 2017].

Ing-radjchv-pmz-estl. (2017). 1.4 Traductor y su estructura.. [En Linea] Disponible en: http://ing-
radjchv-pmz-estl.blogspot.mx/2009/09/14-traductor-y-su-estructura.html [Accedido 3 Feb. 2017].

Informatica4194.webnode.mx. (n.d.). Tipos de compiladores. :: Informatica. [En Linea] Disponible


en: http://informatica4194.webnode.mx/compiladores-/tipos-de-compiladores-/ [Accedido 1 Feb.
2017].

Aho, A.V., Sethi, R., Ullman, J.D. (1990), Compiladores: principios, tcnicas y herramientas, 2da
Edicion, Editorial Pearson.

Louden, K.C. (1997), Construccin de Compiladores: Principios y prctica, 1ra Edicin.