You are on page 1of 17

Normalmente los compiladores estn divididos en dos partes:

Front

End (etapa inicial): es la parte que analiza el cdigo fuente, comprueba su validez, genera el rbol de derivacin y rellena los valores de la tabla de smbolos. Esta parte suele ser independiente de la plataforma o sistema para el cual se vaya a compilar. Back End (etapa final): es la parte que genera el cdigo mquina, especfico de una plataforma, a partir de los resultados de la fase de anlisis, realizada por el Front End.

Posee informacin sobre los identificadores definidos por el usuario, ya sean constantes, variables o tipos. Dado que puede contener informacin de diversa ndole, debe hacerse de forma que no sea uniforme. Hace funciones de diccionario de datos y su estructura puede ser una tabla hash, un rbol binario de bsqueda, etc.

En la fase de anlisis lxico se leen los caracteres del programa fuente y se agrupan en cadenas que representan los componentes lxicos. Cada componente lxico es una secuencia lgicamente coherente de caracteres relativa a un identificador, una palabra reservada, un operador o un carcter de puntuacin.

A la secuencia de caracteres que representa un componente lxico se le llama lexema (o con su nombre en ingls token). En el caso de los identificadores creados por el programador no solo se genera un componente lxico, sino que se genera otro lexema en la tabla de smbolos.

Comprueba que la estructura de los componentes bsicos sea correcta segn ciertas reglas gramaticales. Adems interpone una estructura jerrquica a la cadena de componentes lxicos, que se representara por medio de rboles sintcticos.

Ejemplo de un rbol sintctico:

Comprueba todo lo relacionado con el significado, chequeo de tipos, rangos de valores, existencia de variables, etc.

Genera

un cdigo independiente de la mquina. Las ventajas, es que es fcil hacer pseudo compiladores y adems facilita la optimizacin de cdigo.

Crea

un fichero .exe directamente o un fichero .obj. Aqu tambin se puede hacer optimizacin propia del microprocesador.

La

optimizacin puede realizarse durante las fases de generacin de cdigo intermedio y/o generacin de cdigo mquina y puede ser una fase aislada de stas, o estar integrada con ellas. La optimizacin del cdigo intermedio debe ser independiente de la mquina.

resulta

tentador compilar varios lenguajes distintos en el mismo lenguaje intermedio y usar una etapa final comn para las distintas etapas iniciales, obtenindose as varios compiladores para una mquina.

Cada

fase puede encontrar errores , despus de detectar un error cada fase debe de tratar ese error para poder continuar la compilacin
compilador que se detiene cuando encuentra el primer error no resulta tan til como debiera fases de anlisis sintctico y semntico por lo general manejan una gran porcin de errores detectables por el compilador

Un

Las

You might also like