Vous êtes sur la page 1sur 3

1.

7 Fases de un compilador
Fases de un compilador.
Los compiladores son programas de computadora que traducen de un lenguaje a otro. Un
compilador toma como su entrada un programa escrito en lenguaje fuente y produce un programa
equivalente escrito en lenguaje objeto.
Un compilador se compone internamente de varias etapas, o fases, que realizan operaciones
lgicas. Es til pensar en estas fases como piezas separadas dentro del compilador, y pueden en
realidad escribirse como operaciones codificadas separadamente aunque en la prctica a menudo
se integran.
--Anlisis Lxico
Anlisis Sintctico
Anlisis Semntico
Generacin y Optimizacin de cdigo intermedio
Generacin de cdigo objeto
Analizador lxico: lee la secuencia de caracteres de izquierda a derecha del programa fuente y
agrupa las secuencias de caracteres en unidades con significado propio (componentes lxicos o
tokens en ingles).
Las palabras clave, identificadores, operadores, constantes numricas, signos de puntuacin
como separadores de sentencias, llaves, parntesis, etc. , son diversas clasificaciones de
componentes lxicos.
Anlisis sintctico: determina si la secuencia de componentes lxicos sigue la sintaxis del
lenguaje y obtiene la estructura jerrquica del programa en forma de rbol, donde los nodos son
las construcciones de alto nivel del lenguaje.
Se determinan las relaciones estructurales entre los componentes lxicos, esto es semejante a
realizar el anlisis gramatical sobre una frase en lenguaje natural. La estructura sintctica la
definiremos mediante las gramticas independientes del contexto.
Anlisis semntico: realiza las comprobaciones necesarias sobre el rbol sintctico para determinar
el correcto significado del programa.
Las tareas bsicas a realizar son: La verificacin e inferencia de tipos en asignaciones y
expresiones, la declaracin del tipo de variables y funciones antes de su uso, el correcto uso de
operadores, el mbito de las variables y la correcta llamada a funciones.
Nos limitaremos al anlisis semntico esttico (en tiempo de compilacin), donde es necesario
hacer uso de la Tabla de smbolos, como estructura de datos para almacenar informacin sobre los
identificadores que van surgiendo a lo largo del programa. El anlisis semntico suele agregar
atributos (como tipos de datos) a la estructura del rbol semntico.
Generacin y optimizacin de cdigo intermedio: la optimizacin consiste en la calibracin del
rbol sintctico donde ya no aparecen construcciones de alto nivel. Generando un cdigo

mejorado, ya no estructurado, ms fcil de traducir directamente a cdigo ensamblador o mquina,


compuesto de un cdigo de tres direcciones (cada instruccin tiene un operador, y la direccin de
dos operndoos y un lugar donde guardar el resultado), tambin conocida como cdigo intermedio.
Generacin de cdigo objeto: toma como entrada la representacin intermedia y genera el cdigo
objeto. La optimizacin depende de la mquina, es necesario conocer el conjunto de instrucciones,
la representacin de los datos (nmero de bytes), modos de direccionamiento, nmero y propsito
de registros, jerarqua de memoria, encauzamientos, etc.
Suelen implementarse a mano, y son complejos porque la generacin de un buen cdigo objeto
requiere la consideracin de muchos casos particulares.
Tabla de Smbolos: es una estructura tipo diccionario con operaciones de insercin, borrado y
bsqueda, que almacena informacin sobre los smbolos que van apareciendo a lo largo del
programa como son: los identificadores (variables y funciones) Etiquetas tipos definidos por el
usuario (arreglos, registros, etc.)
Adems almacena el tipo de dato, mtodo de paso de parmetros, tipo de retorno y de
argumentos de una funcin, el mbito de referencia de identificadores y la direccin de memoria.
Interacciona tanto con el analizador lxico, sintctico y semntico que introducen informacin
conforme se procesa la entrada. La fase de generacin de cdigo y optimizacin tambin la usan.
Gestor de errores: detecta e informa de errores que se produzcan durante la fase de anlisis.
Debe generar mensajes significativos y reanudar la traduccin.
Encuentra errores: En tiempo de compilacin: errores lxicos (ortogrficos), sintcticos
(construcciones incorrectas) y semnticos (p.ej. errores de tipo) En tiempo de ejecucin:
direccionamiento de vectores fuera de rango, divisiones por cero, etc. De especificacin/diseo:
compilan correctamente pero no realizan lo que el programador desea.
Se trataran slo errores estticos (en tiempo de compilacin). Respecto a los errores en tiempo de
ejecucin, es necesario que el traductor genere cdigo para la comprobacin de errores
especficos, su adecuado tratamiento y los mecanismos de tratamiento de excepciones para que el
programa se contine ejecutando.
La mayora de los compiladores son dirigidos por la sintaxis, es decir, el proceso de traduccin es
dirigido por el analizador sintctico. El anlisis sintctico genera la estructura del programa fuente a
travs de tokens. El anlisis semntico proporciona el significado del programa basndose de la
estructura del rbol de anlisis sintctico.
Las fases de anlisis lxico y anlisis sintctico se pueden automatizar de manera relativamente
fcil, las verdaderas dificultades en la construccin de compiladores son el anlisis semntico, la
generacin y la optimizacin de cdigo.
El nmero de pasadas, es decir, el nmero de veces que hay que analizar el cdigo fuente, est
en funcin del grado de optimizacin. Tpicamente se realiza una pasada para realizar el anlisis
lxico y sintctico, otra pasada para el anlisis semntico y optimizacin del lenguaje intermedio y
una tercera pasada para generacin de cdigo y optimizaciones dependientes de la mquina.

Estructuras de datos Empla.


Bibliografia:
Billhardt, H. (2015). Teoria de automatas y lenguajes formales .
Mata, S. G. (s.f.). Compiladores.
Serna, E. (s.f.). Fases de un compilador. Obtenido de
http://www.paginasprodigy.com/edserna/cursos/compilador/notas/Notas1.pdf