Inicio Anterior Siguiente

Compiladores
Estructura y Funcionamiento
Compilador



Compiladores


Lenguajes de Programaci�n
Un lenguaje de programaci�n est� formado por un conjunto de s�mbolos b�sicos (alfabeto) y un conjunto de reglas que especifican como manipularlos. Tambi�n debe darle significado a las cadenas formadas al manipular los s�mbolos b�sicos.
Los lenguajes de programaci�n pueden clasificarse de acuerdo a su semejanza con el lenguajes maquina o a su semejanza con el lenguaje humano (generalmente ingl�s).
Los lenguajes que tiene mayor semejanza con el lenguaje humano se les llama lenguajes de alto nivel, mientras que los lenguajes m�s parecidos al lenguaje de maquina son conocidos como de bajo nivel.
Entre los lenguajes de bajo nivel se encuentra el lenguajes ensamblador.

Algunos ejemplos de lenguajes de alto nivel son:

  • Algol
  • Basic
  • C
  • Cobol
  • Fortran
  • Modula 2
  • Pascal
  • Prolog


Traductores
Un traductor es un programa que recibe como entrada c�digo escrito en un cierto lenguaje y produce como salida c�digo en otro lenguaje. Generalmente el lenguaje de entrada es de m�s alto nivel que el de salida. Ejemplos de traductores son los ensambladores y los compiladores.
Un ensamblador es un programa que traduce de un lenguaje ensamblador a lenguaje m�quina, mientras que un compilador es un programa que traduce de un lenguaje de alto nivel a un lenguaje de bajo nivel o a lenguaje m�quina.
Un traductor es un programa que toma el texto escrito en un lenguaje (el lenguaje fuente) y lo convierte en el texto equivalente en un segundo lenguaje (el lenguaje destino u objeto).
Si el fuente es un lenguaje abstracto o de alto nivel y si el objetivo es un lenguaje de ensamble de bajo nivel o de m�quina, el traductor es un compilador.

Dise�o de lenguajes

El lenguaje de programaci�n puede definirse al describir

1. Lo que parecen sus programas (la sintaxis del lenguaje)

2. lo que significan sus programas (la sem�ntica del lenguaje).

La sintaxis del lenguaje se presenta ampliamente con una notaci�n denominada gram�tica libre de contexto o BNF. (Backus-Naur Form).
La sem�ntica del lenguaje es m�s dif�cil de expresar que la sintaxis y generalmente se decide por especificarla usando descripciones informales y ejemplos.
Ambas situaciones deben ser consideradas por quien dise�a un nuevo lenguaje para satisfacer las necesidades de los usuarios potenciales. Por ejemplo, alguien puede hacer el siguiente requerimiento:

Estructura de un Compilador.



Cualquier compilador debe realizar dos tareas principales: an�lisis del programa a compilar y s�ntesis de un programa en lenguaje maquina que, cuando se ejecute, realizara correctamente las actividades descritas en el programa fuente. Para el estudio de un compilador, es necesario dividir su trabajo en fases. Cada fase representa una transformaci�n al c�digo fuente para obtener el c�digo objeto. La siguiente figura representa los componentes en que se divide un compilador. Las tres primeras fases realizan la tarea de an�lisis, y las dem�s la s�ntesis. En cada una de las fases se utiliza un administrador de la tabla de s�mbolos y un manejador de errores.

An�lisis L�xico.
En la fase de an�lisis l�xico se leen los caracteres del programa fuente y se agrupan en cadenas que representan los componentes l�xicos. Cada componente l�xico es una secuencia l�gicamente coherente de caracteres relativa a un identificador, una palabra reservada, un operador o un car�cter de puntuaci�n. A la secuencia de caracteres que representa un componente l�xico se le llama lexema (o con su nombre en ingl�s token). En el caso de los identificadores creados por el programador no solo se genera un componente l�xico, sino que se genera otro lexema en la tabla de s�mbolos.

An�lisis Sint�ctico.
En esta fase, los componentes l�xicos se agrupan en frases gramaticales que el compilador utiliza para sintetizar la salida.

An�lisis Sem�ntico.
La fase de an�lisis sem�ntico se intenta detectar instrucciones que tengan la estructura sint�ctica correcta, pero que no tengan significado para la operaci�n implicada.

Generaci�n de c�digo Intermedio.
Algunos compiladores generan una representaci�n intermedia expl�cita del programa fuente, una vez que se han realizado las fases de an�lisis. Se puede considerar esta operaci�n intermedia como un subprograma para una m�quina abstracta. Esta representaci�n intermedia debe tener dos propiedades importantes: debe ser f�cil de producir y f�cil de traducir al programa objeto.

Optimizaci�n de C�digo.
En esta fase se trata de mejorar el c�digo intermedio, de modo que resulte un c�digo de m�quina m�s r�pido de ejecutar.

Generaci�n de C�digo.
Esta constituye la fase final de un compilador. En ella se genera el c�digo objeto que por lo general consiste en c�digo en lenguaje m�quina (c�digo relocalizable) o c�digo en lenguaje ensamblador.

Administrador de la tabla de s�mbolos.
Una tabla de s�mbolos es una estructura de datos que contiene un registro por cada identificador. El registro incluye los campos para los atributos del identificador. El administrador de la tabla de s�mbolos se encarga de manejar los accesos a la tabla de s�mbolos, en cada una de las etapas de compilaci�n de un programa.

Manejador de errores.
En cada fase del proceso de compilaci�n es posibles encontrar errores. Es conveniente que el tratamiento de los errores se haga de manera centralizada a trav�s de un manejador de errores. De esta forma podr�n controlarse m�s eficientemente los errores encontrados en cada una de las fases de la compilaci�n de un programa.

Este es el proceso estandar que un compilador comercial sigue para cualquier programa.... .











Actualizado: 5 de junio 2004....

[Arriba]



©2004 Alfonso Araujo Crdenas - Derechos reservados
Hosted by www.Geocities.ws

1