Die Programmiersprache REBOL enthält ein wichtiges Konzept. Das der Dialekte. Mit einem Dialekt kann der Programmierer beginnen, Geschäftsregeln zu schreiben.
Das Spannendste an REBOL sind seine Dialekte. Das bedeutet nicht, dass sich die Programmiersprache je nach dem Teil der Welt, in dem sie verwendet wird, ändert.
Stattdessen bedeutet es, dass der Programmierer einen projekt- oder problemspezifischen Satz von Grammatikregeln erstellen kann, der Datenblöcke verarbeiten kann. REBOL (siehe Kurze Einführung in die REBOL-Programmierung) kann dann die Daten anhand der Grammatikregeln analysieren. Das macht REBOL zur perfekten Sprache für die Erstellung von Geschäftsregeln.
Erstellen eines sehr einfachen REBOL-Dialekts
Ein REBOL-Dialekt besteht aus:
einen Block von Anweisungen
ein Block mit Grammatikregeln
die Parse-Methode, die die Grammatikregeln auf den Block von Anweisungen anwendet
Glücklicherweise kann der Programmierer jeden dieser Schritte sehr schnell durchführen. Das setzt natürlich voraus, dass er die zu modellierenden Regeln gut versteht.
Erstellen eines REBOL-Datenblocks
Ein REBOL-Datenblock ist einfach eine Anweisung, die die zu verwendenden Daten definiert. Betrachten wir zum Beispiel den Block:
Töchter: [
[Name “Mary-Jane” Alter 18 got-home 22:30:00]
[Name “Joleene” Alter 21 got-home 24:30:00]
]
Hier ist die Geschäftsregel einfach: Wer pünktlich nach Hause kommt, darf wieder raus; wer zu spät nach Hause kommt, bekommt Hausarrest. Der nächste Schritt besteht also darin, die Grammatikregeln zu erstellen.
REBOL-Grammatikregeln erstellen
Zunächst müssen alle erforderlichen Variablen gesetzt werden:
Heimatzeit-Regel: [
einige [
[‘name [set who string!]]
|[‘got-home [aktuelle Zeit einstellen!]]
|[‘age opt [set age integer!]]
]
Es gibt einige Punkte, die in diesem Kodex zu beachten sind:
Das Schlüsselwort “some” impliziert, dass eine oder mehrere Übereinstimmungen vorgenommen werden sollen. Neben “some” können auch die folgenden Begriffe verwendet werden:
keine – keine Treffer zu erzielen
any – keine oder mehrere Übereinstimmungen sind zu machen
Bestimmte Wörter werden durch die Verwendung eines einfachen Anführungszeichens am Anfang des Wortes gefunden. Zum Beispiel passt ‘name’ auf das Wort “name”, ‘got-home’ auf die Wörter “got-home”. Dabei gibt es eine wichtige Unterscheidung:
“got – home” bedeutet, dass die Variable “home” von der Variable “got” abgezogen wird.
“got-home” ist ein einzelner Variablenname
Datentypen werden durch das Ausrufezeichen am Ende des Wortes abgeglichen. Zum Beispiel wird “string!” mit allen String-Typen übereinstimmen, “time!” mit “time”, usw.
alternative Übereinstimmungen werden durch die Verwendung von |
optionale Übereinstimmungen werden durch die Verwendung des Schlüsselworts opt definiert
Anschließend kann die Geschäftsregel für den Grammatikblock erstellt werden:
(entweder aktuell <= 22:30:00
[(print [wer “wieder raus darf”])]
[(print [who “is grounded”])]
)
]
REBOL hat keine if..then..else-Anweisung. Stattdessen verwendet es entweder in der Form:
(entweder
[wahre Aussage]
[Falsche Aussage]
)
Jetzt ist der Dialekt einsatzbereit.
REBOL-Parsing
Der Zugriff auf den REBOL-Dialekt erfolgt über das Schlüsselwort parse. Die Technik besteht darin, den Datenblock schrittweise zu durchlaufen und die Grammatikregeln auf jeden Teilblock anzuwenden:
foreach Tochter Töchter [parse Tochter Heimatzeit-Regel]
Und das ist das Endergebnis:
Mary-Jane darf wieder raus
Joleene ist geerdet
Natürlich handelt es sich hier um eine sehr einfache Geschäftsregel (schließlich wird sich Joleene wahrscheinlich darüber beschweren, dass sie zur gleichen Zeit wie ihre jüngere Schwester kommen muss), aber sie zeigt, wie einfach es ist, einen REBOL-Dialekt zu erstellen. In sehr kurzer Zeit kann ein Programmierer umfangreiche und komplizierte Geschäftsregeln erstellen, die auf alle relevanten Daten angewendet werden können.