Sistema de Errores e Internos de Diagnóstico

Archivo: src/error.rs

Forja implementa un motor de diagnóstico educativo diseñado para asistir activamente al estudiante o desarrollador. En lugar de limitarse a abortar la compilación con mensajes crípticos, localiza con precisión el origen y ofrece soluciones directas en español.

💡 Filosofía Educativa: Los errores son clasificados bajo nombres tradicionales o educativos (como "Ortografía" para errores léxicos, o "Gramática" para errores sintácticos) para suavizar la curva de aprendizaje de compiladores.

Módulo color

Proporciona formateo de salida ANSI para la terminal, facilitando la legibilidad de los reportes coloreados.

Enumeración ErrorTipo

Representa las categorías fundamentales de errores en el ciclo de vida del compilador:

VarianteCategoría EducativaFase de OrigenPropósito
ErrorLexicoOrtografíaLexerCaracteres extraños, cadenas o comentarios sin cerrar.
ErrorSintacticoGramáticaParserIncumplimiento de la gramática formal del lenguaje.
ErrorDePropiedadPertenenciaBorrow CheckerViolación de reglas de ciclo de vida u ownership.
ErrorDeTipoTipos de datosType CheckerIncompatibilidad semántica de tipos en asignaciones o llamadas.
ErrorSemanticoSignificadoSemánticaVariables no declaradas, ámbitos rotos o variables duplicadas.
ErrorInternoInternoCualquieraFallas no recuperables de la VM, IO o bugs del compilador.

Estructura principal ErrorForja

Definición de ErrorForja
pub struct ErrorForja {
    pub tipo: ErrorTipo,
    pub linea: usize,
    pub columna: usize,
    pub mensaje: String,
    pub sugerencia: String,
}

Desglose de Funciones de ErrorForja

pub fn new(tipo: ErrorTipo, linea: usize, columna: usize, mensaje: &str, sugerencia: &str) -> Self

pub fn mostrar_con_contexto(&self, source: &str) -> String

pub fn to_json(&self) -> String

fn escape_json(&self, s: &str) -> String

Funciones del Módulo Asociadas

pub fn emoji_para(tipo: &ErrorTipo) -> &'static str

pub fn categoria_educativa(tipo: &ErrorTipo) -> &'static str