REBOL

REBOL (basierte Gegenstand-Sprache des Verhältnisausdrucks) ist eine Quer-Plattform-Datenaustausch-Sprache und ein Mehrparadigma dynamische Programmiersprache, die ursprünglich von Carl Sassenrath für Netzkommunikationen und verteilte Computerwissenschaft entworfen ist. Die Sprache und seine offizielle Durchführung, die eine frei wiederverteilbare Eigentumssoftware ist, werden von REBOL Technologies entwickelt. REBOL Technologies fordert auch den Namen REBOL als eine Handelsmarke.

Douglas Crockford von Berühmtheit von JavaScript hat REBOL als "eine modernere Sprache beschrieben, aber mit einigen sehr ähnlichen Ideen Zu lispeln, in dem es alles auf eine Darstellung von Daten gebaut wird, die dann als Programme" und als einer der JSON-Einflüsse rechtskräftig ist.

REBOL führt das Konzept von dialecting ein: Kleine, optimierte, bereichsspezifische Sprachen für den Code und die Daten, der auch das bemerkenswerteste Eigentum der Sprache gemäß seinem Entwerfer ist:

REBOL ist an Programm-Internetanwendungen (sowohl Kunde - als auch Server-Seite), Datenbankanwendungen, Dienstprogramme und Multimediaanwendungen gewöhnt gewesen.

Geschichte

Zuerst veröffentlicht 1997 wurde REBOL im Laufe einer 20-jährigen Periode von Carl Sassenrath, dem Architekten und primärem Entwickler von AmigaOS entworfen, der auf seiner Studie der denotational Semantik und Verwenden-Konzepte vom Programmiersprache-Lispeln, Hervor, Firmenzeichen, und Selbst gestützt ist.

REBOL Technologies wurde 1998 gegründet.

REBOL 2, der Dolmetscher, der der Kern von verlängerten Dolmetscher-Ausgaben geworden ist, wurde zuerst 1999 veröffentlicht.

REBOL/Command, der starke Verschlüsselung und ODBC Zugang hinzugefügt hat, wurde im September 2000 veröffentlicht.

REBOL/View wurde im April 2001 veröffentlicht, grafische geistige Anlagen auf der Kernsprache hinzufügend.

REBOL/IOS, eine ausziehbare mit REBOL gebaute Kollaborationsumgebung wurde im August 2001 veröffentlicht.

REBOL/SDK, eine Wahl von Kernen zur Verfügung stellend, gegen, sowie ein Vorverarbeiter zu binden, wurde im Dezember 2002 veröffentlicht.

REBOL 3, die neueste Version des REBOL Dolmetschers, ist zurzeit in der Entwicklung. Alpha-Versionen sind öffentlich seit dem Januar 2008 veröffentlicht worden.

Dialekte

REBOL Dialekte, jetzt populär als bereichsspezifische Sprachen (DSLs), sind zu einem spezifischen Zweck optimierte Mikrosprachen. Dialekte können verwendet werden, um Geschäftsregeln, grafische Benutzerschnittstellen oder Folgen von Schirmen während der Installation eines Programms zu definieren. Benutzer können ihre eigenen Dialekte definieren, jedes vorhandene REBOL Wort wiederverwendend und ihm eine spezifische Bedeutung in diesem Dialekt gebend. Dialekte werden durch Funktionen interpretiert, die REBOL Blöcke bearbeiten (oder Schnuren grammatisch analysieren) auf eine spezifische Weise.

Ein Beispiel der dialecting geistigen Anlagen von REBOL kann mit der Wortrückkehr gesehen werden. Im Datenaustausch ist Dialekt-Rückkehr gerade ein Wort, das nicht jede spezifische Bedeutung hat. In tun Dialekt, Rückkehr ist eine globale Variable, die sich auf einen heimischen Funktionsübergang bezieht, unterstützen einen Funktionsergebnis-Wert. Im Sehschnittstelle-Dialekt (VID) ist Rückkehr ein Schlüsselwort, das den Lay-Out-Motor veranlasst, eine Wagen-Rückkehr vorzutäuschen, den "Übergabe-Kugelschreiber" unten zum Anfang der folgenden Linie bewegend.

