Flujo del compilador
Las 6 fases clásicas de un compilador, desde el código fuente hasta el código máquina.
Análisis Léxico
ImplementadoEl lexer recorre el código carácter por carácter y agrupa los caracteres en unidades significativas llamadas tokens: palabras reservadas, identificadores, literales, operadores y delimitadores.
Análisis Sintáctico
ImplementadoEl parser LL(1) verifica que los tokens formen construcciones gramaticalmente válidas usando una tabla predictiva. Construye el AST y se recupera de errores por modo pánico.
Análisis Semántico
ImplementadoVerifica el significado del programa: variables declaradas, tipos compatibles, número correcto de argumentos, retornos válidos. Construye la tabla de símbolos con toda la información de ámbito.
Generación de Código Intermedio
DidácticoTraduce el AST a una representación intermedia independiente de la arquitectura. El código de tres direcciones es fácil de optimizar y de traducir a ensamblador. Ejemplo: t1 = a + b, t2 = t1 * c.
Optimización de Código
DidácticoAplica transformaciones para mejorar velocidad y reducir uso de memoria sin cambiar la semántica. Ejemplos: eliminación de expresiones comunes, propagación de constantes, desenrollar bucles, eliminación de código muerto.
Generación de Código
DidácticoTraduce el código intermedio a instrucciones reales del procesador (x86, ARM, etc.). Asigna registros, gestiona el stack y produce el binario ejecutable final.