Ich habe eine riesige C-Datei (~ 100k Zeilen), die ich in der Lage sein muss zu analysieren. Hauptsächlich muss ich in der Lage sein, Details über einzelne Felder jeder Struktur (wie Feldname und Typ für jedes Feld in der Struktur) aus seiner Definition zu erhalten. Gibt es eine gute (Open Source, die ich in meinem Code verwenden kann), um dies bereits zu tun? Oder sollte ich meinen eigenen Parser dafür schreiben? Wenn ich mein eigenes schreiben muss, kann mir jemand einen guten Start vorschlagen? Ich habe noch nie zuvor mit Python gearbeitet.Parsing C-Code mit Python
Dank
Können Sie ein Beispiel veröffentlichen? Müssen Sie einen C-Compiler testen (und unterstützen unions, structs-in-structs, typedefs, den Präprozessor usw.) oder einfach nur Daten aus einfachen Strukturen herausholen? Irgendetwas sagt mir, dass diese C-Datei JSON, CSV, eine Datenbank sein sollte oder ein anderes * data * -Format, keine 100k LOC C-Datei ... –
... und Sie haben wahrscheinlich auch noch keinen C-Parser geschrieben, Sie wollen das nicht selbst machen, C ist viel komplizierter als Sie denken, dass es ist: Makros, Präprozessor-Bedingungen, enthält, mehrdeutige Syntax, Hersteller-spezifische Syntax, Symboltabellenkonstruktion, ... Finden Sie einen vorhandenen C-Parser, der umfangreiche Validierung hatte und verwenden, auch wenn der C-Parser nicht ist Wenn Sie Python verwenden wollen, um die Ergebnisse zu verarbeiten, fein, aber verwechseln Sie Python nicht mit der Lösung ["Ich habe nie zuvor mit Python gearbeitet" ist kein gutes Zeichen, dass dieser Weg zum Erfolg führt.] –
... Ich schlage vor, Sie betrachten GCCXML, die einen C-Parser enthält und die Art exportiert von Daten, die Sie als XML möchten. –