Análisis: Se realiza una division del programa en sus componentes y se crea una representación intermedia del programa fuente. Durante esta fase la estructura del programa se guarda en una estructura de datos especial que se denomina árbol sintáctico.
- Análisis léxico: separación de cada elemento componente del programa
- Análisis sintáctico: agrupa los componentes léxicos en frases gramaticales
- Análisis semántico: Se revisa el programa fuente para comprobar que las reglas semánticas del lenguaje (aquellas relativas al significado de las distintas instrucciones) se cumplen. Un ejemplo de regla semántica es la comprobación de tipos en las expresiones.
Síntesis: Construye el programa destino deseado a partir de una descripción en un lenguaje de representación intermedia.
Las tres primeras fases que realiza un compilador son: análisis léxico, sintáctico y semántico las cuales corresponden al analisis, pero dentro de la segunda fase de la compilación es decir durante la sintesis existen las siguientes fases: generación de código intermedio, optimador de código, y generador de código y existen otras dos fases la administración de la tabla de simbolos y el manejo de errores las cuales hacen interacción con las seis fases.
La tabla de símbolos: es una estructura de datos que almacena los identificadores utilizados en el programa fuente así como los atributos de cada identificador. Estos atributos pueden proporcionar información sobre el tipo del identificador, su tamaño, su rango de visibilidad, sus argumentos (en caso de procedimientos). La tabla de símbolos tiene operaciones para encontrar un identificador rápidamente, y leer sus atributos o modificarlos. Asimismo, permite introducir nuevos identificadores. Cada una de las fases de compilación puede realizar modificaciones de los registros de una tabla de símbolos, generalmente añadiendo más atributos a medida que se van conociendo.
El manejador de errores: es un módulo que gestiona las acciones a realizar por cada uno de los errores encontrados en las diferentes fases de la compilación.
PROGRAMAS DE SISTEMAS RELACIONADOS CON UN COMPILADOR
Preprocesador: Un programa fuente puede estar dividido en módulos almacenados en ficheros diferentes. La tarea de recopilar el código fuente almacenado en estos ficheros puede ser encomendada a un preprocesador. Asimismo, un preprocesador puede expandir las macros
convirtiéndolas en instrucciones ejecutables.
Ensamblador: Para poder obtener un programa ejecutable es preciso ensamblar este programa final con un ensamblador convencional.
Enlazador.Esta herramienta toma código máquina relocalizable de los diferentes objetos compilados y de librería, modifica las direcciones relocalizables para situarlas a los valores absolutos adecuados, y crea el programa ejecutable.
No hay comentarios:
Publicar un comentario