Acerca del servicio
Traducido¿Necesitas un intérprete funcional para el lenguaje de programación Monkey, el lenguaje educativo del libro "Escribiendo un Intérprete en Go" y su secuela "Escribiendo un Compilador en Go"? Yo ensamblé toda la tubería desde cero y extendí la implementación de referencia con las capacidades que los autores dejaron como ejercicios.
Lo que obtendrás:
— Un lexer escrito a mano que convierte el código fuente en tokens, con seguimiento de posición para mensajes de error legibles.
— Un analizador Pratt (análisis de arriba hacia abajo por precedencia de operadores) que construye un AST tipado limpio.
— Un evaluador que recorre el árbol con enteros, booleanos, cadenas, arreglos, hashes, funciones de primera clase y cierres.
— Un compilador a bytecode y una máquina virtual basada en pila para velocidad real: tabla de símbolos, pool de constantes, manejo de marcos.
— Funciones integradas, `let`/`if`/`return`, funciones de orden superior y un REPL conveniente.
Extensiones a pedido: números de punto flotante, bucles `while`/`for`, operadores postfijos y compuestos, macros con comillas/descomillas, importaciones de módulos, experimentos de recolección de basura, valores de error y funciones de biblioteca estándar integradas más ricas.
Cada compilación viene con un conjunto completo de pruebas basadas en tablas, un historial de commits limpio y un README que te guía a través de cada etapa para que sigas aprendiendo directamente del código. Puedo hacerlo en Go o portar el diseño a otro lenguaje anfitrión. Una gran opción para estudiantes, profesores y cualquier persona que necesite un lenguaje pequeño pero completo para experimentos.
Lo que obtendrás:
— Un lexer escrito a mano que convierte el código fuente en tokens, con seguimiento de posición para mensajes de error legibles.
— Un analizador Pratt (análisis de arriba hacia abajo por precedencia de operadores) que construye un AST tipado limpio.
— Un evaluador que recorre el árbol con enteros, booleanos, cadenas, arreglos, hashes, funciones de primera clase y cierres.
— Un compilador a bytecode y una máquina virtual basada en pila para velocidad real: tabla de símbolos, pool de constantes, manejo de marcos.
— Funciones integradas, `let`/`if`/`return`, funciones de orden superior y un REPL conveniente.
Extensiones a pedido: números de punto flotante, bucles `while`/`for`, operadores postfijos y compuestos, macros con comillas/descomillas, importaciones de módulos, experimentos de recolección de basura, valores de error y funciones de biblioteca estándar integradas más ricas.
Cada compilación viene con un conjunto completo de pruebas basadas en tablas, un historial de commits limpio y un README que te guía a través de cada etapa para que sigas aprendiendo directamente del código. Puedo hacerlo en Go o portar el diseño a otro lenguaje anfitrión. Una gran opción para estudiantes, profesores y cualquier persona que necesite un lenguaje pequeño pero completo para experimentos.