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:

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]?