Saltar al contenido
Volver al catálogo
Proyecto mini-compilerLenguajesExpertoPróximamente

Construye tu propio compilador

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.

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.

Idioma del temario

Las guías de las etapas se leen en este idioma. Solo aparecen los idiomas en los que este proyecto ya está traducido completo; el idioma de la interfaz no cambia.

De qué trata 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.

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ú.

Hoja de ruta

16 etapas repartidas en 4 fases. Cada etapa trae su guía y sus tests: avanzas cuando pasan.

  1. Fase 15 etapas

    El frontend

    Lexer, parser con precedencia y árbol de sintaxis del lenguaje.

  2. Fase 24 etapas

    Entender el programa

    Resolución de nombres, ámbitos, comprobación de tipos y errores útiles.

  3. Fase 34 etapas

    Generar bytecode

    Conjunto de instrucciones, constantes, saltos y compilación del árbol.

  4. Fase 43 etapas

    Ejecutarlo

    Máquina virtual de pila, marcos de llamada, funciones y optimizaciones.

Antes de empezar

Un compilador completo y su runtime: lexer, parser con precedencia de operadores, árbol de sintaxis, resolución de nombres y comprobación de tipos, generación de bytecode, una máquina virtual de pila con marcos de llamada, funciones de primera clase y un par de optimizaciones medibles.

  • lisp-interpreter
    Próximamente

    Construye tu propio intérprete de Lisp

    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.

    Avanzado11 etapas~16 hLenguajes
    análisis sintácticoASTclausuras+1

    Python · JavaScript · TypeScript

  • regex-engine
    Beta

    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.

    Avanzado8 etapas~11 hLenguajes
    autómatasanálisis sintácticoretroceso

    TypeScript · Python · Rust

  • json-parser
    Próximamente

    Construye tu propio parser de JSON

    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.

    Principiante7 etapas~6 hLenguajes
    tokenizadoranálisis sintácticorecursión

    TypeScript · Python · Go · Java