sagas/mision-calculadora-neon/004-mision-cumplida-neon.md

2026-03-24 draft

Episodio 004 — Misión cumplida neon

Episodio 004 — Misión cumplida neon

Victoria final sobre la lógica

1) Promesa inicial

El tokenizer ya hablaba fluido: números, paréntesis, + − * / y errores con sello [CAPRINI_ERR]. La promesa del cierre era cerrar el circuito sin atajos: parser propio, evaluador propio, CLI propio. Nada de motores externos de matemáticas: lógica made by Caprini, capa por capa.

2) Síntoma

Tener tokens perfectos no suma si no hay precedencia real. Sin RPN, 10 + 5 * 2 se malinterpreta; sin shunting-yard, los paréntesis son decoración. El síntoma era claro: faltaba el puente entre lista de piezas y número final.

3) Autopsia

La expresión vive en infix; la máquina quiere orden de evaluación explícito. La solución canónica: algoritmo de shunting-yard → Notación Polaca Inversa. Luego un evaluador de pila binario: dos operandos, un operador, un resultado. Sin esa pareja, el proyecto seguía siendo un museo de tokens.

4) Corrección

  • parser.mjs: cola de salida + pila de operadores; * y / pisan delante de + y -; paréntesis balanceados o error vocal.
  • évaluator.mjs: recorre RPN, aplica + − * /`, corta en división por cero y expresiones rotas.
  • índex.mjs: readline, pipeline completo, salida bajo **[CAPRINI_OUT] > [RESULTADO]`** con brillo neón en consola.
  • TDD de integración: (10 + 5) * 2 / 310, de punta a punta.

Bitácora: la calculadora está operativa. El latido pasó de “reconocer” a resolver.

5) Lección reusable

Separar tokenizar, ordenar (RPN) y calcular hace el sistema testeable y honesto. Cuando el dominio es pequeño, no hace falta una librería: hace falta disciplina SDD y tests que fallen antes que el usuario.


Post-cierre operativo: recordatorio de doble empuje — git push local y ñode bootstrap.mjs —export-saga mision-calculadora-neon(nombre alineado conSAGA_MANIFEST.json`).