Análisis Semántico

Fase 3
Análisis Semántico

Escribe código en el editor y pulsa Analizar o Ejecutar para ver los resultados aquí.

¿Qué es el análisis semántico?

Una vez que el parser verifica la sintaxis correcta del programa, el analizador semántico verifica su significado. Un programa puede ser sintácticamente válido pero semánticamente incorrecto. Por ejemplo:

let x: number = "hola"; // error: tipos incompatibles

Tabla de símbolos

La tabla de símbolos registra información sobre cada entidad del programa y usa una pila de ámbitos (scopes). Cada función y bloque crea un nuevo ámbito. La búsqueda de un nombre sube por la pila hasta encontrarlo o llegar al ámbito global.

Validaciones implementadas

Variables no declaradas

El uso de una variable antes de declararla genera un error semántico.

Redeclaraciones inválidas

Declarar dos veces la misma variable en el mismo ámbito es un error.

Compatibilidad de tipos

El tipo del valor asignado debe coincidir con el tipo declarado.

Tipos en expresiones

Los operadores requieren operandos del tipo correcto.

Funciones no declaradas

Llamar a una función que no fue declarada genera un error.

Cantidad de argumentos

El número de argumentos debe coincidir con el número de parámetros.

Tipos de argumentos

Cada argumento debe ser del tipo esperado por el parámetro correspondiente.

Tipo de retorno

El valor retornado debe ser del tipo declarado. Las funciones void no deben retornar valores.

Return fuera de función

Un return fuera del cuerpo de una función es un error semántico.

Sistema de tipos de Slang

number

Valores numéricos enteros y decimales. Ejemplo: 42, 3.14

string

Cadenas de texto entre comillas dobles. Ejemplo: "Hola mundo"

boolean

Valores lógicos true o false solamente.

void

Tipo de retorno para funciones que no devuelven valor.