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
Wie man einen Python-Interpreter in Python bauen kann
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).
Freut mich zu hören. Da habe ich mir auch viel Mühe gegebenDasIch 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.
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