2010-03-04 12 views
8

Kennt jemand ein Python-Modul, um eine C++ - Kommentarzeichenfolge im Doxygen-Stil zu analysieren? Ich meine, eine Zeichenfolge wie dieses (einfaches Beispiel):Doxygen C++ Kommentar-String-Parser in Python?

/** 
    * A constructor. 
    * A more elaborate description of the constructor. 
    * @param param1 test1 
    * @param param2 test2 
    */ 

und ich möchte die kurz extrahieren, die lange Beschreibung, die Parameter, den Rückgabewert usw. ich momentan dies mit String-Methoden zu tun habe und regelmäßig Ausdrücke, aber meine Lösung ist nicht sehr robust. Alternativ kann jemand eine einfach zu benutzende Python-Parser-Bibliothek empfehlen, die ich schnell einrichten kann?

Vielen Dank im Voraus

Antwort

4

Sie könnten in der Lage sein, etwas einzurichten mit dem SimpleParse Modul, aber dies erfordert eine EBNF Grammatik zu schaffen, die mehr Investitionen sein könnte, als Sie interessieren.

Die Sphinx/Doxygen Brücke (Breathe) verwendet die XML-Ausgabe von Doxygen und wirkt stattdessen auf diese. Vielleicht könnte ein ähnlicher Ansatz hier funktionieren - führen Sie Doxygen aus, um XML-formatierte Dokumente zu extrahieren, und nutzen Sie dann einen Teil des Codes von Breathe, um die benötigten Daten zu erhalten.

1

Sie sollten einen Blick auf, wie doxygen umgesetzt wird, um zu sehen, wie es das Parsen Griff. Ich bezweifle sehr, dass es Regex verwendet.

+1

Ich tat, und das war eigentlich die Motivation für diese Frage. Es verwendet Lex und eine 179kb große Quelldatei, um einen Lexer zu erzeugen. Ich suche hier eine einfachere Lösung (also meine zusätzliche Frage zu einer einfachen Python-Parser-Lib). – Sebastian