Vorlesung Höhere Programmier- sprachen, WS 2002/03 Teil 2 ... file3 3 HPS WS 2003/04 Dr. Sabine...

41
HPS WS 2003/04 Dr. Sabine Glesner 1 Vorlesung Höhere Programmier- sprachen, WS 2002/03 Teil 2: Formale Semantik Einleitung Operationale Semantik mit ASMs

Transcript of Vorlesung Höhere Programmier- sprachen, WS 2002/03 Teil 2 ... file3 3 HPS WS 2003/04 Dr. Sabine...

Page 1: Vorlesung Höhere Programmier- sprachen, WS 2002/03 Teil 2 ... file3 3 HPS WS 2003/04 Dr. Sabine Glesner Warum formale Semantik? zexakte Definition, wie sich Programme verhalten (natürliche

1

HPS WS 2003/04 Dr. Sabine Glesner1

Vorlesung Höhere Programmier-sprachen, WS 2002/03

Teil 2: Formale Semantik

Einleitung

Operationale Semantik mit ASMs

Page 2: Vorlesung Höhere Programmier- sprachen, WS 2002/03 Teil 2 ... file3 3 HPS WS 2003/04 Dr. Sabine Glesner Warum formale Semantik? zexakte Definition, wie sich Programme verhalten (natürliche

2

Inhaltsübersicht HPS WS 2003/04

- Grundlagen (1,2)- Konzepte imperativer Programmiersprachen (2,3)- Deklarative Programmiersprachen (4)- Objektorientierte Programmiersprachen (5,6)- Programmierung von Smart Cards: Java Card (7)- Wissenschaftliches Rechnen: Fortran (8)- Wirtschaftsanwendungen: Cobol (8, 9)- Skriptsprachen (9)

- Formale Semantik- Operationale Semantik mit ASMs (10)- Operationale Semantik mit natürlicher Semantik und SOS (11)- Denotationelle Semantik (12, 13)- Axiomatische Semantik (14)

Page 3: Vorlesung Höhere Programmier- sprachen, WS 2002/03 Teil 2 ... file3 3 HPS WS 2003/04 Dr. Sabine Glesner Warum formale Semantik? zexakte Definition, wie sich Programme verhalten (natürliche

3

HPS WS 2003/04 Dr. Sabine Glesner3

Warum formale Semantik?

exakte Definition, wie sich Programme verhalten(natürliche Sprache immer mehrdeutig)besseres Verständnis der ProgrammierspracheGrundlage für ProgrammanalysenGrundlage für korrekte ÜbersetzerimplementierungDefinition für semantische Äquivalenzschnelle Prototyp-Entwicklungformale Beweise für Korrektheit (Testen zeigt, dass Fehler vorhanden sind; nicht, dass keine Fehler da sind)

Page 4: Vorlesung Höhere Programmier- sprachen, WS 2002/03 Teil 2 ... file3 3 HPS WS 2003/04 Dr. Sabine Glesner Warum formale Semantik? zexakte Definition, wie sich Programme verhalten (natürliche

4

HPS WS 2003/04 Dr. Sabine Glesner4

Übersicht Formale Semantik

Konzepte in Programmiersprachen– Was muß überhaupt spezifiziert werden

Überblick verschiedene FormalismenOperationale Semantik– Abstrakte Zustandsmaschinen (ASMs)– Strukturell operationale Semantik (SOS)– natürliche Semantik

Denotationelle SemantikAxiomatische Semantik

Page 5: Vorlesung Höhere Programmier- sprachen, WS 2002/03 Teil 2 ... file3 3 HPS WS 2003/04 Dr. Sabine Glesner Warum formale Semantik? zexakte Definition, wie sich Programme verhalten (natürliche

5

HPS WS 2003/04 Dr. Sabine Glesner5

Konzepte in ProgrammiersprachenÜbersicht

Syntax versus SemantikSteuerflußDatenflußProgrammierparadigmen

Page 6: Vorlesung Höhere Programmier- sprachen, WS 2002/03 Teil 2 ... file3 3 HPS WS 2003/04 Dr. Sabine Glesner Warum formale Semantik? zexakte Definition, wie sich Programme verhalten (natürliche

6

HPS WS 2003/04 Dr. Sabine Glesner6

Syntax versus Semantik

Syntax von Programmiersprachen:– kontextfreie Syntax

(überprüft in lexikalischer und syntaktischer Analyse)– kontext-sensitive syntax

(überprüft in semantischer Analyse)– definiert abstrakten Syntaxbaum

(abstract syntax tree, AST)Semantik:

– definiert die Bedeutung von Programmen– basierend auf AST definiert– drei prinzipielle Methoden:

operationale, denotationelle und axiomatische Semantik

Page 7: Vorlesung Höhere Programmier- sprachen, WS 2002/03 Teil 2 ... file3 3 HPS WS 2003/04 Dr. Sabine Glesner Warum formale Semantik? zexakte Definition, wie sich Programme verhalten (natürliche

7

HPS WS 2003/04 Dr. Sabine Glesner7

Kompositionalität

Semantik basierend auf AST definiertKompositionalität von Programmiersprachen:

Die Bedeutung eines Programms ergibt sich unmittelbar aus seinen Unterprogrammen, d.h. seinen direkten Unterbäumen.

nicht kompositional: gotosAber: Ausnahmebehandlung ist kompositional.

Page 8: Vorlesung Höhere Programmier- sprachen, WS 2002/03 Teil 2 ... file3 3 HPS WS 2003/04 Dr. Sabine Glesner Warum formale Semantik? zexakte Definition, wie sich Programme verhalten (natürliche

8

HPS WS 2003/04 Dr. Sabine Glesner8

Steuerfluß

Sequenzen von AnweisungenAuswahl aus AlternativenAusnahmebehandlungIterationProzedurdefinition und –aufrufnebenläufige ProzesseAustauschen von NachrichtenSynchronisation

Page 9: Vorlesung Höhere Programmier- sprachen, WS 2002/03 Teil 2 ... file3 3 HPS WS 2003/04 Dr. Sabine Glesner Warum formale Semantik? zexakte Definition, wie sich Programme verhalten (natürliche

9

HPS WS 2003/04 Dr. Sabine Glesner9

Datenfluß

Berechnung von WertenVerwendung berechneter WerteSpeichermodifikationenBindungen und ihre GültigkeitsbereicheMethodenaufrufFunktionsaufruf

Page 10: Vorlesung Höhere Programmier- sprachen, WS 2002/03 Teil 2 ... file3 3 HPS WS 2003/04 Dr. Sabine Glesner Warum formale Semantik? zexakte Definition, wie sich Programme verhalten (natürliche

10

HPS WS 2003/04 Dr. Sabine Glesner10

Pragrammierparadigmen

Verschiedene Programmierparadigmen betonen verschiedene Steuer- und DatenflußkonzepteImperative Programmiersprachen:

– sequenzielle Anweisungen, Iteration, Prozedurdefinition und –aufruf, Speichereffekte

Funktionale Programmiersprachen– Berechnung von Werten, Gültigkeitsbereiche von

Bindungen, Funktionsdefinition und –aufrufNebenläufige Programmiersprachen

– nebenläufige Prozesse, Auswahl unter Alternativen, Verschicken von Nachrichten

Objektorientierte Programmiersprachen– wie imperativ mit speziellen Bindungsregeln

Page 11: Vorlesung Höhere Programmier- sprachen, WS 2002/03 Teil 2 ... file3 3 HPS WS 2003/04 Dr. Sabine Glesner Warum formale Semantik? zexakte Definition, wie sich Programme verhalten (natürliche

11

HPS WS 2003/04 Dr. Sabine Glesner11

Übersicht Formale Semantik

Konzepte in Programmiersprachen– Was muß überhaupt spezifiziert werden

Überblick verschiedene FormalismenOperationale Semantik– Abstrakte Zustandsmaschinen (ASMs)– Strukturell operationale Semantik (SOS)– natürliche Semantik

Denotationelle SemantikAxiomatische Semantik

Page 12: Vorlesung Höhere Programmier- sprachen, WS 2002/03 Teil 2 ... file3 3 HPS WS 2003/04 Dr. Sabine Glesner Warum formale Semantik? zexakte Definition, wie sich Programme verhalten (natürliche

12

HPS WS 2003/04 Dr. Sabine Glesner12

Formale Semantik: Überblick

Operationale Semantik:– definiert Programmausführung als

ZustandsübergangssystemDenotationelle Semantik:– definiert Ergebnis der Programmausführung

Axiomatische Semantik: – definiert Prädikate, die an bestimmten

Programmpunkten gelten

Page 13: Vorlesung Höhere Programmier- sprachen, WS 2002/03 Teil 2 ... file3 3 HPS WS 2003/04 Dr. Sabine Glesner Warum formale Semantik? zexakte Definition, wie sich Programme verhalten (natürliche

13

HPS WS 2003/04 Dr. Sabine Glesner13

Überblick: Operationale Semantik

definiert, wie Programme auszuführen sindz.B. Folge von Anweisungen: – wird ausgeführt, indem eine Anweisung nach der

anderen berechnet wird– von links nach rechts

Zuweisungen ändern den Zustandist eine Abstraktion von der tatsächlichen Programmausführung– keine Register, Adressen von Variablen, etc.

Page 14: Vorlesung Höhere Programmier- sprachen, WS 2002/03 Teil 2 ... file3 3 HPS WS 2003/04 Dr. Sabine Glesner Warum formale Semantik? zexakte Definition, wie sich Programme verhalten (natürliche

14

HPS WS 2003/04 Dr. Sabine Glesner14

Überblick: Denotationelle Semantik

Bedeutung von Programmen beschrieben durch mathematische Objekte nur die Effekte von Berechnungen, nicht der Berechnungsweg, wird definiertmodelliert über mathematische Funktionenz.B. Effekt einer Zuweisung:

– modelliert mit einer Funktion, die einen gegebenen Zustand in einen neuen Zustand überführt

– neuer Zustand ist identisch mit dem alten bis auf den Wert der Variablen, die bei der Zuweisung modifiziert wurde

Page 15: Vorlesung Höhere Programmier- sprachen, WS 2002/03 Teil 2 ... file3 3 HPS WS 2003/04 Dr. Sabine Glesner Warum formale Semantik? zexakte Definition, wie sich Programme verhalten (natürliche

15

HPS WS 2003/04 Dr. Sabine Glesner15

Überblick: Axiomatische Semantik

Vor- und Nachbedingungen spezifizieren den Effekt der Ausführung von ProgrammkonstruktenDieseVor- und Nachbedingungen können auch nur Teile des vollständigen Effekts modellieren

– bestimmte Aspekte evtl. unberücksichtigt Verwendung bei Nachweis partieller/totaler Korrektheitaxiomatische Semantik stellt ein logisches Systemzur Verfügung

Page 16: Vorlesung Höhere Programmier- sprachen, WS 2002/03 Teil 2 ... file3 3 HPS WS 2003/04 Dr. Sabine Glesner Warum formale Semantik? zexakte Definition, wie sich Programme verhalten (natürliche

16

HPS WS 2003/04 Dr. Sabine Glesner16

Übersicht Formale Semantik

Konzepte in Programmiersprachen– Was muß überhaupt spezifiziert werden

Überblick verschiedene FormalismenOperationale Semantik– Abstrakte Zustandsmaschinen (ASMs)– Strukturell operationale Semantik (SOS)– natürliche Semantik

Denotationelle SemantikAxiomatische Semantik

Page 17: Vorlesung Höhere Programmier- sprachen, WS 2002/03 Teil 2 ... file3 3 HPS WS 2003/04 Dr. Sabine Glesner Warum formale Semantik? zexakte Definition, wie sich Programme verhalten (natürliche

17

HPS WS 2003/04 Dr. Sabine Glesner17

Operationale Semantik

Idee: Zustände gehen in neue Zustände überAbstrakte Zustandsmaschinen (ASMs)

– Zustand ist Interpretation einer Logik der ersten StufeStrukturell operationale Semantik (SOS)

– auch small-step semantics genannt– (Progr, Zustand) transformiert in (Progr´, Zustand´)

bzw. (Endzustand´)Natürliche Semantik

– auch big-step semantics genannt– beschreibt vollständige Zustandsübergänge eines

Programms in Abhängigkeit der Zustandsübergänge von Teilprogrammen

Page 18: Vorlesung Höhere Programmier- sprachen, WS 2002/03 Teil 2 ... file3 3 HPS WS 2003/04 Dr. Sabine Glesner Warum formale Semantik? zexakte Definition, wie sich Programme verhalten (natürliche

18

HPS WS 2003/04 Dr. Sabine Glesner18

Operationale Semantik

Unterschiede zwischen verschiedenen Formalismen:– Wie wird das Programm während der

spezifizierten Ausführung behandelt?– konstant: ASMs und natürliche Semantik– veränderbar: SOS (manchmal auch bei ASMs)

Continuation: Bezeichnung für noch abzuarbeitendes Programm

Page 19: Vorlesung Höhere Programmier- sprachen, WS 2002/03 Teil 2 ... file3 3 HPS WS 2003/04 Dr. Sabine Glesner Warum formale Semantik? zexakte Definition, wie sich Programme verhalten (natürliche

19

HPS WS 2003/04 Dr. Sabine Glesner19

Übersicht Formale Semantik

Konzepte in Programmiersprachen– Was muß überhaupt spezifiziert werden

Überblick verschiedene FormalismenOperationale Semantik– Abstrakte Zustandsmaschinen (ASMs)– Strukturell operationale Semantik (SOS)– natürliche Semantik

Denotationelle SemantikAxiomatische Semantik

Page 20: Vorlesung Höhere Programmier- sprachen, WS 2002/03 Teil 2 ... file3 3 HPS WS 2003/04 Dr. Sabine Glesner Warum formale Semantik? zexakte Definition, wie sich Programme verhalten (natürliche

20

HPS WS 2003/04 Dr. Sabine Glesner20

ASM Behauptung

Jeder Algorithmus kann auf seinem natürlichen Abstraktionsniveau als ASM formuliert werden.

“Beweis” dieser Behauptung:Umfangreiche Sammlung von Fallstudien (nicht nur Programmier-sprachen), vgl. ASM-Homepage.

Semantik von Programmiersprachen: für C, C++, Prolog, Java, SDL (Specification and Description Language), …und formale Verifikation von Übersetzern (z.B. Prolog Übersetzung)

Page 21: Vorlesung Höhere Programmier- sprachen, WS 2002/03 Teil 2 ... file3 3 HPS WS 2003/04 Dr. Sabine Glesner Warum formale Semantik? zexakte Definition, wie sich Programme verhalten (natürliche

21

HPS WS 2003/04 Dr. Sabine Glesner21

Beispiel: Speicher

Funktionssymbol S: spezifiziert Speicherzustände– Argumente: Platzhalter für Variablen– Ergebnisterm: aktueller Wert der Variablen

Zuweisung x:=v an Variable x:– verändert Speicherzustand

Sei I(S) alte InterpretationNeue Interpretation:

– wie I(S) außer I(S(x)) = I(v)

Sx

I(S(x))

Wert der Variablen x im Zustand mit Interpretation I

Page 22: Vorlesung Höhere Programmier- sprachen, WS 2002/03 Teil 2 ... file3 3 HPS WS 2003/04 Dr. Sabine Glesner Warum formale Semantik? zexakte Definition, wie sich Programme verhalten (natürliche

22

HPS WS 2003/04 Dr. Sabine Glesner22

Semantik mit ASMs

Operationale Semantik– Zustandsübergangssystem

Teil des aktuellen Zustands: current task (CT)– nötig: statisch berechnete Erweiterung des AST– Steuer- und Datenflussgraph statt AST

Programmausführung: – Aktualisierung der Zustände, insbesondere von CT

Page 23: Vorlesung Höhere Programmier- sprachen, WS 2002/03 Teil 2 ... file3 3 HPS WS 2003/04 Dr. Sabine Glesner Warum formale Semantik? zexakte Definition, wie sich Programme verhalten (natürliche

23

Beispiel für ASM-Semantik

if CT ∈ While thenif value(CT.cond) = true then

CT := CT.TTelse CT := CT.FTfi

fib

S

While

NT TT

NT

cond

FT

SteuerflussDatenfluss

while

b S

Ursprünglicher AST

Steuer- und Datenflussgraph,statisch berechnet aus AST

CT: Teil des aktuellen Zustands,

wird aktualisiert

Page 24: Vorlesung Höhere Programmier- sprachen, WS 2002/03 Teil 2 ... file3 3 HPS WS 2003/04 Dr. Sabine Glesner Warum formale Semantik? zexakte Definition, wie sich Programme verhalten (natürliche

24

HPS WS 2003/04 Dr. Sabine Glesner24

Abstrakte Zustandsmaschinen (ASMs)

entwickelt von Yuri Gurevich, Ende der 80eralter Name: EVA (evolving algebra)Idee: – Jeder Zustand ist Interpretation einer Logik– Zustandsübergänge ändern die Interpretation

eines Teils der FunktionssymboleVorteile: genauig, verständlich, ausführbar, allgemein, skalierbar

Page 25: Vorlesung Höhere Programmier- sprachen, WS 2002/03 Teil 2 ... file3 3 HPS WS 2003/04 Dr. Sabine Glesner Warum formale Semantik? zexakte Definition, wie sich Programme verhalten (natürliche

25

HPS WS 2003/04 Dr. Sabine Glesner25

Grundlegende Begriffe: Prädikatenlogik

Prädikatenlogik:Syntax:

– definiert Terme und Formeln über einer Variablenmenge, einer Menge von Funktionssymbolen und einer Menge von Prädikatssymbolen

– All- und ExistenzquantorSemantik:

– definiert Wahrheitswert von Formeln bzgl. möglicher Interpretationen

Allgemeingültig: wahr in allen Interpretationen

Page 26: Vorlesung Höhere Programmier- sprachen, WS 2002/03 Teil 2 ... file3 3 HPS WS 2003/04 Dr. Sabine Glesner Warum formale Semantik? zexakte Definition, wie sich Programme verhalten (natürliche

26

HPS WS 2003/04 Dr. Sabine Glesner26

Grundlegende Begriffe: Semantik

Struktur (ist eine Algebra): – definiert ein nicht-leeres Universum U– ordnet Funktionssymbolen Funktionen auf U zu– ordnet Prädikatssymbolen Prädikate auf U zu

Variablenbelegung: Substitution:– ordnet Variablen Werte aus U zu

Definiere damit induktiv über Aufbau von Formeln deren Wahrheitswert

– Allquantor: muß für alle Belegungen der allquantifizierten Variable gelten

– Existenzquantor: muß für mind. eine Belegung der existenzquantifizierten Variable gelten

Interpretation = Struktur + Variablenbelegung

Page 27: Vorlesung Höhere Programmier- sprachen, WS 2002/03 Teil 2 ... file3 3 HPS WS 2003/04 Dr. Sabine Glesner Warum formale Semantik? zexakte Definition, wie sich Programme verhalten (natürliche

27

HPS WS 2003/04 Dr. Sabine Glesner27

Definition ASM

ASM hat vier Komponenten (Σ∪∆, A, Init, Trans)– Signatur Σ∪∆ : zwei disjunkte Mengen

Σ: Menge der statischen Funktionssymbole∆: Menge der dynamischen Funktionssymbole

– Statische Algebra A: interpretiert Funktionssymbole in Σ

– Initiale Zustände Init : Gleichungen über A, definieren initiale Zustände in A

– Übergangsregeln Trans: definieren Zustandsübergänge, indem Interpretation dynamischer Funktionssymbole in ∆ definiert oder modifiziert wird

Page 28: Vorlesung Höhere Programmier- sprachen, WS 2002/03 Teil 2 ... file3 3 HPS WS 2003/04 Dr. Sabine Glesner Warum formale Semantik? zexakte Definition, wie sich Programme verhalten (natürliche

28

HPS WS 2003/04 Dr. Sabine Glesner28

Definition ASM (Fortsetzung)

Zustände einer ASM:– die (Σ∪∆)-Algebren, deren Einschränkung auf Σ

die statische Algebra A ist

Page 29: Vorlesung Höhere Programmier- sprachen, WS 2002/03 Teil 2 ... file3 3 HPS WS 2003/04 Dr. Sabine Glesner Warum formale Semantik? zexakte Definition, wie sich Programme verhalten (natürliche

29

HPS WS 2003/04 Dr. Sabine Glesner29

Definition ASM (Fortsetzung)

Übergangsregeln in Trans :if Cond then Update1 … Updaten fiUpdatei : f(t1, … , tm) := t0 , f∈∆Sei q ein Zustand, ti Terme über Σ∪∆ mit Interpretationen xi in q Updatei definiert neue Interpretation von f :

– f(x1, … , xm) :=x0 falls q ² ti = xi

– f(x1, … , xm) := fq(x1, … , xm) sonstUpdates werden parallel ausgeführt

Page 30: Vorlesung Höhere Programmier- sprachen, WS 2002/03 Teil 2 ... file3 3 HPS WS 2003/04 Dr. Sabine Glesner Warum formale Semantik? zexakte Definition, wie sich Programme verhalten (natürliche

30

HPS WS 2003/04 Dr. Sabine Glesner30

Beispiel: Speicher

Funktionssymbol S: spezifiziert Speicherzustände– Argumente: Platzhalter für Variablen– Ergebnisterm: aktueller Wert der Variablen

Zuweisung x:=v an Variable x:– verändert Speicherzustand

Sei I(S) alte InterpretationNeue Interpretation:

– wie I(S) außer I(S(x)) = I(v)

Sx

I(S(x))

Wert der Variablen x im Zustand mit Interpretation I

Page 31: Vorlesung Höhere Programmier- sprachen, WS 2002/03 Teil 2 ... file3 3 HPS WS 2003/04 Dr. Sabine Glesner Warum formale Semantik? zexakte Definition, wie sich Programme verhalten (natürliche

31

HPS WS 2003/04 Dr. Sabine Glesner31

Grundlage für ASM-Spezifikation

Grundlage: Abstrakter Syntaxbaum (AST) mit seinen Continuations (statisch berechenbar)

S B Not

Repeat

opd

cond

NT

TT

NT

I

T

S

S

B While

cond

NT

TT

TI

Page 32: Vorlesung Höhere Programmier- sprachen, WS 2002/03 Teil 2 ... file3 3 HPS WS 2003/04 Dr. Sabine Glesner Warum formale Semantik? zexakte Definition, wie sich Programme verhalten (natürliche

32

HPS WS 2003/04 Dr. Sabine Glesner32

ASM-Semantik-Spezifikation

AST mit ContinuationsKnoten im AST haben Sorten:– festgelegt durch abstrakte Syntax – z.B. While, Assignment, Proc-Call, etc.

Zustand der ASM enthält CT (current task)– zeigt auf aktuellen Knoten im AST

Transitionsregeln spezifisch für Knotensorten

Page 33: Vorlesung Höhere Programmier- sprachen, WS 2002/03 Teil 2 ... file3 3 HPS WS 2003/04 Dr. Sabine Glesner Warum formale Semantik? zexakte Definition, wie sich Programme verhalten (natürliche

33

HPS WS 2003/04 Dr. Sabine Glesner33

Beispiel While-Schleife

if CT ∈Whilethen

if value(cond) = true then CT := CT.TT

else CT := CT.FTfi

fi

CT.TT steht für ´´true task´´, CT.FT steht für ´´false task´´

Page 34: Vorlesung Höhere Programmier- sprachen, WS 2002/03 Teil 2 ... file3 3 HPS WS 2003/04 Dr. Sabine Glesner Warum formale Semantik? zexakte Definition, wie sich Programme verhalten (natürliche

34

HPS WS 2003/04 Dr. Sabine Glesner34

Beispiel Zuweisung

if CT ∈ Assígn then

S(CT.lhs) := CT.rhs ;

CT := CT.NT

fi

lhs steht für left-hand side, rhs steht für right-hand side,

bezeichnet linke und rechte Seite der Zuweisung.

Statische Semantik hat geprüft, dass lhs Speicherstelle bezeichnet.

Page 35: Vorlesung Höhere Programmier- sprachen, WS 2002/03 Teil 2 ... file3 3 HPS WS 2003/04 Dr. Sabine Glesner Warum formale Semantik? zexakte Definition, wie sich Programme verhalten (natürliche

35

HPS WS 2003/04 Dr. Sabine Glesner35

Wert von Variablen

if CT ∈ Var

then value(CT) := S(CT.Id);

fi

Page 36: Vorlesung Höhere Programmier- sprachen, WS 2002/03 Teil 2 ... file3 3 HPS WS 2003/04 Dr. Sabine Glesner Warum formale Semantik? zexakte Definition, wie sich Programme verhalten (natürliche

36

HPS WS 2003/04 Dr. Sabine Glesner36

Bindungen und Gültigkeitsbereiche

Modellierung mit dynamischer Funktion:– Cur_Bindings : () → Bindings

funktioniert für ungeschachtelte Gültigkeitsbereiche

Geschachtelte Gültigkeitsbereiche:– Stacklevel: () → Naturals– aktualisiert beim Betreten und Verlassen von

Blöcken– Cur_Bindings : Naturals → Bindings

für geschachtelte Gültigkeitsbereiche

Page 37: Vorlesung Höhere Programmier- sprachen, WS 2002/03 Teil 2 ... file3 3 HPS WS 2003/04 Dr. Sabine Glesner Warum formale Semantik? zexakte Definition, wie sich Programme verhalten (natürliche

37

HPS WS 2003/04 Dr. Sabine Glesner37

Zusammenfassung ASMs – Teil 1

geeignet für die Spezifikation aller Arten von Programmiersprachen

– auch für kompletten Sprachumfang– relativ leicht verständlich

Grundlage AST – konstant während spezifizierter Ausführung– enthält statisch berechenbare Continuations

Zeiger (CT, current task) auf aktuell auszuführenden Knoten im AST,CT ist Teil des ZustandsZustand ist Interpretation (Struktur) einer Logik erster Stufe

Page 38: Vorlesung Höhere Programmier- sprachen, WS 2002/03 Teil 2 ... file3 3 HPS WS 2003/04 Dr. Sabine Glesner Warum formale Semantik? zexakte Definition, wie sich Programme verhalten (natürliche

38

HPS WS 2003/04 Dr. Sabine Glesner38

Zusammenfassung ASMs – Teil 2

Zustände interpretieren statische und dynamische FunktionssymboleZustandsübergänge legen (neue) Funktionswerte für bestimmte Argumente festBerechnete Werte werden Knoten im AST zugeordnetBindungen und Gültigkeitsbereiche werden explizit über Stacks modelliertÄnderungen im Speicherzustand lassen sich direkt darstellenVerteilte ASMs modellieren nebenläufige Prozesse

Page 39: Vorlesung Höhere Programmier- sprachen, WS 2002/03 Teil 2 ... file3 3 HPS WS 2003/04 Dr. Sabine Glesner Warum formale Semantik? zexakte Definition, wie sich Programme verhalten (natürliche

39

HPS WS 2003/04 Dr. Sabine Glesner39

Beispiele für ASM-Spezifikationen I

Folge von Zuweisungenif CT ∈ Assígn then

S(CT.lhs) := CT.rhs ;

CT := CT.NT

fi

Zuweisung 2Zuweisung 1CT CT.NT CT.NT

Nach Abarbeitung der Zuweisung 1:CT := CT.NT

Page 40: Vorlesung Höhere Programmier- sprachen, WS 2002/03 Teil 2 ... file3 3 HPS WS 2003/04 Dr. Sabine Glesner Warum formale Semantik? zexakte Definition, wie sich Programme verhalten (natürliche

40

HPS WS 2003/04 Dr. Sabine Glesner40

Beispiele für ASM-Spezifikationen II

While-Schleife

if CT ∈Whilethen

if value(cond) = true then CT := CT.TT

else CT := CT.FTfi

fi

While S

B

cond

TTFT

NT

Steuerfluß

Datenfluß

Anweisungssequenzen

Knoten im AST

Page 41: Vorlesung Höhere Programmier- sprachen, WS 2002/03 Teil 2 ... file3 3 HPS WS 2003/04 Dr. Sabine Glesner Warum formale Semantik? zexakte Definition, wie sich Programme verhalten (natürliche

41

HPS WS 2003/04 Dr. Sabine Glesner41

Semantik eines kleinen Programms

Semantik des Programms:

x := 2;while x < 3 do

x := x+1;od;

Zustand: Liste von Variablenbelegunginitialer Zustand: leere Liste []Übungsaufgabe: Berechne nach ASM-Semantik die Zustandsübergangsfolge des Programms