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 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