Skip to content
Back to the catalog
Project lisp-interpreterLanguagesAdvancedBeta

Intérprete de Lisp

Tokenizer, parser, evaluador y closures. Descubre cómo un lenguaje ejecuta tu código, paso a paso.

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.

Guide language

The stage guides read in this language. Only languages this project is fully translated into show up here; the interface language does not change.

What this project is about

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.

Roadmap

11 stages across 4 phases. Every stage comes with its guide and its tests: you move on when they pass.

  1. Phase 13 stages

    Leer expresiones

    Tokenizador, lector de expresiones-S y representación de átomos y listas.

    1. 01Tokenizador
    2. 02Átomos y listas
    3. 03Errores del lector
  2. Phase 23 stages

    Evaluar

    Entornos, variables, aritmética, condicionales y formas especiales.

    1. 01Entornos y símbolos
    2. 02Aritmética y comparación
    3. 03Definiciones y condicionales
  3. Phase 33 stages

    Funciones y closures

    Lambdas, ámbito léxico, recursión y llamadas de cola optimizadas.

    1. 01Lambdas
    2. 02Closures y ámbito léxico
    3. 03Recursión de cola
  4. Phase 42 stages

    Código que escribe código

    Quote, macros, errores con traza y una pequeña librería.

    1. 01Quote y macros
    2. 02Trazas y biblioteca

Before you start

Un intérprete de un dialecto de Lisp: lector de expresiones-S, evaluador sobre entornos encadenados, funciones definidas por el usuario con closures, condicionales, recursión con optimización de llamada final, manejo de errores y macros que generan código.

  • json-parser
    Beta

    A JSON parser

    Your first contact with lexers and grammars. Tokenize, build the tree and fail with useful errors.

    Beginner7 stages~6 hLanguages
    tokenizerparsingrecursión

    TypeScript · Python · Go · Java

  • mini-compiler
    Beta

    A mini compiler to bytecode

    From source code to runnable bytecode. Lexing, AST, semantic analysis, code generation and a VM that runs it.

    Expert16 stages~30 hLanguages
    lexerastbytecode+1

    Rust · C++ · TypeScript

  • regex-engine
    Beta

    A regular expression engine

    From the expression to the automaton. Backtracking, groups and character classes without your language's regex.

    Advanced8 stages~11 hLanguages
    autómatasparsingbacktracking

    TypeScript · Python · Rust