Textantrieb

Textengine

Spec: Symbolsprache

Spec: Symbolsprache

Diese Seite spezifiziert die Symbolsprache, so wie sie in der Textengine v0.3 implementiert ist.

Die Symbolsprache ist eine Programmiersprache zur Erfassung von Text.

Semantik

Die Symbolsprache stellt Texte als symbolische Gebilde bestehend aus Grundheiten dar. Die Semantik der Symbolsprache ist daher die Semantik der Grundheiten. Eingebettet in Symbolsprache können Zeichenketten in anderen Formaten und mit einer eigenen Semantik vorkommen.

Lexik

Die Referenzgenera werden jeweils durch ein Zeichen dargestellt. Standardmäßig sind dies die folgenden:

Referenzziele wie -objekte werden durch Namen dargestellt. Siehe Namenssystem.

Das Einführen eines neuen Namens für eine Texteinheit wird durch das Gleichheitszeichen dargestellt:

Syntax

Ein Ausdruck in der Symbolsprache besteht aus einem einfachen oder zusammengesetzten Satz.

Ein Satzteil besteht in der Angabe einer Referenz oder eines Namens.

Bei der Angabe einer Referenz werden Referenzgenus und -ziel explizit, das Referenzobjekt wird implizit angegeben:

<Referenzgenus> <Referenzziel>

Der Leerraum (Leer-, Tab- und Zeilenumbruch-Zeichen) vor, nach und zwischen diesen Angaben ist standardmäßig unerheblich. Das Referenzziel besteht in einer laut Namenssystem zulässige Namensangabe.

Beispiele Satzteile mit Referenzangabe:

: mein Typ
~ meine Rolle
# mein Symbol

Ein Name wird mit dem Gleichheitszeichen gefolgt von der Zeichenkette, die als Bezeichner fungieren soll, angegeben.

Der Leerraum vor, nach und zwischen diesen Angaben ist unerheblich. Der Bezeichner muss laut Namenssystem zulässig sein.

Beispiel Satzteil mit Namensdefinition:

= Bezeichner

Ein einfacher Satz besteht aus einem Satzteil oder aus mehreren Satzteilen, die zusammen eine Texteinheit spezifizieren, und endet mit einem Semikolon. Die Reihenfolge der Satzteile ist unerheblich. Der Leerraum vor, nach und zwischen den Satzteilen ist unerheblich.

Beispiel einfacher Satz:

~Person =Lisa;

Ein zusammengesetzter Satz kann konjunktiv oder subjunktiv sein.

Ein konjunktiver Satz besteht in einer Reihe von einfachen oder zusammengesetzten Sätzen, die voneinander unabhängig sind. Die Reihenfolge ist semantisch relevant.

Beispiel konjunktiver Satz:

~Person =Mia; ~Person =Klaus;

Ein subjunktiver Satz besteht aus einem Hauptsatz, der ein einfacher Satz ist, und einem Nebensatz, der ein einfacher oder zusammengesetzter Satz ist. Der Nebensatz wird in geschweiften Klammern innerhalb des Hauptsatzes unmittelbar vor dessen Ende dargestellt. Semantik: Alle Einheiten aus dem Nebensatz erhalten eine implizite Referenz vom Typ Elternteil auf die Einheit des Hauptsatzes.

Beispiel subjunktiver Satz:

~Team { ~Person =Renate; ~Person =Johannes; };

Eingebettete Strings

In einen Satz lässt sich eine Zeichenkette einbetten, die selbst kein symbolsprachlicher Ausdruck sein muss. Die Zeichenkette wird in Anführungszeichen unmittelbar vor dem Satzende, bei subjunktiven Sätzen vor dem Nebensatz, platziert.

Die Semantik der eingebetteten Strings wird anderweitig bestimmt. Beim Parsen des Ausdrucks wird die Zeichenkette durch einen alternativen, durch das System bestimmten Parser erfasst.

Beispiel eingebettete Strings:

~Person { ~Vorname "Lena"; ~Geburtsjahr "1981"; };

Konfiguration

Die grammatikalischen Zeichen sind in der Symbolsprache konfigurierbar. So führt etwa standardmäßig das Gleichheitszeichen einen Namen ein, dies kann aber beispielsweise auf → umgestellt werden. So wird dann der Ausdruck

→ Bezeichner

den neuen Namen definieren.

Konfigurierbar sind die Zeichen für (mit Angabe des Standardwerts):

Für die Namen gelten die Konfigurationsmöglichkeiten, die unter Spec: Namenssystem beschrieben werden.

Außerdem ist der Ausdruck der eingebetteten Zeichenketten auch konfigurierbar.

Man kann auch einstellen, ob Anführungszeichen immer nötig sind, oder nur beim Vorkommen von bestimmten Zeichen. Standardmäßig sind Anführungszeichen nur dann Pflicht, wenn die Zeichenkette grammatikalischen Zeichen enthält. Beispiele — Ein Leerzeichen erfordert standardmäßig keine Anfürhungszeichen, die Zeichen für Referenzgenera aber schon:

~name Maria Eugenia;
~name "#hashtag";

Obiges repräsentiert:

~name {  
  ~char #chars."#";
  ~char #chars.h;
  ~char #chars.a;
  ~char #chars.s;
  ~char #chars.t;
  ~char #chars.a;
  ~char #chars.g;
};

Ohne Anführungszeichen wäre ~name #hastag; eine simple Textenheit, die als Rolle „name” hat und symbolisch Equivalent zur Einheit „hashtag” ist.