Ein REBOL Dolmetscher mit grafischen geistigen Anlagen muss verstehen und viele Dialekte interpretieren. Der Tisch verzeichnet unten die wichtigsten in der Größenordnung von der Bedeutung.

Syntax

REBOL Syntax ist freie Form, spezifische Positionierung nicht verlangend. Jedoch wird Einrückung empfohlen, die Struktur des Textes menschlichen Lesern besser zu befördern.

Syntaktische Eigenschaften von verschiedenen Dialekten können sich unterscheiden. Die gemeinsame Plattform für alle REBOL Dialekte ist der Datenaustausch-Dialekt; andere Dialekte werden daraus gewöhnlich abgeleitet. Zusätzlich dazu, die gemeinsame Plattform für alle Dialekte zu sein, wird der Datenaustausch-Dialekt direkt verwendet, um Daten und metadata zu vertreten, Datenstrukturen zu bevölkern, Daten über das Internet zu senden, und sie in der Datenlagerung zu sparen.

Im Gegensatz zu Programmiersprachen wie C besteht der Datenaustausch-Dialekt aus Behauptungen, Erklärungen, Ausdrücken oder Schlüsselwörtern nicht. Ein gültiger Datenaustausch-Dialekt-Textstrom ist eine Baumdatenstruktur, die aus Blöcken besteht (der Wurzelblock ist implizit, Subblöcke werden durch eckige Klammern abgegrenzt), parens (abgegrenzt durch runde Klammern), Schnuren (abgegrenzt durch Anführungszeichen oder lockige für Mehrlinienschnuren passende Klammern; Auslassungszeichen-Notation wird für nicht druckfähige Charaktere verwendet), URL-ADRESSEN, E-Mail-Adressen, Dateien, Pfade oder andere zerlegbare Werte. Verschieden von Algol-Blöcken sind REBOL Blöcke zerlegbare Werte, die angesetzten S-Ausdrücken im Lispeln ähnlich sind.

Blöcke sowie parens können andere zerlegbare Werte enthalten (ein Block kann Subblöcke, parens, Schnuren... enthalten), oder Skalarwerte wie Wörter, Satz-Wörter (Wörter suffixed durch den Doppelpunkt), Bekommen-Wörter (Wörter, die durch den Doppelpunkt vorbefestigt sind), angezündete Wörter (Wörter, die durch den Apostroph vorbefestigt sind), Zahlen, Geld, Charaktere usw., getrennt durch whitespace. Bemerken Sie, dass speziellen Charakteren in Wörtern erlaubt wird, auch ist ein Wort unterschiedlich, das eine Folge von drei durch Räume getrennten Wörtern ist.

Anmerkungen können im Anschluss an den Strichpunkt bis zum Ende der Linie erscheinen. Mehrlinienanmerkungen oder durch den lexikalischen parser nicht ignorierte Anmerkungen können mit "gewöhnlichem" datatypes wie Mehrlinienschnuren geschrieben werden.

Semantik

Blöcke, die bereichsspezifische Sprache enthalten, können als Argumente für spezifische Schätzer-Funktionen vorgelegt werden.

tun

Der am häufigsten verwendete Schätzer ist fungieren wirklich. Es wird standardmäßig verwendet, um den Texteingang zur Dolmetscher-Konsole zu interpretieren.

Tun Dialekt, der durch interpretiert ist, fungiert wirklich, ist eine Ausdruck-orientierte Subsprache des Datenaustausch-Dialekts. Die semantische Haupteinheit der Sprache ist der Ausdruck. Im Gegensatz zu befehlenden Programmiersprachen, die vom Algol, hinuntersteigen, tun Dialekt hat weder Schlüsselwörter, noch Behauptungen.

Wörter werden als gegen den Fall unempfindliche Variablen verwendet. Wie auf allen dynamisch getippten Sprachen haben Variablen keinen verbundenen Typ, Typ wird mit Werten vereinigt. Das Ergebnis, d. h. die Einschätzung eines Wortes wird zurückgegeben, wenn auf ein Wort durch gestoßen wird, fungieren wirklich. Die Form des Satz-Wortes eines Wortes kann für die Anweisung verwendet werden. Während man Behauptungen nicht hat, kann Anweisung, zusammen mit Funktionen mit Nebenwirkungen für die befehlende Programmierung verwendet werden.

