Quale linguaggio è utile per creare un report per un programma C valido [chiuso]

StackOverflow https://stackoverflow.com/questions/85230

  •  01-07-2019
  •  | 
  •  

Domanda

Qualcuno può suggerirmi un linguaggio di programmazione utile che può essere utilizzato per creare uno strumento che analizzerà il dato programma C e genererà un report txt o html contenente informazioni sul programma specificato (elenco di funzioni, elenco di variabili ecc.).Il programma che intendo creare è simile a doxygen ma lo voglio per uso personale.

È stato utile?

Soluzione

Sia Python che Perl hanno eccellenti capacità di elaborazione delle stringhe.

Suggerirei di utilizzare qualcosa come ctags per analizzare il programma e creare semplicemente uno script per leggere il file ctags e visualizzarlo in txt/html.

Il formato file utilizzato da ctags è ben definito in modo che altri programmi possano leggerlo.Vedere http://ctags.sourceforge.net per ulteriori informazioni su ctags stesso e sul file che utilizza.

Altri suggerimenti

ctag, Forse?

Ctags genera un file indice (o tag) di oggetti linguistici trovati nei file sorgente che consente a questi elementi di essere individuati rapidamente e facilmente da un editor di testo o altra utilità.Un tag indica un oggetto linguistico per il quale è disponibile una voce di indice (o, in alternativa, la voce di indice creata per quell'oggetto).

Stai aprendo un grosso vaso di fiori, questo non è un uso efficace del tuo tempo, blah blah blah, ecc.

Passando a una risposta, se stai parlando di qualcosa che va oltre l'analisi banale e hai bisogno di precisione, dovrai analizzare il codice sorgente C.Puoi farlo in qualsiasi lingua, ma quasi sicuramente vorrai generare il tuo parser da una grammatica di alto livello.Esistono numerosi strumenti per questo.Un generatore di parser moderno e particolarmente potente è ANTLR;esistono numerose grammatiche ANTLR per C, inclusi sottoinsiemi più facili da lavorare.

Esamina i linguaggi di scripting.Consiglierei Python o Perl.

Haskell ha un progetto relativamente recente in linguaggio c http://www.sivity.net/projects/lingual.c che consente l'analisi del codice C.

Se hai familiarità con Haskell, potrebbe valere la pena dargli un'occhiata.Anche se non lo sei, potrebbe essere interessante provarci.

Se si tratta di un linguaggio di programmazione che desideri, direi qualcosa che è noto per la potenza di elaborazione delle stringhe, quindi significherebbe perl.

Tuttavia, il compito richiesto può essere piuttosto complicato poiché è necessario "conoscere" la lingua, quindi è necessario seguire gli stessi passaggi eseguiti dal compilatore, ovvero analisi lessicali e grammaticali della lingua (think flex, think yacc) al fine di veramente "sapere" quale significato hanno quelle stringhe.

Forse il miglior punto di partenza è dare un'occhiata a doxygen e provare a riutilizzare quanto più possibile il lavoro svolto lì

Lex/yacc sono adatti per costruire parser.

pycparser è un parser completo per ANSI C89/C90 scritto in puro Python.Viene ampiamente utilizzato per analizzare il codice sorgente C per varie esigenze.Viene fornito con un codice di esempio, come l'elenco di tutte le definizioni di funzioni nei file, ecc.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top