3. Análisis semántico: Validando el significado.

El análisis semántico es la etapa en la que el compilador verifica que el programa sea lógicamente válido. Aquí no se revisa solo la estructura, sino también el significado del código y se detectan errores como:

  •     Uso de variables no declaradas.
  •     Operaciones entre tipos incompatibles (por ejemplo, sumar un número con un texto).
  •     Declaraciones duplicadas de variables.
    (Alfred & Ullman, 1998, capítulo 4)

Cómo funciona el análisis semántico.

En el Ejemplo 7 podemos ver un fragmento de código donde tenemos dos tipos de declaraciones distintas una es de tipo entero mientras que la otra es del tipo cadena:    

Verificación de tipos: Asegura que las operaciones sean válidas para los tipos de datos involucrados. (Alfred & Ullman, 1998, capítulo 4)

  •     Por ejemplo, no puedes sumar un número con un string.
  •     Ejemplo incorrecto:
                                                            entero x = 10;
                                                            cadena texto = "Hola";
                                                            entero suma = x + texto; // Error: tipos incompatibles
Ejemplo 7. Error por tipos de datos.
Fuente: Eduardo, O. Q. E. (2024). Ejemplo 7 [Fragmento de código].

Declaración previa: Verifica que todas las variables y funciones utilizadas hayan sido declaradas antes de ser usadas.
  •     Ejemplo incorrecto:
                            entero suma = x + y; // Error: x ni y no están declarados
Ejemplo 7.1. Error por no declarar variables.
Fuente: Eduardo, O. Q. E. (2024). Ejemplo 7.1 [Fragmento de código].

Duplicidad de nombres: Asegura que no haya dos variables con el mismo nombre en el mismo ámbito.

  •     Ejemplo incorrecto:

                                                                     entero x = 10;
                                                                  entero x = 20; // Error: x ya está declarada                                                  Ejemplo 7.2. Error por uso de variable existente.
Fuente: Eduardo, O. Q. E. (2024). Ejemplo 7.2 [Fragmento de código].

El compilador detectará un error porque no se puede sumar un entero con una cadena como se muestra en el Ejemplo 7.

Durante esta etapa, el compilador utiliza una tabla de símbolos, que almacena información sobre las variables, funciones y su contexto. Como se muestra en la Tabla 2:

Tabla 2. Agrupaciones.
Fuente: Eduardo, O. Q. E. (2024). Tabla 2 [Imagen]. Excel.

Si intentas usar una variable que no está en la tabla de símbolos, se generará un error.


En el siguiente video te comparto la explicación más a detalle sobre la fase semántico:


Fuente: Alex Ortega Díaz. (2018c, August 13). Fases del compilador Análisis léxico, sintáctico y semántico [Video]. YouTube. https://www.youtube.com/watch?v=7sAU-7z0X1E


Referencia en APA: Alfred, A. V., & Ullman, J. D. (1998). Análisis semántico. En Principles of compiler design (Capítulo 4). Compiladores. (n.d.). Google Books. https://books.google.com.gt/books?id=yG6qJBAnE9UC&printsec=frontcover#v=onepage&q&f=false

Comentarios