Wie man einen Python-Interpreter in Python bauen kann

Gute Links und Tutorials könnt ihr hier posten.
Antworten
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

Neulich habe ich gezeigt, wie ein Python-Interpreter in Java aussehen könnte, der entweder als rekursiver AST-Interpreter für einen als Java-Objekte vorliegenden abstrakten Syntaxbaum (AST) oder als virtuelle Maschine für einen aus dem abstrakten Syntaxbaum abgeleiteten Maschinencode realisiert ist.

Heute möchte ich zeigen, wie man ein Python-Programm in einen AST übersetzen kann. Dies mache ich in Python. Dann kann sich das Programm selbst in einen AST übersetzen und wenn ich aus dem AST -- ebenfalls in Python -- einen Maschinencode erzeuge, brauche ich "nur noch" einen Interpreter für die virtuelle Maschine in der Zielsprache (z.B. Java) und habe dann einen vollständigen Python-Interpreter.

So der Plan.

Ich habe den Text die letzten Tage in Markdown geschrieben. Mangels eines automatischen Übersetzers von Markdown in BBCode und auf Grund meines Unwillens, das manuell zu machen, findet ihr den vollständigen Text hier: https://gist.github.com/760937

Viel Spaß beim Lesen. Über Anmerkungen würde ich mich natürlich wieder freuen.

Stefan
DasIch
User
Beiträge: 2718
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

Definitiv sehr interessant und lehrreich, mich begeistert besonders wie einfach verständlich der Text geschrieben ist und dass er kein Wissen in dem Bereich vorraussetzt. Es fehlt nur noch die Funktion Beiträge von sma zu abonnieren (auch wenn ich den Gist erst in meinem Github Dashboard gesehen habe).
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

DasIch hat geschrieben:Definitiv sehr interessant und lehrreich, mich begeistert besonders wie einfach verständlich der Text geschrieben ist und dass er kein Wissen in dem Bereich voraussetzt.
Freut mich zu hören. Da habe ich mir auch viel Mühe gegeben :)

Ich habe vorhin noch ein bisschen den Scanner verbessert. Jetzt bleibt eigentlich nur noch das Problem, dass meine Idee, einfach Python-Klassen zu benutzen, prinzipiell nicht funktioniert. Da muss ich mir noch etwas überlegen. Dann sollte eigentlich der Interpreter sich selbst "hosten" können.

Stefan
Antworten