Subblöcke des Wurzelblocks bewerten zu sich. Dieses Eigentum wird verwendet, um Datenblöcke, für die strukturierte Programmierung durch das Einreichen von Blöcken als Argumente zu behandeln, um Funktionen wie zu kontrollieren, wenn, auch, Schleife, usw., und für dialecting, wenn ein Block zu einer spezifischen Dolmetscher-Funktion passiert wird.

Ein spezifisches Problem, das sich es lohnt zu bemerken, ist diese Zusammensetzung Werte, die Variablen zugeteilt sind, werden nicht kopiert. Um eine Kopie zu machen, muss der Wert zur Kopie-Funktion passiert werden.

Fungieren wirklich normalerweise folgt einem Präfix-Stil der Einschätzung, wo eine Funktion die Argumente bearbeitet, die ihm folgen. Jedoch besteht die Infix-Einschätzung mit Infix-Maschinenbedienern auch. Infix-Einschätzung hat vor der Präfix-Einschätzung den Vortritt. Zum Beispiel,

Umsatz 1 da hat die Infix-Hinzufügung vor der Berechnung des absoluten Werts den Vortritt. Wenn man Infix-Ausdrücke bewertet, wird die Ordnung der Einschätzung zum Recht verlassen, kein Maschinenbediener hat vor einem anderen den Vortritt. Zum Beispiel,

Umsatz 20, während eine Einschätzungsgeben-Priorität zur Multiplikation 14 tragen würde. Alle Maschinenbediener haben Präfix-Versionen. Tun Sie gewöhnlich bewertet Argumente vor dem Übergang von ihnen zu einer Funktion. Also, unter dem Ausdruck:

zuerst liest und passiert dann das Ergebnis zur Druckfunktion. Parenthesen können verwendet werden, um die Ordnung der Einschätzung zu ändern. Mit der Präfix-Notation kann der Gebrauch von Parenthesen in Ausdrücken vermieden werden.

Die einfachen Prioritätsregeln sind beide ein Vorteil:

  • Kein Bedürfnis, Prioritätstische "zu befragen", wenn man Ausdrücke schreibt
  • Kein Bedürfnis, Prioritätstische umzuschreiben, wenn ein neuer Maschinenbediener definiert wird
  • Ausdrücke können vom Infix bis Präfix-Notation und umgekehrt leicht transliteriert werden

sowie ein Nachteil:

  • An herkömmlichere Prioritätsregeln gewöhnte Benutzer können einen Fehler leicht machen

Syntaxanalyse

Die Syntaxanalyse-Funktion wird vorzugsweise verwendet, um Dialekte anzugeben, gültig zu machen, umzugestalten und zu interpretieren. Es tut so durch das Zusammenbringen von Syntaxanalyse-Ausdrücken in der Durchlaufzeit.

Syntaxanalyse-Ausdrücke werden im Syntaxanalyse-Dialekt geschrieben, die, wie Dialekt tun, ist eine Ausdruck-orientierte Subsprache des Datenaustausch-Dialekts. Unterschiedlich tun Dialekt, der Syntaxanalyse-Dialekt verwendet Schlüsselwörter, die Maschinenbediener und die wichtigsten Nichtterminals vertreten, Infix-Syntaxanalyse-Maschinenbediener haben Präfix-Entsprechungen nicht und verwenden Prioritätsregeln (Folge hat höhere Priorität als Wahl).

Handlungen können eingeschlossen werden, um während des Syntaxanalyse-Prozesses ebenso genommen zu werden, und die Syntaxanalyse-Funktion kann verwendet werden, um Blöcke oder Schnuren zu bearbeiten. An der Schnur, die Niveau grammatisch analysiert, muss Syntaxanalyse die Syntaxanalyse "der niedrigen Stufe" behandeln, Charaktere und Begrenzungszeichen in Betracht ziehend. Block-Syntaxanalyse ist höheres Niveau, die Abtastung am Niveau von REBOL-Werten behandelnd.

