C-File Parsen und editieren

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
higginsa1
User
Beiträge: 11
Registriert: Freitag 16. Juni 2017, 07:24

Hallo, ich benötige ein Tipp.

Ich muss in einem C-Code den Anfang und das Ende einer Funktion bestimmen, den Anfang kann ich finden weil die Syntax bekannt ist, das Ende könnte ich mittels Klammern, "{", "}" zählen bestimmen. Wenn ich die Anfangs und Endzeile der Funktion kenne, muss ich bestimmte Kommentare finden finden und ändern, die Änderung betrifft dann auch die nächste Zeile.

Wie kann ich jetzt wie ein Pointer durch die C-Datei fliegen?

01 /* Funktionskopf */
02
03 void Func1
04 {
05 /* Kommentar A */
06 Befehl A
07 /* Kommentar B */
08 Befehl B
09 /* Kommentar C */
10 Befehl C
11 }

Ich muss nun die Funktion suchen und den Anfang (Zeile 03) und das Ende (Zeile 11) bestimmen. Dann muss ich wieder bei Anfang Funktion starten und die Kommentare untersuchen, wenn ich Kommentar B (Zeile 07) finde, dann muss ich den Kommentar und Befehl B ändern.

Muss ich das alles per readline machen oder gibt es da etwas schöneres?
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

Ich wuerde pyparsing oder treesitter probieren.
Benutzeravatar
snafu
User
Beiträge: 6870
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Evtl. ist auch ``pycparser`` einen Blick wert:
https://pypi.org/project/pycparser/
nezzcarth
User
Beiträge: 1764
Registriert: Samstag 16. April 2011, 12:47

Ich schlage antlr mit einer Grammatik für C vor:

https://github.com/antlr/antlr4

https://github.com/antlr/grammars-v4/tree/master/c

(Unterstützt auch Python als target)
higginsa1
User
Beiträge: 11
Registriert: Freitag 16. Juni 2017, 07:24

ok, danke werde ich mir mal ansehen
Antworten