Über den Service
ÜbersetztBenötigen Sie einen funktionierenden Interpreter für die Monkey-Programmiersprache – die Bildungssprache aus dem Buch "Einen Interpreter in Go schreiben" und dessen Fortsetzung "Einen Compiler in Go schreiben"? Ich stelle die gesamte Pipeline von Grund auf neu zusammen und erweitere die Referenzimplementierung um die Funktionen, die die Autoren als Übungen hinterlassen haben.
Was Sie erhalten:
— Ein handgeschriebener Lexer, der Quellcode in Tokens umwandelt, mit Positionsverfolgung für lesbare Fehlermeldungen.
— Ein Pratt-Parser (Top-Down-Parsing nach Operatorpräzedenz), der einen sauberen typisierten AST erstellt.
— Ein Baum-Walk-Evaluator mit Ganzzahlen, Booleans, Strings, Arrays, Hashes, Funktionen erster Klasse und Closures.
— Ein Compiler zu Bytecode und einer stackbasierten virtuellen Maschine für echte Geschwindigkeit: Symboltabelle, Konstantenpool, Frame-Verwaltung.
— Eingebaute Funktionen, `let`/`if`/`return`, höherwertige Funktionen und ein praktisches REPL.
Erweiterungen auf Anfrage: Fließkommazahlen, `while`/`for`-Schleifen, Postfix- und zusammengesetzte Operatoren, Makros mit Quote/Unquote, Modulimporte, Experimente zur Müllsammlung, Fehlerwerte und reichhaltigere eingebaute Standardbibliotheksfunktionen.
Jeder Build kommt mit einem vollständigen Satz von tabellenbasierten Tests, einer sauberen Commit-Historie und einer README, die Sie durch jede Phase führt, damit Sie direkt aus dem Code lernen. Ich kann es in Go machen oder das Design in eine andere Hostsprache portieren. Eine großartige Option für Studenten, Lehrer und jeden, der eine kleine, aber voll funktionsfähige Sprache für Experimente benötigt.
Was Sie erhalten:
— Ein handgeschriebener Lexer, der Quellcode in Tokens umwandelt, mit Positionsverfolgung für lesbare Fehlermeldungen.
— Ein Pratt-Parser (Top-Down-Parsing nach Operatorpräzedenz), der einen sauberen typisierten AST erstellt.
— Ein Baum-Walk-Evaluator mit Ganzzahlen, Booleans, Strings, Arrays, Hashes, Funktionen erster Klasse und Closures.
— Ein Compiler zu Bytecode und einer stackbasierten virtuellen Maschine für echte Geschwindigkeit: Symboltabelle, Konstantenpool, Frame-Verwaltung.
— Eingebaute Funktionen, `let`/`if`/`return`, höherwertige Funktionen und ein praktisches REPL.
Erweiterungen auf Anfrage: Fließkommazahlen, `while`/`for`-Schleifen, Postfix- und zusammengesetzte Operatoren, Makros mit Quote/Unquote, Modulimporte, Experimente zur Müllsammlung, Fehlerwerte und reichhaltigere eingebaute Standardbibliotheksfunktionen.
Jeder Build kommt mit einem vollständigen Satz von tabellenbasierten Tests, einer sauberen Commit-Historie und einer README, die Sie durch jede Phase führt, damit Sie direkt aus dem Code lernen. Ich kann es in Go machen oder das Design in eine andere Hostsprache portieren. Eine großartige Option für Studenten, Lehrer und jeden, der eine kleine, aber voll funktionsfähige Sprache für Experimente benötigt.