Der Syntaxanalyse-Dialekt gehört der Familie von Grammatiken, die durch die verfeinernde Syntaxanalyse-Sprache oder die Syntaxanalyse-Ausdruck-Grammatik vertreten sind. Die Hauptähnlichkeit ist die Anwesenheit der Folge und auserlesenen Maschinenbediener, die alle Familienmitglieder haben. Syntaxanalyse-Dialekt-Syntax und die Ähnlichkeiten zwischen dem Syntaxanalyse-Dialekt und dem HAKEN werden durch diese Transkription eines HAKEN-Beispiels illustriert, das einen arithmetischen Ausdruck grammatisch analysiert:

Wert: [eine Ziffer |" (" Expr")"]

Produkt: [Schätzen Sie irgendwelchen "/"] Wert

Summe: [Produkt irgendwelcher "-"] Produkt

Expr: Summe

analysieren Sie "12+13" Expr </pre> grammatisch/ganz

Bequemlichkeit des Gebrauches

Einer der REBOL Designgrundsätze soll einfache Sachen auf einfache Weisen "machen". Im folgenden Beispiel wird der Sehschnittstelle-Dialekt verwendet, um einen einfachen Hallo Weltprogramm mit einer grafischen Benutzerschnittstelle zu beschreiben:

Ansicht-Lay-Out [Texttaste "Hello world!" "Verlassen" [verlassen]]

Durchführungen

Die offizielle REBOL Durchführung ist ein frei wiederverteilbarer Eigentumsdolmetscher, der in mehreren Ausgaben (/Kern, / Ansicht, / Befehl,/SDK und / ein/Ausgabe-Steuersystem) verfügbar ist. Die Rücktechnik des Dolmetschers wird durch die Lizenz verboten. Teile des Dolmetschers sind offene Quelle. Beispiel: Die REBOL Arbeitsfläche ist ein offener Quellteil des REBOL/View Dolmetschers, der die REBOL Gemeinschaft im Internet verbindet. Die Laufzeitumgebung wird zurzeit in einer einzelnen rechtskräftigen Datei versorgt. REBOL/Core, die Konsole-Ausgabe, ist ungefähr 300 Kilobytes, und REBOL/View, die grafische Benutzerschnittstelle-Ausgabe, ist ungefähr 650 Kilobytes in der Größe. REBOL/View stellt mit der Plattform unabhängigen gesunden und Grafikzugang zur Verfügung, und kommt mit seinem eigenen Fenstertechnik-Werkzeug und ausziehbarem Satz von Stilen (GUI Produkte). Verlängerte Ausgaben, wie REBOL/Command oder REBOL/SDK verlangen eine bezahlte Lizenz; sie fügen Eigenschaften wie ODBC Datenzugang und die Auswahl hinzu, eigenständige rechtskräftige Dateien zu schaffen.

Es gibt auch kostenlose Software / offene Quellalternativen zum REBOL Dolmetscher (oder Teile davon), die als Durchführungen von REBOL Dialekten geschrieben werden.

  • Butzkopf ist "ein Dolmetscher für eine REBOL ähnliche Sprache". Butzkopf wird in C geschrieben, aber kann ohne einen REBOL Dolmetscher nicht kompiliert werden, der wird installiert (Butzkopf kann wenn verfügbar verwendet werden).
  • Bor ist eine C Bibliothek, die in Form vom LGPLv3 kopiert werden kann. Es ist ein Dolmetscher eines REBOL Dialekts. Der Bor-Dialekt ist ein interpretierter, homoiconic Sprache, die gemeint wird, um Gebiet spezifische Sprachen einzubetten.
  • Die Roten Bearbeiter-Werkzeuge / System-Bearbeiter-Werkzeuge ein REBOL Dialekt. Es wird zurzeit mit einem REBOL Dolmetscher urladen und braucht deshalb einen REBOL Dolmetscher, um zu laufen.
  • Der Dialekt von RebGUI ist eine offene Alternative zum VID Dialekt von REBOL/VIEW für grafische Benutzerschnittstellen.

Siehe auch

  • Dialecting
  • Bereichsspezifische Sprache
  • Sprachorientierte Programmierung
  • Die Syntaxanalyse der Ausdruck-Grammatik
  • Muster, das zusammenpasst
  • Polnische Notation

Weiterführende Literatur

Außenverbindungen


Schurkenstaat / Roter Hut
Impressum & Datenschutz