Compilador
Programa
objeto
Mensajes de error
En la compilacin hay dos partes: anlisis y sntesis. La parte del anlisis divide al
programa fuente en sus elementos componentes y crea una representacin intermedia del
programa fuente. La parte de la sntesis construye el programa objeto deseado a partir de la
representacin intermedia.
Durante el anlisis, se determinan las operaciones que implica el programa fuente y
se registran en una estructura jerrquica llamada rbol. A menudo se usa una clase especial
de rbol llamada rbol sintctico, donde cada nodo representa una operacin y los hijos de
un nodo son los argumentos de la operacin.
Anlisis del programa fuente.
El anlisis consta de 3 fases:
1. A nlisis lineal, en el que la cadena de caracteres que constituye el programa fuente,
se lee de izquierda a derecha y se agrupa en componentes lxicos, que son
secuencias de caracteres que tienen un significado colectivo.
2. A nlisis jerrquico (tambin llamado sintctico). En el que los caracteres o los
componentes lxicos se agrupan jerrquicamente en colecciones anidadas con un
significado colectivo.
3. A nlisis semntico. En el que realizan ciertas revisiones para asegurar que los
componentes de un programa se ajustan de un modo significativo.
Fases de un compilador.
Conceptualmente un compilador opera en fases, cada una de las cuales transforma al
programa fuente de una representacin en otra.
Programa fuente
Analizador
lxico
Analizador
sintctico
Administrador de
la tabla de
smbolos
Analizador
semntico
Manejador de
errores
Generador de
cdigo
intermedio
Optimador de
cdigo
Generador de
cdigo
Programa objeto
Anlisis lxico
El anlisis lineal se llama anlisis lxico o exploracin. El modelo matemtico de un
analizador de este tipo recibe el nombre de autmata finito; un autmata de este tipo es una
funcin matemtica que puede reconocer grupos de caracteres que constituyen un
componente sintctico.
Anlisis sintctico.
El anlisis jerrquico, se denomina anlisis sintctico. Este implica agrupar los
componentes lxicos del programa fuente en frases gramaticales que el compilador que
utiliza para sintetizar la salida. Por lo general, las frases gramaticales del programa fuente
se representa mediante un rbol de anlisis sintctico.
Anlisis semntico.
La fase de anlisis semntico revisa el programa fuente para tratar de encontrar
errores semnticos y rene la informacin sobre los tipos para la fase posterior de
generacin de cdigo. En ella se utiliza la estructura jerrquica determinada por la fase de
anlisis sintctico para identificar los operadores y operandos de expresiones y
proposiciones. Un componente importante del anlisis semntico es la verificacin de tipos.
Aqu, el compilador verifica si cada operador tiene operandos permitidos por la
especificacin del lenguaje fuente.
Optimacin de cdigo
La fase de optimacin de cdigo trata de mejorar el cdigo intermedio, de modo que resulte
un cdigo de mquina ms rpido de ejecutar.
Generacin de cdigo.
La fase final de un compilador es la generacin de cdigo objeto, que por lo general
consiste en cdigo de mquina relocalizable o cdigo ensamblador. Las posiciones de
memoria se seleccionan para cada una de las variables usadas por el programa. Despus,
cada una de las instrucciones intermedias se traduce a una secuencia de instrucciones de
mquina que ejecuta la misma tarea.
Optimador de cdigo
Temp1 := id3 * 60.0
id1 := id2 + temp1
Generador de cdigo
Mov F id3, R2
Mult F #60.0, R2
Mov F id2, R1
Ada F R2, R!
Mov F R1, id1