23
Institute for Software Technology SWP-Assignment Sprachen Bernhard Aichernig und Alexander Felfernig Institut für Softwaretechnologie {aichernig, alexander.felfernig}@ist.tugraz.at

SWP-Assignment Sprachen - ist.tugraz.at · Institute for Software Technology 12 Problemstellung Bisherige Definition der Semantik (von AL): Abbildung ENV x AL auf ENV ENV war die

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Institute for Software Technology

SWP-Assignment Sprachen

Bernhard Aichernig und Alexander Felfernig

Institut für Softwaretechnologie{aichernig, alexander.felfernig}@ist.tugraz.at

Institute for Software Technology2

Inhalt

Semantik:

Einfache Assignmentsprachen

Assignmentsprachen mit Pointerkonzept

Semantik

Institute for Software Technology3

Funktionale vs.

Assignmentsprachen

Funktionale Sprachen

Kein Zuordnungsbegriff

Variablen werden interpretiert

Variablenwerte werden nicht verändert

Rekursive, mathematische Definition

Assignmentsprachen (AL) / Imperative Sprachen

Basierend auf dem Zuordnungsprinzip

Variablen werden Terme zugeordnet, die deren Wert

verändern.

Institute for Software Technology4

Syntax von AL über

1. Ist vIVS und ist t ein Term über , dann ist v := t AL

2. Sind a1,a2 AL dann ist begin a1;a2 end AL

3. Ist B PL0() (= Menge der quantorenfreien Formeln aus PL()) und sind a1,a2 AL dann istif B then a1 else a2 AL

4. Ist B PL0() und ist a1 AL dann istwhile B do a1 AL

Institute for Software Technology5

Anmerkung

AL ist (derzeit) auf 2-elementige

begin-end Blöcke limitiert.

Institute for Software Technology6

Beispiel - Multiplikation

Datentyp: Natürliche Zahlen (inkl. 0)

begin

z := 0;

while =(y,0) do begin

z := + (z,x);

y := -(y,1)

end

end

Institute for Software Technology7

Semantikfunktion für AL

• IAL: ENVAL → ENV (über Datentyp )

Um IAL zu definieren brauchen wir

Evaluierungsfunktionen der

Prädikatenlogischen Ausdrücke IPL :

ENVPL() = {T,F}

Terme IT: ENVT() = A

Diese Evaluierungsfunktionen wurden

bereits behandelt.

Institute for Software Technology8

Semantikdefinition IAL(,v := t) = ‘

mit ‘(v)=IT(,t) und ‘(w)= (w) für wv

IAL(, begin a1;a2 end ) = IAL(IAL(,a1),a2)

IAL(, if P then a1 else a2) = IAL(, a1) wenn IPL(,P)=T

IAL(, if P then a1 else a2) = IAL(, a2) wenn IPL(,P)=F

IAL(, while P do a1) = IAL(IAL(, a1), while P do a1) wenn IPL(,P)=T

IAL(, while P do a1) = wenn IPL(,P)=F

Institute for Software Technology9

Anmerkungen zu AL

Syntax und Semantik sind sehr einfach

Keine Prozeduraufrufe

Keine Unterscheidung zwischen

Variablenwert und Speicher

Keine Seiteneffekte

z.B. in C:if (x=y+1)==2 then x=x-1;

Institute for Software Technology10

Verifikation

Durch Hoare-Logik (siehe Einführung in

die Informatik)

Institute for Software Technology

POINTER (ZEIGER)

11

Institute for Software Technology12

Problemstellung

Bisherige Definition der Semantik (von AL): Abbildung ENV x AL auf ENV

ENV war die Menge aller Funktionen von Variablen auf deren Werte

Pro Variable wird ein Wert gespeichert

Kein Konzept von Speicherstelle vorhanden

In realen Programmiersprachen ist es wichtig auf Speicherstellen zugreifen zu können Einführung von Datentypen (Listen, Bäume,...)

Effizienz (Übergabe großer Strukturen,...)

Institute for Software Technology13

Speicherstellen

Trennung von Speicher und Variablen

1

2

3

4

5

..

x

y [ ]

Adresse Wert

Institute for Software Technology14

Formale Betrachtungsweise

Neue Definition von Variablenenvironments notwendig.

Ein Variablenenvironment ist eine Abbildung von Variablen auf Locations.ENV, : IVS → LOC

Ein State ist eine Funktion von Locations auf deren Werte.STATE, : LOC → A

LOC (= Menge aller Locations) selber stellen wir als Menge von Adressen {1,2,..} dar.

Institute for Software Technology15

Anmerkungen

Zeigt eine Variable x auf eine Speicherstelle (=Location) s, dann sagen wir, dass x auf s gebunden ist (Binding).

Eine Speicherstelle in unserer Definition hält Werte aus dem gewählten Datentyp!

Die Semantik von AL muss abgeändert werden.

Institute for Software Technology16

Semantik von ALP

Semantikfunktion

IALP: ENVSTATEAL → ENVSTATE

z.B.: Für Assignments

IALP(,,v := t) = (,‘)

mit ‘((v))=IT(,,t) und

‘((w))=((w)) für wv

Semantikfunktion von Termen

muss ebenfalls abgeändert werden

Institute for Software Technology17

Abgeänderte Semantik von T

IT(,,c) = c0 für c und ENV,

STATE

IT(,,v) = ((v)) für vIVS und

ENV, STATE

IT(,,f(t1,..,tn)) =

f0(IT(,,t1),..,IT(,,tn))

für tiT und ENV, STATE

Institute for Software Technology18

Semantik von ALP

Adaption des begin-end-Blocks:

IALP(,, begin a1;a2 end ) = IAL(‘,‘,a2)

mit (‘,‘) = IAL(,,a1)

Die anderen Änderungen in der

Semantik geschehen analog.

Institute for Software Technology19

Erweiterte Syntax von ALP

Einführung eines Statements, das es erlaubt ein Variablenbinding auf andere Variablen zu übertragen.

Syntaxregel: Sind v und w Variablen, dann ist der Ausdruck ref v := ref w AL

Dieser Ausdruck erlaubt es, die Referenz von w auf v zu übergeben. Nach der Ausführung des Ausdrucks sollen beide Variablen auf die selbe Location zeigen.

Institute for Software Technology20

Erweiterung der Semantik

IAL(,,ref v := ref w) = (‘,)

mit ‘(v)=(w) und ‘(u)=(u) für uv

Institute for Software Technology21

Beispiel (Vergleich)

begin

x := 1;

begin

y := x;

y := 2

end

end

begin

x := 1;

begin

ref y := ref x;

y := 2

end

end

Institute for Software Technology22

Zusammenfassung AL

Zustandsänderungen aufgrund von

Befehlausführungen

Semantik mit und ohne Zeiger

Wertkopien vs. Bindings

Seiteneffekte möglich

Institute for Software Technology

Zusätzliche Übungsbeispiele

als Klausurvorbereitung

www.knowledgecheckr.com

Participation Key: QnGNc9

23