SWP-Assignment Sprachen · SWP-Assignment Sprachen Bernhard Aichernig Institut für...
Transcript of SWP-Assignment Sprachen · SWP-Assignment Sprachen Bernhard Aichernig Institut für...
Institute for Software Technology
SWP-Assignment Sprachen
Bernhard Aichernig Institut für Softwaretechnologie [email protected]
Institute for Software Technology 2
Inhalt
! Semantik: ! Einfache Assignmentsprachen ! Assignmentsprachen mit Pointerkonzept
Semantik
Institute for Software Technology 3
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 Technology 4
Syntax von AL über ℜ 1. Ist v∈IVS 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 ist if B then a1 else a2 ∈ AL
4. Ist B ∈ PL0(ℜ) und ist a1 ∈ AL dann ist while B do a1 ∈ AL
Institute for Software Technology 5
Anmerkung
! AL ist (derzeit) auf 2-elementige begin-end Blöcke limitiert.
Institute for Software Technology 6
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 Technology 7
Semantikfunktion für AL • IAL: ENV×AL → ENV (über Datentyp ℜ) ! Um IAL zu definieren brauchen wir
Evaluierungsfunktionen der ! Prädikatenlogischen Ausdrücke IPL :
ENV×PL(ℜ) = {T,F} ! Terme IT: ENV×T(ℜ) = A
! Diese Evaluierungsfunktionen wurden bereits behandelt.
Institute for Software Technology 8
Semantikdefinition ! IAL(ω,v := t) = ω‘
mit ω‘(v)=IT(ω,t) und ω‘(w)= ω(w) für w≠v ! 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 Technology 9
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 Technology 10
Verifikation
! Durch Hoare-Logik (siehe Einführung in die Informatik)
Institute for Software Technology
POINTER (ZEIGER)
11
Institute for Software Technology 12
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 Technology 13
Speicherstellen
! Trennung von Speicher und Variablen
1 2 3 4 5 ..
x
y [ ]
Adresse Wert
Institute for Software Technology 14
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 Technology 15
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 Technology 16
Semantik von ALP
! Semantikfunktion IALP: ENV×STATE×AL → ENV×STATE
! z.B.: Für Assignments IALP(ω,σ,v := t) = (ω,σ‘)
mit σ‘(ω(v))=IT(ω,σ,t) und σ‘(ω(w))=σ(ω(w)) für w≠v
! ⇒ Semantikfunktion von Termen muss ebenfalls abgeändert werden
Institute for Software Technology 17
Abgeänderte Semantik von T
! IT(ω,σ,c) = c0 für c∈Γ und ω∈ENV, σ∈STATE
! IT(ω,σ,v) = σ(ω(v)) für v∈IVS und ω∈ENV, σ∈STATE
! IT(ω,σ,f(t1,..,tn)) = f0(IT(ω,σ,t1),..,IT(ω,σ,tn)) für ti∈T und ω∈ENV, σ∈STATE
Institute for Software Technology 18
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 Technology 19
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 Technology 20
Erweiterung der Semantik
! IAL(ω,σ,ref v := ref w) = (ω‘,σ) mit ω‘(v)=ω(w) und ω‘(u)=ω(u) für u≠v
Institute for Software Technology 21
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 Technology 22
Zusammenfassung AL
! Zustandsänderungen aufgrund von Befehlausführungen
! Semantik mit und ohne Zeiger ! Wertkopien vs. Bindings ! Seiteneffekte möglich