Reguläre Ausdrücke, und warum sie mich wahnsinnig machen!

phpinfo

Mitglied
Ausgangssituation: VB6 Quellcode
Ziel: Alle Kommentare entfernen
Mittel: Perl kompatible Regex Engine
Aktueller Gemütszustand des Entwicklers: Kurz vorm Ausflippen!

Da ich davon ausgehe, dass nicht jeder dieses nostalgische Visual Basic kennt; ich programmiere ja auch lieber in Objetive-C ;); hier ein paar Fakten zu VB6.

Kommentare in VB
Möglichkeit 1: Verwenden des Schlüsselworts rem.
Möglichkeit 2: Verwendung der Gänsekeule '.

Für beide Möglichkeiten gilt, dass der Kommentar ab erster Stelle des Auftretens bis zum Ende der Zeile geht und nicht wieder aufgehoben werden kann.

Also ähnlich einem // in c oder java oder den meisten anderen normalen Programmiersprachen.

Ein Konstrukt wie /* Kommentar */ gibt es glücklicherweise nicht.

Strings in VB
Beginnen mit und enden auch mit .

Escape-Sequenzen
Um innerhalb eines Strings in VB ein verwenden zu können, kann es mittels doppelten Anführungszeichen „“ escaped werden.

Zeilenfortsetzungszeichenfolge (jetzt wird’s übel)
In VB gibt es kein Zeichen für ein Zeilenende. Somit kann je physikalischer Zeile immer nur ein Befehl stehen. Das kann man zwar umgehen, ist aber zum Parsen der Kommentare uninteressant.

Da Funktionsbeschreibungen, Aufrufe oder ähnliches aber auch mal extrem lang werden können, und man sie daher in einer Zeile schreiben müsste, kam irgendjemand mal auf die wahnsinnig dumme Idee, ein Zeilenfortsetzungszeichen zu erfinden. Steht am Ende einer Zeile ein Unterstich _, gehört die darauf folgende Zeile automatisch zur darüber stehenden.

Bei einem Kommentar mit rem ist dies nicht möglich, bei einem Kommentar mit ' dummerweise schon.

Beispielcode
Code:
' Ich bin ein Kommentar und bin einfach zu finden
rem Ich bin auch ein Kommenar und bin einfach zu finden.

debug.print „Ich bin ein normaler String“ ' Und ich bin ein Kommentar
debug.print „Ich bin ein normaler String“ rem Und ich bin ein Kommenta

debug.print „Ich bin ein String „“ mit Escapezeichen“ ' Ich bin ein Kommentar

debug.print „Lustiger wird „“ weil ich ' mehrere „“ rem sachen enthalte“ ' ich bin ein doof zu parsender Kommentar „ ' rem blablalba _
ACHTUNG, auf Grund des _ am ende der oberen Zeile „bin“ ich auch noch ein Kommentar

Mir stellt sich die Frage: Sterben Menschen, die sich mit Regex beschäftigen, jünger?
By the way: Hat wer ne Lösung für das Problem? ;)
 
Zuletzt bearbeitet:
Zurück