A Lisp interpreter
Tokenizer, parser, evaluator and closures. Discover how a language runs your code, step by step.
Python · JavaScript · TypeScript
De código fuente a bytecode ejecutable. Lexing, AST, análisis semántico, generación de código y una VM que lo corre.
Build it in your language
The tester treats your program as a black box: any language works. These are just the most convenient ones for this project.
Es el reto más largo del catálogo y el que más cosas junta: un lenguaje propio, con su compilador y su máquina virtual, construidos de principio a fin.
Pasarás del texto a los tokens, de los tokens a un árbol, del árbol a una representación con tipos comprobados, de ahí a bytecode y, finalmente, a una máquina de pila que lo ejecuta. Terminarás corriendo programas escritos en un lenguaje que has diseñado tú.
16 stages across 4 phases. Every stage comes with its guide and its tests: you move on when they pass.
Lexer, parser con precedencia y árbol de sintaxis del lenguaje.
Resolución de nombres, ámbitos, comprobación de tipos y errores útiles.
Conjunto de instrucciones, constantes, saltos y compilación del árbol.
Máquina virtual de pila, marcos de llamada, funciones y optimizaciones.
Tokenizer, parser, evaluator and closures. Discover how a language runs your code, step by step.
Python · JavaScript · TypeScript
Your first contact with lexers and grammars. Tokenize, build the tree and fail with useful errors.
TypeScript · Python · Go · Java
From the expression to the automaton. Backtracking, groups and character classes without your language's regex.
TypeScript · Python · Rust