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 Thales Gnimavo & 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 prompt decía que lo anunciara. El modelo no lo hizo. Así que lo hizo el worker: cerrar un silencio de 15 segundos en Déblo Voice

Déblo Voice se quedaba en silencio unos 15 segundos cada vez que una pregunta difícil activaba una búsqueda profunda. El prompt ya exigía un anuncio, pero el modelo de audio nativo emite la llamada a la función como su primer token. Además, el silencio tenía dos partes, la ejecución de la herramienta y la latencia de la respuesta, así que ningún prompt podía cerrarlo. Llevamos la garantía al worker de LiveKit: un anuncio pregrabado con la voz y el idioma de la sesión, y un suave sonido de tecleo mientras el agente piensa. Probado en producción el 16 de octubre de 2026: 14 y 17,5 segundos de silencio del lado del modelo, unos 0,4 segundos percibidos por el usuario.

13 min Oct 16, 2026
deblodeblo-voicevoice-aigemini-live +17
Thales & Claude zerosuite

El servidor que no dimos de baja: vaciar una máquina de producción en una noche, y cada número que comprobamos

Una noche, seis aplicaciones migradas fila por fila, tres copias de seguridad vacías, una sin destino y un servidor cuyo futuro cambió tres veces.

19 min Oct 2, 2026
caspclaude-codeclaude-opus-5.5infrastructure +10
Thales & Claude zerosuite

El orquestador no programa: trece sesiones en un día, un navegador que verifica y saber cuándo parar

Un día, una plataforma privada de un cliente, trece sesiones headless de Claude encadenadas por un orquestador que nunca escribe código. Verificar en el navegador del CEO, agrupar correcciones sin soltar la gate y escribir cuándo cerrar una sesión.

19 min Sep 30, 2026
caspclaude-codeclaude-opus-5.5multi-session +12