Fase Semántica
Otra de las fases importantes de un compilador es el análisis semántico, cuya función es comprobar la coherencia semántica del código. Utiliza el árbol de sintaxis de la fase anterior junto con la tabla de símbolos para verificar que el código fuente dado sea semánticamente consistente. También comprueba si el código transmite un significado apropiado.
El análisis semántico, como se describe en Compilers: Principles, Techniques, and Tools de Alfred V. Aho, Mónica S. Lam, Ravi Sethi y Jeffrey D. Ullman (2006), se asegura de que las operaciones realizadas sean válidas, las variables estén correctamente definidas y utilizadas, y las funciones cumplan con las reglas esperadas. Sin esta etapa, el compilador podría generar programas que fallan en tiempo de ejecución o producen resultados inesperados.
Funciones de la fase de análisis semánticos son:
- Permite almacenar la información de tipo recopilada y guardarla en una tabla de símbolos o un árbol de sintaxis.
- Permite realizar verificación de tipo
- En el caso de una discrepancia de tipos, donde no existen reglas de corrección de tipos exactas que satisfagan la operación deseada, se muestra un error semántico.
- Recopila información de tipos y comprueba la compatibilidad de tipos.
- Comprueba si el idioma de origen permite los operandos o no
Tabla de símbolos
La tabla de símbolos es la estructura utilizada por el
compilador para almacenar los atributos asociados a los símbolos que se
utilizan en un lenguaje de programación. Los atributos que esta estructura
almacena para cada símbolo pueden ser:
x y y deben ser declaradas antes de ser utilizadas en cualquier operación.y = x + 3.14;, x es de tipo entero y 3.14 es de tipo real. El análisis semántico verifica si la operación es válida y realiza una conversión implícita, si es necesario.y en imprime y;, el análisis semántico asegura que se le haya asignado un valor.Referencias Bibliográficas
Cerulean, K. (2024, 26 septiembre). Phases of Compiler with Example: Compilation Process & Steps. Guru99. https://www.guru99.com/es/compiler-design-phases-of-compiler.html
Documento sin título. (s. f.). https://www.angelfire.com/planet/ispr/Unidad3/3.4.htm

Comentarios
Publicar un comentario