HINWEIS: Diese Seiten sind veraltet. Bitte erwägen Sie, auf die Seiten des Nachfolgesystems DEViL zu wechseln.
Das VL-Eli System
Generierte Editoren
VREX
Der generierte VREX-Editor
Sprachkonstrukte
Elementare Konstrukte
- Zeichenkette
-

Matcht die angegebene Sequenz von Zeichen, in diesem Beispiel die
Zeichenkette "xyz".
- Zeichenintervall
-
,

Matcht ein Zeichen aus dem angegebenen Bereich. Die Grenzen des Bereichs
können wahlweise durch Zeichen oder Zeichencodes definiert werden.
- Vordefinierte Muster
-
,
,

Der Einfachheit halber gibt es einige vordefinierte Muster.
Sie matchen (1) ein beliebiges Zeichen, (2) das Zeichen für den Zeilenwechsel
bzw. (3) das Tab-Zeichen.
Verknüpfungen
- Sequenz
-

Matcht eine Zeichenkette, die sich so aufteilen lässt, dass die einzelnen
Teile die jeweiligen Untermuster matchen.
- Alternativen
-

Matcht eine Zeichenkette, die (mindestens) eines der angegebenen Alternativen
matcht.
- Wiederholung
-

Matcht eine Zeichenkette, die sich in n Teile aufteilen lässt,
wobei alle Teile das gegebene Untermuster matchen. Welche Werte für dieses
n erlaubt sind, lässt sich durch eine untere und eine obere Schranke
definieren. Als obere Schranke ist auch der Wert * erlaubt, der für
unendlich steht.
- Einschränkung
-

Matcht eine Zeichenkette, die das Basis-Muster matcht, aber
das unter "but not" angegebene Muster nicht matcht. Dieses Konstrukt
ist wesentlich allgemeiner als gewöhnliche reguläre Ausdrücke. Die
Übersetzung dort hin ist nur für den Sonderfall implementiert, bei dem
die untergeordneten Muster Zeichenmengen charakterisieren.
Generierung regulärer Ausdrücke
Die konstruierten Strukturen lassen sich in in "normale" reguläre Ausdrücke
übersetzen. Im Moment sind folgende Varianten realisiert:
- Such-Anweisungen für Emacs. Auf diese Weise kann man in Textdateien
nach Zeichenketten suchen, die zu dem angegebenen Muster passen.
- Zeichenmuster nach GLA-Syntax in Eli. GLA ist eine Sprache, durch die
Scanner für Sprachprozessoren spezifiziert werden.
- Gequotete reguläre Ausdrücke in Tcl-Syntax. Nützlich zum Programmieren.
Das folgende Beispiel verdeutlicht, dass tatsächlich
unterschiedliches generiert wird:
Visueller Ausdruck |
Generierter Code |
|
Eli-Ausdruck: "(" "x"* ")"
Tcl-Ausdruck: \\(x*\\)
Emacs-Kommando: (search-forward-regexp "(x*)")
|
Bei der Code-Generierung wurde darauf geachtet, dass "ansehnliche" reguläre
Ausdrücke erzeugt werden. Das bedeutet im Wesentlichen, dass Klammern
nur dann eingeführt werden, wenn sie wirklich notwendig sind.
Ein komplexes Beispiel
Das folgende Beispiel zeigt die Struktur von Fießkommazahlen in der Sprache C:
Hier ist der entsprechende reguläre Ausdruck, wie er in der Standard-Bibliothek von Eli
zu finden ist:
((([0-9]+\.[0-9]*|\.[0-9]+)((e|E)(\+|-)?[0-9]+)?) | ([0-9]+(e|E)(\+|-)?[0-9]+))[fFlL]?