Welche Sprache nützlich ist, einen Bericht für ein gültiges C-Programm zu erstellen [geschlossen]

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

  •  01-07-2019
  •  | 
  •  

Frage

Kann mir jemand eine hilfreiche Programmiersprache vorschlagen, die verwendet werden können, ein Werkzeug zu schaffen, das das gegebene C-Programm analysiert und einen Bericht txt oder html Bericht erzeugen, die Informationen über das gegebene Programm (Funktionsliste, Variablenliste usw.). Das Programm, das ich aufbauen wollen, ist ähnlich wie doxygen, aber ich will es für den persönlichen Gebrauch.

War es hilfreich?

Lösung

Sowohl Python und Perl haben hervorragende String Verarbeitungsfähigkeiten.

Ich würde vorschlagen, so etwas wie ctags mit dem Programm zu analysieren, und erstellen Sie einfach ein Skript die ctags-Datei und Ausgabe in txt / html zu lesen.

Das Dateiformat von ctags verwendet wird, ist gut definiert, so dass andere Programme, die sie lesen können. Siehe http://ctags.sourceforge.net für weitere Informationen über ctags selbst und die Datei verwendet es.

Andere Tipps

ctags vielleicht?

  

Ctags erzeugt ein Index (oder Tag) Dateiobjekte der Sprache in den Quelldateien gefunden, die diese Elemente können schnell und einfach von einem Texteditor oder einem anderen Dienstprogramm befindet. Ein Tag bedeutet ein Sprachobjekt, für die ein Index-Eintrag vorhanden ist (oder alternativ, der Index-Eintrag für das Objekt erzeugt).

Sie sind eine große Dose Würmer öffnen, ist dies nicht eine effektive Nutzung Ihrer Zeit, bla bla bla, etc.

Der Umzug in eine Antwort auf, wenn Sie etwas über triviale Analyse reden und Sie Genauigkeit benötigen, müssen Sie den C-Quellcode analysieren. Sie können, dass in jeder Sprache zu tun, aber Sie wollen mit ziemlicher Sicherheit Ihre Parser von einer High-Level-Grammatik zu erzeugen. Es gibt eine Reihe von Tools dafür. Ein moderner und besonders leistungsfähiger Parser-Generator ist ANTLR ; gibt es eine Reihe von ANTLR Grammatiken für C, einschließlich einfacher zu arbeits mit Teilmengen.

Schauen Sie in Skriptsprachen. Ich würde empfehlen, Python oder Perl.

Haskell hat eine relativ neue Sprache-c Projekt http://www.sivity.net/ Projekte / language.c , die die Analyse von C-Code ermöglicht.

Wenn Sie mit Haskell vertraut sind, dann könnte es einen Blick wert sein. Auch wenn Sie nicht sind, könnte es interessant sein, einen gehen zu müssen.

Wenn es eine Programmiersprache Sie wollen, dann würde ich etwas sagen, die für String Verarbeitungsleistung bekannt ist, so dass Perl bedeuten würde.

Allerdings ist die Aufgabe, die Sie kann ziemlich kompliziert sein erfordern, da Sie müssen die Sprache zu ‚wissen‘, so dass Sie die gleichen Schritte der Compiler tut folgen würde erfordern, wobei lexikalische und grammatikalische Analysen über die Sprache (man denke flex, denken yacc) um ‚wissen‘, um wirklich was bedeutet, diese Strings haben.

Vielleicht ist der beste Ausgangspunkt ist es, einen Blick auf doxygen zu nehmen und versuchen, so viel von der Arbeit dort wie möglich getan wieder verwendet

Lex / yacc sind geeignet für Gebäude-Parser.

pycparser ist ein kompletter Parser für ANSI C89 / C90 in reinem Python geschrieben. Es wird weithin zu analysieren C-Quellcode für verschiedene Bedürfnisse verwendet. Es kommt mit einigem Beispiel-Code, wie zum Beispiel das alle Funktionsdefinitionen in Dateien, etc.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top