sagas/mision-calculadora-neon/003-expandiendo-el-lenguaje.md

2026-03-24 draft

Episodio 003 - Expandiendo el lenguaje

Episodio 003 - Expandiendo el lenguaje

Cronica de un Error Anunciado

1) Promesa inicial

Arrancamos con un tokenizer minimalista: numeros, + y -, todo en fila india. La promesa era avanzar rapido y sostener TDD sin meter magia negra.

2) Sintoma

Cuando aterrizo la expresion (10 + 2) * 3, la cabina empezo a vibrar: la logica lineal no reconocia la jerarquia de paréntesis y se quedaba corta para escalar. Tambien faltaban *, / y una ruta clara para decimales como 15.5 / 5.

3) Autopsia

El regex de tokens estaba limitado al corredor + y -. Eso nos dejaba sin piezas fundamentales del lenguaje matematico: operadores de mayor precedencia y delimitadores de agrupacion. Encima, ante caracteres raros, el error era generico y poco util para diagnostico rapido.

4) Correccion

Aplicamos refactor chico y controlado:

  • ampliamos el tokenizer para aceptar *, /, (, ) y decimales,
  • clasificamos tokens en ñumber, óperator y parenthesis,
  • endurecimos seguridad con error descriptivo: [CAPRINI_ERR] Carácter no identificado: X.,
  • fijamos el comportamiento con TDD en casos reales:
    • (10 + 2) * 3
    • 15.5 / 5
    • entrada invalida con $.

No tocamos parser ni evaluacion: el objetivo del episodio fue reconocer piezas, no resolver la expresion.

5) Leccion reusable

Cuando el lenguaje crece, la primera trinchera es el tokenizer. Si la identificacion de piezas es precisa y segura, el parser llega con terreno limpio. Vibecoding sin disciplina rompe; SDD con tests pequenos y foco por capa mantiene el latido estable.