Thread Progress 4GL: Beautifier, Regex (2 answers)
Opened by TEngelke at 2007-08-28 17:03

TEngelke
 2007-08-28 17:03
#98776 #98776
User since
2007-08-28
1 Artikel
BenutzerIn
[default_avatar]
Hallo!

Ich programmiere in der Firma in einer Sprache namens Progress Provision (ABL/4GL), einer High-Level-Datenbanksprache. Da es aufgrund der geringen Verbreitung der Sprache keine große Community gibt, sind wir bei Problemen und der Suche nach hilfreichen Tools oft auf uns selbst gestellt.

Für viele bekannte Sprachen gibt es sogenannte Code-Beautifier; Programme, die den Code korrekt und fein einrücken und formatieren. Eine der bekanntesten Funktionen ist die in Eclipse eingebaute Formatierung (Shift+Ctrl+F), die sich ja auch extensiv über die Konfiguration konfigurieren läßt.

Jetzt wollte ich versuchen, einen ersteinmal relativ simplen Beautifier für Progress-Code zu erzeugen, stoße dabei aber auf einige Probleme. Zwar halte ich alle Probleme für lösbar, aber meine erdachten Lösungen erscheinen mir alle sehr kompliziert bzw. wenig elegant. Vielleicht gibt es bessere Lösungen, und vielleicht kommt ihr auf die Eine oder Andere.

Der Hauptteil der Probleme betrifft Kommentare. Progress unterstützt verschachtelte Kommentare, also die Zeile

Code: (dl )
define variable abc as character. /* Dies ist ein Test /* */


ist am Ende weiterhin im äußeren Kommentar, also das "*/" am Ende schließt nicht alle offenen Kommentare ab.

Gibt es eine clevere Möglichkeit um folgende Probleme herum (jeweils eine Codezeile):

Code: (dl )
CODE /* KOMMENTAR /* KOMMENTAR2 */


In diesem Falle kann ein einfacher regulärer Ausdruck, welcher auf das Vorhandensein des öffnenden Kommentars und danach auf das Vorhandensein des schließenden Kommentars prüft, nicht ausreichend sein, da dann Kommentaranfänge und Enden übersprungen werden würden.

Code: (dl )
KOMMENTAR */ CODE /* KOMMENTAR2


In diesem Falle wollte ich überprüfen, ob ein Kommentaranfang und ein Kommentarende in der Zeile stehen. Leider funktioniert dies nicht für den Fall, das das Kommentarende vor dem neuen Kommentaranfang kommt.

Ich bin mir nicht sicher, ob ich mein "Problem" überhaupt verdeutlicht habe. Bitte fragt, wenn etwas nicht klar ist.

Vielen Dank,

Thomas

View full thread Progress 4GL: Beautifier, Regex