Analizador semántico
El analizador semántico es la tercera fase del compilador y una de las más importantes. Su función principal es verificar que el código fuente esté correctamente escrito. Para lograrlo, se apoya en la tabla de símbolos y en el árbol sintáctico, comprobando la coherencia semántica del programa fuente. Posteriormente, clasifica el tipo de cada token y lo almacena, ya sea en la tabla de símbolos o en el árbol sintáctico.
En la Figura 6 se muestra la estructura del analizador semántico, el cual verifica, clasifica y procesa el código fuente, añadiendo las anotaciones de tipo y su correspondiente pertenencia. Además, determina si el código está correctamente escrito o si contiene errores. Este paso es crucial para el compilador, ya que es responsable de iniciar la traducción del código al lenguaje intermedio, asegurándose de que todo esté correctamente escrito y cumpla con las reglas del lenguaje.

Figura 9. estructura del analizador semántico dentro del compilador (s/f)(S/f). Cbaul-cdnwnd.com. Recuperado el 6 de diciembre de 2024, de https://0bfd21ac73.cbaul-cdnwnd.com/8ff60cdd53a3762cd1ec90540ed76027/200000031-ab25aab25b/700/semantic.webp?ph=0bfd21ac73
Funciones Principales
Verificación semántica:
- Comprueba que las operaciones realizadas sean válidas según los tipos de datos (por ejemplo, no permitir sumar un número entero con una cadena de texto).
- Valida el uso correcto de identificadores, como variables declaradas antes de ser utilizadas.
- Detecta errores relacionados con el alcance de las variables y funciones.
- Clasificación y anotación:
- Asigna tipos a cada token del programa.
- Almacena esta información en la tabla de símbolos o como anotaciones en el árbol sintáctico.
Preparación para la traducción:
- Inicia el proceso de traducción al lenguaje intermedio, asegurando que el código cumple con todas las reglas del lenguaje de programación.
Errores Detectados por el Analizador Semántico
- Uso incorrecto de tipos de datos, como intentar dividir una cadena por un número.
- Declarar una variable más de una vez en el mismo ámbito.
- Usar una variable sin haberla declarado previamente.
- Intentar acceder a una variable fuera de su ámbito válido.
- Llamadas a funciones con un número incorrecto de argumentos o tipos no coincidentes.
- Intentar realizar operaciones entre tipos incompatibles.
En la Figura 10 se muestra la la fracción de código correspondiente al clasificador de imágenes, el cual se utilizará a continuación para procesarlo con el analizador semántico a manera de ejemplo.

Figura 10. Línea de código del programa clasificador de imágenes. Imagen creada por el autor en Python el 05 de diciembre del 2024.
Importación de Bibliotecas
El analizador semántico verifica que la biblioteca tensorflow exista y esté correctamente instalada.
(tf): Se asigna el alias tf a tensorflow. Se asegura que tf no esté siendo usado previamente para otro propósito en el programa.
Tipos de Análisis Semántico
Análisis estático:
- Se realiza en tiempo de compilación. Por ejemplo, verificar que una variable esté inicializada antes de su uso
Análisis dinámico:
- Aunque pertenece más a la ejecución, puede influir en la generación de alertas para advertencias específicas (por ejemplo, posibles divisiones por cero detectadas estáticamente) .
(Hernandez, s/f)
Hernandez, M. [@MarioHernandez-hr4xd]. (s/f). Analisis semantico del compilador. Youtube. Recuperado el 6 de diciembre de 2024, de https://www.youtube.com/watch?v=z7tAUJ2PHXM