Kann jemand mir eine hilfreiche Programmiersprache vorschlagen, die verwendet werden kann, um ein Tool zu erstellen, das das angegebene C-Programm analysiert und einen TXT-Bericht oder HTML-Bericht mit Informationen darüber generiert das angegebene Programm (Funktionsliste, Variablenliste usw.). Das Programm, das ich bauen möchte, ist ähnlich wie Doxygen, aber ich möchte es für meinen persönlichen Gebrauch.Welche Sprache ist nützlich, um einen Bericht für ein gültiges C-Programm zu erstellen?
Antwort
Sowohl Python als auch Perl verfügen über ausgezeichnete Funktionen zur Zeichenfolgenverarbeitung.
Ich würde vorschlagen, etwas wie Ctags verwenden, um das Programm zu analysieren, und erstellen Sie einfach ein Skript zum Lesen der Ctags-Datei und Ausgabe in txt/html.
Das von Ctags verwendete Dateiformat ist gut definiert, so dass andere Programme es lesen können. Weitere Informationen zu den Ctags selbst und der verwendeten Datei finden Sie unter http://ctags.sourceforge.net.
In Skriptsprachen suchen. Ich würde Python oder Perl empfehlen.
ctags, vielleicht?
Ctags erzeugt eine Index- (oder Tag-) Datei von Sprachobjekten, die in Quelldateien enthalten sind und die es ermöglichen, diese Elemente schnell und einfach mit einem Texteditor oder einem anderen Dienstprogramm zu finden. Ein Tag kennzeichnet ein Sprachobjekt, für das ein Indexeintrag verfügbar ist (oder alternativ der Indexeintrag, der für dieses Objekt erstellt wurde).
Wenn es eine Programmiersprache ist, dann möchte ich etwas sagen, das für die String-Verarbeitungsleistung bekannt ist, also würde das Perl bedeuten.
Allerdings kann die Aufgabe, die Sie benötigen, ziemlich kompliziert sein, da Sie die Sprache "kennen" müssen. Sie müssen also die gleichen Schritte wie der Compiler machen, indem Sie die Sprache lexikalisch und grammatikalisch analysieren (think flex, think yacc), um wirklich zu wissen, welche Bedeutung diese Saiten 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
Haskell hat ein relativ neues Sprache-c Projekt http://www.sivity.net/projects/language.c, die die Analyse von C-Code ermöglicht .
Wenn Sie mit Haskell vertraut sind, dann könnte es einen Blick wert sein. Selbst wenn Sie es nicht sind, könnte es interessant sein, es zu versuchen.
Sie eine große Dose Würmer öffnen, ist dies nicht eine effektive Nutzung Ihrer Zeit, bla bla bla usw.
zu einer Antwort bewegen auf, wenn Sie über irgendetwas über trivial sprechen Analyse und Sie brauchen Genauigkeit, müssen Sie den C-Quellcode analysieren. Sie können dies in jeder Sprache tun, aber Sie werden Ihren Parser mit hoher Wahrscheinlichkeit aus einer höheren Grammatik generieren wollen. Dafür gibt es eine Reihe von Tools. Ein moderner und besonders leistungsfähiger Parser-Generator ist ANTLR; Es gibt eine Reihe von ANTLR-Grammatiken für C, einschließlich einfacher zu verwendender Untergruppen.
Lex/yacc sind für Bau Parser geeignet.
pycparser ist ein vollständiger Parser für ANSI C89/C90 in reinem Python geschrieben. Es ist weit verbreitet, um C-Quellcode für verschiedene Bedürfnisse zu analysieren. Es enthält einen Beispielcode, z. B. alle Funktionsdefinitionen in Dateien usw.
- 1. Gibt es ein Tool, das einen Bericht für ein gültiges C-Programm erzeugen kann
- 2. ist WCF nützlich, um einen Client zu erstellen, der einen Nicht-WCF-Webdienst verwendet?
- 3. SQL-Abfrage, um einen Bericht der gespielten Matches zu erstellen
- 4. Welche Sprache ist ideal für Robotik
- 5. Welche Sprache
- 6. Wofür ist Clojure nützlich?
- 7. Ist es möglich, ein Inhaltsverzeichnis mit Seitenzahlen für einen RDLC-Bericht zu erstellen?
- 8. Welche Sprache (n) werden verwendet, um die Google-Software für selbstfahrende Autos zu erstellen?
- 9. Wofür ist ein Tupel nützlich?
- 10. Welche Bibliotheken wären nützlich, um einen kleinen Sprachinterpreter in C zu implementieren?
- 11. Ist ein gültiges CSS erforderlich?
- 12. Welche "Werkzeuge" werden benötigt, um ein soziales Browserspiel zu erstellen?
- 13. Mehrere Datensatzquellen für einen Bericht
- 14. Welche Sprache ist dieses Javascript?
- 15. Wann ist ein ConcurrentSkipListSet nützlich?
- 16. Welche Rolle wird benötigt, um ein iOS-Verteilungszertifikat zu erstellen?
- 17. Welche aspektorientierte Sprache ist ein guter Einstieg für einen C++ - Programmierer?
- 18. Was ist Control.Applicative.Lift nützlich für?
- 19. Machen Sie Zeile zu Spalte, um Bericht zu erstellen
- 20. Ist es nützlich, Zeiger auf dem Heap zu erstellen?
- 21. Welche Programmiersprache benötigt, um ein Firefox-Plugin zu erstellen?
- 22. Welche Art von Software verwenden Sie, um Diagramm für Ihre Präsentation und Bericht zu zeichnen?
- 23. Welche Sprache muss ich für ein Pidgin-Plugin verwenden?
- 24. Was ist eine gute funktionale Sprache, um einen Webservice zu erstellen?
- 25. Ist es möglich, ein gültiges SSL-Zertifikat zu widerrufen
- 26. Ist Text-zu-Sprache für Tagalog verfügbar?
- 27. Was ist die BlockingCollection.TakeFromAny Methode nützlich für
- 28. Entziffern, welche Sprache oder Syntax das ist
- 29. Ist yyyy ein gültiges Format für DateTime C#
- 30. Ist ein gültiges Zeichen in XML?