Die Semantischen Funktionen



[Die Semantischen Domänen] ... [Beispiel : Integer Arithmetik]
Die Semantischen Funktionen ordnen ein Konstrukt der syntaktischen Domänen einem Wert der semantischen Domänen zu. Für jede syntaktische Domäne ist eine semantische Funktion definiert. Jede Funktion erhält einen entsprechenden Namen, der üblicherweise dem fettgedruckten Namen eines Elementes der Domäne entspricht. Stellt man sich die Syntax Definition als Baum vor, so ordnet die semantische Funktion jedem Zweig einen bestimmten Wert zu. Um die Definition dennoch einfach schriftlich festhalten zu können wird der Baum nicht aufgezeichnet, sondern es wird die folgende Syntax verwandt :

Name der Funktionsyntaktisches Konstruktsemantischer Wert
D[['0']] = 0

Es ist prinzipiell nicht nötig das syntaktische Konstrukt speziell zu kennzeichnen, da sich eine semantische Funktion immer auf syntaktische Werte beziehen muß. Die Kennzeichnung wird jedoch beibehalten, um das Lesen der Definitionen zu vereinfachen. Um eine vollständige Definition zu geben muß zunächst definiert werden welche syntaktische Domäne welcher semantischen zugeordnet wird und danach werden die einzelnen Funktionen für jeden Ast des Syntaxbaumes definiert. Hierbei können natürlich die, für diese Algebra definierten, Operationen angewandt werden.

E : Expression -> Integer
E[[E1 '+' E2]] = E[[E1]] + E[[E2]]
E[[E1 '-' E2]] = E[[E1]] - E[[E2]]
E[[E1 '*' E2]] = E[[E1]] * E[[E2]]
E[[E1 '/' E2]] = E[[E1]] / E[[E2]]
E[[E1 '%' E2]] = E[[E1]] % E[[E2]]
E[[N]] = N[[N]]

Mit diesen Werkzeugen kann nun eine grundlegende denotationale Definition einer Sprache erfolgen, die Ausdrücke einem Integer Wert zuordnet.


[Zurück] ... [Nach oben] ... [Weiter]