• Keine Ergebnisse gefunden

Beispielprädikate für die Abstrakte Syntax 1

Nachdem die abstrakte Syntax 1 durch die Funktion Mapping konstruiert wurde, müssen wiederum Korrektheitsregeln (well-formedness rules) überprüft werden. Wie auch die Regeln für die abstrakte Syntax 0 sind diese Regeln als Prädikate formuliert. Diese Prädikate geben üb-licherweise den Text der englischen Formulierung direkt wieder. Zur Illustration wurden zwei typische Beispiele ausgewählt.

7.5.1 Typrichtigkeit von Konstanten in Variableninitialisierungen Wird eine Variable mit einem Standardwert belegt, wie in der Definition

dcl i Integer := <<type Integer>> 0;

so muss der Typ der Konstanten der gleiche sein wie der Typ der Variablen. In der informalen Definition ist diese Regel formuliert durch

If the Constant-expression is present, it must be of the same sort as the one denoted by Sort-reference-identifier.

Diese Formulierung bezieht sich dabei auf die folgende Regel der abstrakten Syntax:

Variable-definition :: Variable-name

Sort-reference-identifier [ Constant-expression ]

Zur Formalisierung dieser Regel wurde folgendes Prädikat definiert

∀d ∈ Variable-definition: d.s-Constant-expression≠ undefined ⇒ d.s-Constant-expression.staticSort1= d.s-Sort-reference-identifier

Falls der Knoten Constant-Expression im Knoten Variable-definition weggelassen ist, so liefert die Zugriffsfunktion s-Constant-expression den Wert undefined. Anderenfalls verlangt das Prä-dikat, dass die Funktion staticSort1, die für einen Knoten der abstrakten Syntax 1 seine dekla-rierte Sorte ermittelt, den Bezeichner der Sorte der Variable zurückgibt.

7.6 Fazit

Die Definition der statischen Semantik von SDL besteht aus 5 Teilen: abstrakter Syntax 0 (AS0), Korrektheitsbedingungen, Transformationsregeln, abstrakter Syntax 1 (AS1) und der Abbildung von AS0 auf AS1.

Für jeden dieser Teile wurde eine Notation entwickelt, die von Werkzeugen automatisch ver-arbeitet werden kann. Die semantische Fundierung aller Teile ist der ASM-Kalkül.

Bei der Formalisierung der informalen Sprachdefinition wurden zahlreiche Probleme ent-deckt; dieses Kapitel illustriert einige dieser Probleme und die gewählten Lösungsstrategien.

8 Definition der dynamischen Datentypsemantik

Während die Datentypsemantik von SDL-92 auf dem Kalkül der initialen Algebra basiert, liegt der Datentypsemantik von SDL-2000 das gleiche Kalkül zugrunde wie der gesamten SDL-Se-mantik, nämlich das der Abstract State Machines.

Wie in Abschnitt 5.3.1 dargestellt, wird ein Ablauf eines SDL-Systems durch eine Menge verteilter ASM-Agenten sowie eine halbgeordnete Folge von Systemzuständen repräsentiert.

Der Systemzustand wird dabei durch die Programme der Agenten geändert.

Dieser Systemzustand wird durch ein Vokabular von Funktionen und dessen Interpretation beschrieben, wobei natürlich auch die Variablenbelegungen erfasst sein müssen.

Aus der Erfahrung von früheren SDL-Versionen sowie aus der Erfahrung im praktischen SDL-Einsatz gab die Expertengruppe für die formale Semantik von SDL-2000 die Empfehlung, die Datentypsemantik weitestgehend von der Semantik von Agenten zu entkoppeln.

Der Grund für diese Empfehlung war der Wunsch, die Datentypsemantik bei Bedarf durch die Semantik einer anderen Sprache (etwa von C++) austauschen zu können. Dabei wurde al-lerdings nicht genauer spezifiziert, welche Art von Flexibilität in Bezug auf die Formulierung der Datentypsemantik denn sinnvoll ist.

Zur Erfüllung dieser unscharfen Forderung wurde eine funktionale Schnittstelle favorisiert, in der also die eigentlichen Berechnungen durch Funktionen ohne Seiteneffekte erfolgen. Damit kann das Datentypmodell prinzipiell durch ein anderes ersetzt werden, sofern dieses andere Mo-dell ebenfalls funktional ist. In Abschnitt 8.1.2 wird gezeigt, dass diese Forderung leider zu ei-ner komplizierteren und weniger intuitiven Repräsentation von Variablen und deren Werten führt.

Bisher ist die Definition einer alternativen Datentypsemantik nicht erfolgt. Es ist auch zwei-felhaft, ob sich eine beliebige andere Datentypsemantik „einfach“ in SDL integrieren lassen würde. Es ist eher wahrscheinlich, dass die Integration einer anderen, bereits formulierten Se-mantik auf folgende Probleme trifft:

• Eine andere Datentypsemantik wird oft nicht funktional formuliert sein. So ist beispiels-weise die naheliegende Idee, die schon auf der Basis des ASM-Kalküls definierte Java-Semantik [BS98] in SDL zu integrieren, schwer zu realisieren, da hier die Berechnungen der virtuellen Java-Maschine durch Zustandsänderungen eines ASM-Agenten repräsentiert werden.

• Selbst wenn eine vorhandene Datentypsemantik funktional ist, kann sie doch nicht einfach in SDL-2000 integriert werden: Die Datentypschnittstelle besitzt eine Reihe spezifischer Funktionen, die eine alternative Semantik ebenfalls realisieren müsste. Gleichzeitig beschränkt sich die dynamische SDL-Semantik auf Rufe genau dieser Funktionen, und ver-wendet deren Ergebnis zur Aktualisierung des Systemzustands. Eine alternative Semantik kann also Änderungen des Systemzustands nur auf die gleiche Weise bewirken, wie die Datentypsemantik von SDL-2000 das auch tut.

Eine Ausnahmestellung nimmt hierbei die Integration von ASN.1 ein, da die bessere Integration von ASN.1-Datentypen in SDL ein wichtiges Ziel der Neugestaltung der Datentypen war. Hier-bei wurde jedoch nicht von dem Mechanismus Gebrauch gemacht, die Datentypsemantik aus-tauschen zu können. Vielmehr sollen ja ASN.1-Datentypen zusammen mit den Standardkonstrukten für Daten von SDL verwendet werden können. Die Integration von ASN.1 wurde statt dessen durch ein Transformationsmodell erreicht [Z.105], sodass ASN.1-Typen die gleiche dynamische Semantik besitzen wie „normale“ SDL-Datentypen. Wenngleich dieses Transformationsmodell nicht formalisiert wurde, so ist es doch wahrscheinlich, dass sich die in Kapitel 7 vorgestellten Mechanismen für die Beschreibung dieser Transformation einsetzen

las-sen. Dies wird insbesondere dadurch vereinfacht, dass ASN.1-Datentypen lediglich Zustand re-präsentieren, und [X.680] selbst keine Operationssemantik für solche Datentypen festlegt.

In den folgenden Abschnitten werden die wesentlichen Teile der Datentypsemantik beschrie-ben. Der Schwerpunkt der Darstellung liegt dabei in der Integration der Datentypsemantik in den „Rest“ der formalen Semantik.