Construye tu propio motor de expresiones regulares
Construye un motor de expresiones regulares desde cero. Convierte expresiones en autómatas con retroceso, grupos y clases de caracteres sin bibliotecas regex.
TypeScript · Python · Rust
Construye un intérprete de Lisp desde cero. Escribe un tokenizador, parser y evaluador, y añade clausuras para descubrir cómo un lenguaje ejecuta tu código.
Constrúyelo en tu lenguaje
El tester trata tu programa como una caja negra: sirve cualquier lenguaje. Estos son los más cómodos para este proyecto.
Proyecto en preparación: estamos completando y verificando el recorrido de implementación y sus pruebas. Las capacidades descritas son el objetivo del proyecto; todavía no está habilitado para comenzar.
Lisp se eligió por una razón: su sintaxis es tan mínima que el parser se quita de en medio en una tarde y puedes dedicar el resto del reto a lo interesante, que es la evaluación.
Construirás un intérprete completo: entornos, funciones, closures, recursión y macros. Al terminar entenderás qué hace tu lenguaje favorito entre que pulsas «ejecutar» y aparece el resultado.
11 etapas repartidas en 4 fases. Cada etapa trae su guía y sus tests: avanzas cuando pasan.
Tokenizador, lector de expresiones-S y representación de átomos y listas.
Entornos, variables, aritmética, condicionales y formas especiales.
Lambdas, ámbito léxico, recursión y llamadas de cola optimizadas.
Quote, macros, errores con traza y una pequeña librería.
Construye un motor de expresiones regulares desde cero. Convierte expresiones en autómatas con retroceso, grupos y clases de caracteres sin bibliotecas regex.
TypeScript · Python · Rust
Construye un parser de JSON desde cero. Tokeniza la entrada, analiza la gramática, crea un árbol sintáctico y reporta errores útiles para JSON inválido.
TypeScript · Python · Go · Java
Construye un compilador desde cero. Transforma código fuente en bytecode con análisis léxico, AST, análisis semántico, generación de código y una máquina virtual.
Rust · C++ · TypeScript