Informazioni sul servizio
TradottoHai bisogno di un interprete funzionante per il linguaggio di programmazione Monkey — il linguaggio educativo del libro "Scrivere un interprete in Go" e del suo seguito "Scrivere un compilatore in Go"? Assemblare l'intera pipeline da zero e estendere l'implementazione di riferimento con le capacità che gli autori hanno lasciato come esercizi.
Cosa otterrai:
— Un lexer scritto a mano che trasforma il codice sorgente in token, con tracciamento della posizione per messaggi di errore leggibili.
— Un parser Pratt (analisi top-down per precedenza degli operatori) che costruisce un AST tipizzato pulito.
— Un valutatore che attraversa l'albero con interi, booleani, stringhe, array, hash, funzioni di prima classe e chiusure.
— Un compilatore in bytecode e una macchina virtuale basata su stack per una vera velocità: tabella dei simboli, pool di costanti, gestione dei frame.
— Funzioni integrate, `let`/`if`/`return`, funzioni di ordine superiore e un REPL conveniente.
Estensioni su richiesta: numeri in virgola mobile, cicli `while`/`for`, operatori postfissi e composti, macro con quote/unquote, importazioni di moduli, esperimenti di raccolta dei rifiuti, valori di errore e funzioni della libreria standard integrate più ricche.
Ogni build viene fornita con un set completo di test basati su tabelle, una cronologia dei commit pulita e un README che ti guida attraverso ogni fase in modo da continuare a imparare direttamente dal codice. Posso farlo in Go o portare il design in un altro linguaggio host. Un'ottima opzione per studenti, insegnanti e chiunque abbia bisogno di un linguaggio piccolo ma completo per esperimenti.
Cosa otterrai:
— Un lexer scritto a mano che trasforma il codice sorgente in token, con tracciamento della posizione per messaggi di errore leggibili.
— Un parser Pratt (analisi top-down per precedenza degli operatori) che costruisce un AST tipizzato pulito.
— Un valutatore che attraversa l'albero con interi, booleani, stringhe, array, hash, funzioni di prima classe e chiusure.
— Un compilatore in bytecode e una macchina virtuale basata su stack per una vera velocità: tabella dei simboli, pool di costanti, gestione dei frame.
— Funzioni integrate, `let`/`if`/`return`, funzioni di ordine superiore e un REPL conveniente.
Estensioni su richiesta: numeri in virgola mobile, cicli `while`/`for`, operatori postfissi e composti, macro con quote/unquote, importazioni di moduli, esperimenti di raccolta dei rifiuti, valori di errore e funzioni della libreria standard integrate più ricche.
Ogni build viene fornita con un set completo di test basati su tabelle, una cronologia dei commit pulita e un README che ti guida attraverso ogni fase in modo da continuare a imparare direttamente dal codice. Posso farlo in Go o portare il design in un altro linguaggio host. Un'ottima opzione per studenti, insegnanti e chiunque abbia bisogno di un linguaggio piccolo ma completo per esperimenti.