Fases de Un Compilador
Fases de Un Compilador
Fases de Un Compilador
2.-Análisis sintáctico:
Determina si la secuencia de componentes léxicos
sigue la sintaxis del lenguaje y obtiene la estructura
jerárquica 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 léxicos, esto es semejante a realizar el
análisis gramatical sobre una frase en lenguaje natural.
La estructura sintáctica la definiremos mediante las
gramáticas independientes del contexto.
3.-Análisis semántico:
Realiza las comprobaciones necesarias sobre el árbol
sintáctico para determinar el correcto significado del
programa.
Las tareas básicas a realizar son: La verificación e
inferencia de tipos en asignaciones y expresiones, la
declaración 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 análisis semántico estático (en
tiempo de compilación), donde es necesario hacer uso
de la Tabla de símbolos, como estructura de datos
para almacenar información sobre los identificadores
que van surgiendo a lo largo del programa. El análisis
semántico suele agregar atributos (como tipos de
datos) a la estructura del árbol semántico.
6.-Tabla de Símbolos:
Es una estructura tipo diccionario con operaciones de
inserción, borrado y búsqueda, que almacena
información sobre los símbolos que van apareciendo a
lo largo del programa como son: – los identificadores
(variables y funciones) – Etiquetas – tipos definidos por
el usuario (arreglos, registros, etc.)
Además almacena el tipo de dato, método de paso de
parámetros, tipo de retorno y de argumentos de una
función, el ámbito de referencia de identificadores y la
dirección de memoria. Interacciona tanto con el
analizador léxico, sintáctico y semántico que
introducen información conforme se procesa la
entrada. La fase de generación de código y
optimización también la usan.
7.-Gestor de errores:
Detecta e informa de errores que se produzcan
durante la fase de análisis. Debe generar mensajes
significativos y reanudar la traducción.