2008-08-26 11 views
10

Ich habe es schwer gehabt, PyPys Übersetzung zu verstehen. Es scheint etwas absolut Revolutionäres zu sein, wenn ich einfach die Beschreibung lese, aber ich bin schwer bedrängt, eine gute Dokumentation zu finden, um tatsächlich einen realen Code in etwas wie LLVM zu übersetzen. Gibt es so etwas? In der offiziellen PyPy-Dokumentation wird nur die Funktionalität überflogen, anstatt alles zu liefern, was ich selbst ausprobieren kann.Wo kann ich mehr über die Übersetzungsfunktion von PyPy erfahren?

Antwort

5

Dieses Dokument scheint in ziemlich viel Detail zu gehen (und ich denke, dass eine vollständige Beschreibung für eine Stackoverflow Antwort außerhalb des Bereichs ist):

Die allgemeine Idee des Übersetzens von einer Sprache zur anderen ist nicht besonders revolutionär, aber es hat erst in letzter Zeit Popularität/Anwendbarkeit in "realen" Anwendungen gewonnen. GWT tut dies mit Java (Erzeugung von Javascript) und es gibt eine Bibliothek für so gut Haskell in verschiedene andere Sprachen zu übersetzen (genannt YHC)

+1

Link ist tot (PyPy verschoben). Ist das das gleiche Dokument? http://pypy.readthedocs.org/en/latest/translation.html – leewz

+0

@leewangzhong Es ist wahrscheinlich, aber ich bin mir nicht sicher, wie der ursprüngliche Link zu diesem Zeitpunkt aussah. – rcreswick

+0

Oh ja, wir haben Wege, das herauszufinden. https://web.archive.org/web/20111227090444/http://codespeak.net/pypy/dist/pypy/doc/translation.html. Lohnt sich ein Update zu Ihrer Antwort? – leewz

2

Suchen Sie nach Python-spezifischen Übersetzung, oder nur die allgemeine "wie kompilieren Sie einige Code zu Bytecode"? Wenn Letzteres der Fall ist, überprüfen Sie the LLVM tutorial. Ich finde besonders das zweite Kapitel interessant, das Ihnen beibringt, einen Compiler für Ihre eigene Sprache zu schreiben.

3

Wenn Sie einige von Hand auf Beispiele möchten, PyPy's Getting Started Dokument einen Abschnitt „betitelte das Ausprobieren Übersetzer".

3

PyPy-Übersetzer ist im Allgemeinen nicht für mehr öffentliche Verwendung gedacht. Wir verwenden es für die Übersetzung unserer eigenen Python-Interpreter (einschließlich JIT und GCs, beide in RPython geschrieben, diese eingeschränkte Teilmenge von Python). Die Idee ist, dass Sie mit einem guten JIT und GC sogar beschleunigen können, ohne die Übersetzungs-Toolchain von PyPy zu kennen oder zu verwenden (und noch wichtiger, ohne sich auf RPython zu beschränken).

Cheers, Fijal

1

Es ist wie etwas aus einfach das Lesen der Beschreibung absolut revolutionär aussieht,

Soweit ich weiß, ist PyPy Roman in dem Sinne, dass es das erste System ausdrücklich entworfen für Implementierung Sprachen. Andere Werkzeuge existieren, um mit einem Großteil des Front-Ends zu helfen, wie zum Beispiel Parser-Generatoren, oder für das eigentliche Back-End, wie zum Beispiel Codegenerierung, aber nicht viel existierte, um die zwei zu verbinden.

Verwandte Themen