2009-12-30 25 views
9

Wir haben ein älteres C++ - Tool, das automatisch Python-Code generiert. Ich habe heute versucht, durch das C++ - Quelltextwerkzeug zu schlüpfen und wollte ziemlich selbst schießen. Die Sache ist, was ich tun möchte, ist die Quelle zu bereinigen, die durch das Werkzeug geschaffen wird und die Klassen zu unserem internen Dokumentationssystem zu verbinden, indem sphinx Tags hinzugefügt werden.Python-Code in Python analysieren?

Nun, was ich mich wundere, gibt es eine Art wunderbares Werkzeug zum Parsen von Python-Code in Python?

Es gibt eine Menge Sachen wie diese:

foo._methods_.append() 

Snip 500 lines 

foo._methods_.append() 

Anregungen?

Grundsätzlich habe ich eine funktionale, aber wahnsinnig chaotisch Code-Struktur, ich möchte im Grunde bestimmte Stücke extrahieren, sie in ihre eigenen Dateien verschieben. Und reinigt all die verschiedenen Dinge, die erschaffen werden.

Ich sah Quickyl auf Parser und AST, aber ich kann keine echten Beispiele dafür finden.

Antwort

9

Sie können Python-Code zum Parsen einzelner Token unter Verwendung des Moduls in Token konvertieren. z.B. Script to remove Python comments/docstrings

oder können Sie verwenden, um die parser Modul

oder verwenden ast Modul

+0

@TankorSmash danke, feste Links. –

3

Je nach Bedarf können Sie auch wollen die 2to3 Bibliothek überprüfen. Es wurde geschrieben, um die Konvertierung von Python 2.x-Anwendungen nach Python 3.0 automatisch zu erleichtern. Daher ist es der Hauptanwendungsfall, eine Python-Quelldatei zu übernehmen, einige Transformationen daran durchzuführen und dann die Ergebnisquelldatei auszuspucken.

Ein Vorteil, den lib2to3 gegenüber dem ast-Modul hat, ist, dass ast Leerzeichen und Kommentare nicht erhält, während lib2to3 dies tut. Wenn Sie bereits mit automatisch generiertem Code arbeiten, ist dies für Sie kein Problem.

1

Probieren Sie eine der Python doc-generierenden Dienstprogramme aus, um zu sehen, ob dies Ihnen bei Ihrem Gesamtproblem helfen könnte. Ich habe epydoc mit großem Erfolg benutzt.

Oder, wenn Sie Ihren Chef mit $ 200 trennen können, kaufen Sie eine Kopie von Enterprise Architect von SparxSystems. Es wird Ihren Python-Code zurückentwickeln, ein Klassendiagramm generieren und Ihnen erlauben, auf das Klassendiagramm zu klicken und den zugrunde liegenden Code zu sehen. Funktioniert neben Python für viele andere Sprachen und bietet ein hervorragendes Design- und Dokumentationsprogramm. (Es gibt eine $ 99-Version, aber die Code-Import-Funktion ist nicht enthalten.)

Verwandte Themen