PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [B] Kommentar Entferner



blackberry
13.09.2008, 05:34
Keine Ahnung ob das für irgend Jemanden von nutzen ist, aber vielleicht findet der ein oder andere da was interessantes drin.
Persönlich habe ich das geschrieben um aus sqlite3.c die Kommentare zu entfernen (ursprünglich 2.8 MB, danach 1.5 MB also 1.3 MB Kommentare... lol) um das ganze etwas lesbarer zu machen.

Das Programm entfernt (wie der Name schon sagt) alle /* */ und // Kommentare aus einer Eingabedatei. Mit einem optionalen zweiten Parameter kann der entkommentierte Quelltext als Datei gespeichert werden, ansonsten wird das Entkommentierte über STDOUT (also auf dem Bildschirm) ausgegeben.

http://nopaste.free-hack.com/index.php?id=8f7ea97b22


mfG. BlackBerry

-[RiDER]-
13.09.2008, 13:14
Hi :D

Die Umleitung von STDOUT in einen anderen Filedeskriptor (z.B. eine Datei) ließe sich auch z.B. in der BASH via uncomment inputfile 1> outputfile machen (Du könntest Deinen Kode also noch um einige Zeilen schmälern).

Und hast Du das Programm schonmal über seinen eigenen Quelltext laufen lassen?
Wenn ich richtig sehe, würde Zeile 18 fast vollständig entfernt werden und der Kode danach fehlerhaft sein.
Wie wäres noch mit einer kleinen Funktion, die dafür sorgt, dass nur außerhalb von Strings gesucht wird? :)

GreetZ RiDER :D :D :D

blackberry
14.09.2008, 01:11
-]Und hast Du das Programm schonmal über seinen eigenen Quelltext laufen lassen?
Wenn ich richtig sehe, würde Zeile 18 fast vollständig entfernt werden und der Kode danach fehlerhaft sein.

Wie ich schon oben gesagt habe: Ja.
Das ganze habe ich über den Sourcecode von SQLite3 laufen lassen (2.8 MB zu 1.5 MB geschrumpft) und es war danach immernoch voll einsatzfähig.


-]Wie wäres noch mit einer kleinen Funktion, die dafür sorgt, dass nur außerhalb von Strings gesucht wird? :)

Stimmt auch wieder, werde mich für Version 0.2 dann darum kümmern :)


-]Die Umleitung von STDOUT in einen anderen Filedeskriptor (z.B. eine Datei) ließe sich auch z.B. in der BASH via uncomment inputfile 1> outputfile machen (Du könntest Deinen Kode also noch um einige Zeilen schmälern).

Auch eine möglich Lösung aber ich habe das ja folgendermaßen gemacht:

FILE *out = (argc > 2) ? fopen(argv[2], "wb") : stdout;
Und dann eben noch 2 Zeilen für if (out == NULL) putError(...);
Finde ich schon gut so wie es ist und sooo viel mehr Arbeit hat das jetzt auch nicht gemacht ;)


mfG. BlackBerry

-[RiDER]-
14.09.2008, 15:21
-]Und hast Du das Programm schonmal über seinen eigenen Quelltext laufen lassen?
Wenn ich richtig sehe, würde Zeile 18 fast vollständig entfernt werden und der Kode danach fehlerhaft sein.

Wie ich schon oben gesagt habe: Ja.
Das ganze habe ich über den Sourcecode von SQLite3 laufen lassen (2.8 MB zu 1.5 MB geschrumpft) und es war danach immernoch voll einsatzfähig.
Hast Du Dir Zeile 18 überhaupt angesehen?

"//////////////////////////////////////\n\n");
Nach den ersten beiden Slashs wird der Rest der Zeile einfach gelöscht und der Compiler wird irgendwas a la "expected »"« before newline" oder sowas meckern.

GreetZ RiDER :D :D :D

blackberry
14.09.2008, 15:29
-]Hast Du Dir Zeile 18 überhaupt angesehen?

"//////////////////////////////////////\n\n");
Nach den ersten beiden Slashs wird der Rest der Zeile einfach gelöscht und der Compiler wird irgendwas a la "expected »"« before newline" oder sowas meckern.

Ja habe ich und wie gesagt, ich werde deinen Ratschlag mit "keine pseudo Kommentare in Strings entfernen" für v0.2 berücksichtigen (am besten ich setze mich jetzt mal dran)...

Aber da sonst wahrscheinlich nicht viele Kommentarähnliches in Strings packen funktioniert version 0.1 schonmal (wie gesagt sqlite3.c, 2.8 MB auf 1.5 MB und alles bleibt kompilierbar)


mfG. BlackBerry


EDIT:

Also hier version 0.2
http://nopaste.free-hack.com/index.php?id=2fd39ef413
und nochmals danke an -[RiDER]- für die Tipps :)