Kommentare aus C-Datei entfernen

chriss_2oo4

Erfahrenes Mitglied
Hi,

ich bin gerade dabei einenen kleinen Parser zu schreiben der die Parameter eines Funktionsaufrufs analysiert


Ich gehe so vor:

1. entfernen aller Leerzeichen aus dem Quelltext
2. entfernen aller Kommentare
...

Zu 2. Ich ermittle die Position von // und schneide ab dieser Position, die Position des nächsten Zeilenumbruchs und schneide den string innerhalb von diesem bereich aus.
(Es ist auch möglich, dass der Kommentar in der letzten Zeile steht und somit kein \n vorhanden ist, dann wird einfach bis zum eof abgetrennt.

Funktioniert soweit auch ganz gut, bis ich heute auf folgendes Problem gestoßen bin,
func(a, "//b", c);

Bisher ist mir keine gute Lösung für dieses Problem eingefallen. Man könnte nun den Text durchlaufen und prüfen, ob man sich innerhalb eines Strings "" befindet, ist dies der Fall könnte man innerhalb von diesem Bereich nach // suchen und diese durch beispielsweise /'/ ersetzen.

Nun könnte man den Text wieder von vorne durchlaufen und wie gewohnt nach Kommentaren suchen. Zuletzt müsste der Text wieder durchlaufen werden und alle /'/ durch // ersetzt werden.

Ich finde diese Vorgehensweise umständlich und nicht gerade elegeant, hat vielleicht jemand einen besseren Tipp für mich?

Ich hab mir auch schon gedanken über Reguläre Ausdrücke gemacht, aber so auf die Schnelle sind die recht undurschaubar, aber wenn jemand ein Pattern aufstellen könnte und mir dieses kurz erläurern könnte wäre natürlich aus super.

Erstmal vielen Dank fürs lesen

mfg Chriss
 
Zurück