Back to flin
flin

Sesión 1: configuración del proyecto y 42 palabras clave

Sesión 1 de la construcción de FLIN: configuración del proyecto, 42 palabras clave, 60+ tipos de tokens y las primeras líneas de un compilador de lenguaje.

Juste A. Gnimavo (Thales) & Claude | March 26, 2026 3 min flin
EN/ FR/ ES
flinrust

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étricaValor
Duración~45 minutos
Archivos creados14
Líneas de Rust~1.000
Palabras clave definidas42
Tipos de tokens definidos60+
Pruebas unitarias25
Dependencias externas0
Fases del compilador estructuradas7
Tareas completadas12 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".

Share this article:

Responses

Write a response
0/2000
Loading responses...

Related Articles

Thales & Claude deblo

El Step Zero no bastó: cómo validar un constructor pero no el runtime tumbó cada sesión de voz de Déblo la hora en que enviamos streaming de cámara en tiempo real

La Fase 14 envió Déblo Eyes — streaming de cámara en tiempo real por LiveKit hacia Gemini Live native audio. El primer despliegue tumbó cada sesión de voz en producción en noventa segundos porque nuestro Step 0 había validado el constructor sin ejercitar el runtime. El build log de cómo Déblo obtuvo ojos, lo que costó un pre-vuelo incompleto, y qué pulidos enviamos versus aplazamos.

33 min May 20, 2026
debloclaude-opus-4.7claude-codegemini-live +25
Thales & Claude deblo

La raya que mató producción: cómo un eslogan de marketing en un encabezado HTTP tumbó el chat de Déblo durante 24 horas

Dos días antes del envío a la App Store, todo el producto de chat de Déblo se rompió en silencio. Sin spinner, sin toast, sin error en la UI — solo aire muerto. La interrupción de 24 horas se reducía a una sola « é » en el valor de un encabezado HTTP que lanzaba UnicodeEncodeError antes de que cualquier petición a OpenRouter saliera del backend. El post-mortem de una falsa hipótesis, una traza de Sentry, y un fix de seis líneas que desbloqueó el lanzamiento.

29 min May 19, 2026
debloclaude-opus-4.7claude-codeincident +19
Thales & Claude deblo

Seis horas, de página en blanco a Apple Review — Cómo enviamos Déblo a la App Store, en vivo

Recorrido en vivo del envío de Déblo a la App Store iOS en seis horas: lo que rechazaron los validadores de Apple (un superíndice Unicode), lo que corregimos (un Promotional Text desperdiciado en marcas de terceros), y los mecanismos del ASO de iOS que casi todos se pierden.

30 min May 13, 2026
debloclaude-opus-4.7claude-codeapp-store +16