2010-03-04 1 views
8

Qualcuno sa di un modulo Python per analizzare una stringa di commento C++ di stile doxygen? Voglio dire una stringa di questo tipo (semplice esempio):Analizzatore di stringhe di commenti Doxygen C++ in python?

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

e vorrei estrarre la breve, la descrizione lunga, i parametri, il valore di ritorno ecc Attualmente sto facendo questo utilizzando metodi delle stringhe e regolare espressioni ma la mia soluzione non è molto robusta. In alternativa qualcuno può consigliare un lib di parser python facile da usare che posso impostare rapidamente?

Grazie in anticipo

risposta

4

Potreste essere in grado di impostare qualcosa usando il modulo SimpleParse, ma questo richiede la creazione di una grammatica EBNF che potrebbe essere più investimenti di quello che interessa.

Il ponte Sfinge/Doxygen (Breathe) utilizza il output xml di Doxygen e agisce invece su quello. Forse un approccio simile potrebbe funzionare qui: esegui Doxygen per estrarre documenti formattati in xml e poi sfruttare parte del codice da Breathe per ottenere i dati richiesti.

1

Si dovrebbe dare un'occhiata a come doxygen è implementato per vedere come gestisce l'analisi. Dubito fortemente che usi regex.

+1

L'ho fatto, e questa era in realtà la motivazione per questa domanda. Utilizza lex e un file sorgente grande 179kb per generare un lexer. Sto cercando una soluzione più semplice qui (quindi la mia domanda aggiuntiva su una semplice lib parser python). – Sebastian