El 1 de enero de 2026, abrimos un terminal en Abiyán y escribimos cargo init. FLIN aún no existía. No había analizador léxico, ni parser, ni sistema de tipos, ni runtime. Había un PRD -- siete documentos que sumaban miles de líneas -- y un directorio vacío. Cuarenta y cinco minutos después, teníamos un proyecto Rust con 14 archivos, más de 1.000 líneas de código, 42 palabras clave definidas, 60+ tipos de tokens enumerados, 25 pruebas unitarias y el esqueleto de cada fase del compilador mapeado a su propio módulo. No un prototipo. No una lluvia de ideas. La base de un lenguaje de programación.
Esta es la historia de esa primera sesión -- las decisiones que tomamos antes de escribir una sola línea de código, la estructura del proyecto que llevaría a FLIN a través de docenas de sesiones, y las 42 palabras clave que definen lo que es FLIN.
Las 42 palabras clave
FLIN no es un lenguaje de propósito general. Es un lenguaje específico de dominio para construir aplicaciones web full-stack con operaciones de base de datos integradas, consultas de intención potenciadas por IA, datos temporales y una capa de vista reactiva. Las 42 palabras clave reflejan este alcance exactamente.
Las organizamos en seis categorías:
Operaciones de datos (9): entity, save, delete, where, find, all, first, count, order. Son los verbos de la capa de persistencia integrada de FLIN.
Tipos (8): text, int, float, bool, time, file, money, semantic. El sistema de tipos de FLIN es pequeño y práctico. money es un tipo de primera clase porque FLIN apunta a aplicaciones de negocio en África Occidental donde el manejo de monedas no es opcional. semantic es un modificador de tipo para búsqueda vectorial potenciada por IA.
Flujo de control (5): if, else, for, in, match. Territorio familiar. Sin bucle while -- FLIN usa for con rangos y colecciones. Sin switch -- FLIN usa match con coincidencia de patrones.
Referencias temporales (7): now, today, yesterday, tomorrow, last_week, last_month, last_year. El tiempo no es una ocurrencia tardía en FLIN. Cada entidad es automáticamente versionada. Estas palabras clave son referencias temporales de primera clase.
Intención / IA (4): ask, search, by, limit. Potencian la integración IA de FLIN.
Literales y contexto (9): true, false, none, event, params, body, route, asc, desc.
60+ tipos de tokens
El enum TokenKind de FLIN tiene más de 60 variantes, cubriendo cada elemento sintáctico que el lenguaje puede contener: literales, operadores, delimitadores, tokens de vista (TagOpen, TagClose, TagSelfClose, TagEnd) y tokens de control de vista ({if, {else, {for, {/for}).
La sesión en números
| Métrica | Valor |
|---|---|
| Duración | ~45 minutos |
| Archivos creados | 14 |
| Líneas de Rust | ~1.000 |
| Palabras clave definidas | 42 |
| Tipos de tokens definidos | 60+ |
| Pruebas unitarias | 25 |
| Dependencias externas | 0 |
| Fases del compilador estructuradas | 7 |
| Tareas completadas | 12 de 350 totales |
Doce tareas de 350. Tres coma cuatro por ciento del plan total de implementación. Pero el 3,4% correcto -- la base de la que depende cada tarea subsiguiente.
Esta es la Parte 11 de la serie "Cómo construimos FLIN".