Ladda ner presentationen
Presentation laddar. Vänta.
Publicerades avHåkan Fransson
1
2003-11-18Lennart Edblom, Frank Drewes, Inst. f. datavetenskap 1 Föreläsning 6: Semantik Statisk semantik Attributgrammatiker Dynamisk semantik Axiomatisk semantik: inferensregler och korrekthetsbevis
2
2003-11-18Lennart Edblom, Frank Drewes, Inst. f. datavetenskap 2 Statisk semantik Semantik = programmens betydelse Statisk semantik = semantiska aspekter som inte direkt har att göra med programmets exekvering oftast frågor i samband med deklarationer: typkontroller, (icke) deklarerade identifierare, … innefattar ”icke kontextfri syntax” int i; i = 3.3; // typfel! Typkontroll i Java: procedure p is end q; -- fel namn! Namnupprepning i Ada:
3
2003-11-18Lennart Edblom, Frank Drewes, Inst. f. datavetenskap 3 Attributgrammatiker Attributgrammatiker (Knuth 1968) är används ofta för att beskriva statisk semantik men kan t.o.m. användas för att översätta program helt och hållet. Idé: Härledningsträdets noder förses med attribut varje attribut har ett värde (tal, sträng, graf, …) värdet beror på förälderns och syskonens attributvärden (ärvt attribut) eller barnens attributvärden (syntetiserat attribut) attributvärden utvärderas rekursivt
4
2003-11-18Lennart Edblom, Frank Drewes, Inst. f. datavetenskap 4 Attributgrammatiker (2) Typer av attribut i överblick Syntetiserat värde beror på barnens attributvärden informationsflöde uppåt Ärvt värde beror på förälderns och syskonens attributvärden informationsflöde nedåt Inneboende (eng. intrinsic) syntetiserade attribut på trädens löv som är definierade ”på något annat ställe än i attributgrammatiken” finns inte i ”rena” attributgrammatiker
5
2003-11-18Lennart Edblom, Frank Drewes, Inst. f. datavetenskap 5 Attributgrammatiker – exempel Attribut: syntaktiska regler assign var = expr expr 0 expr 1 + expr 2 expr integer expr real expr var Krav: expr 0. actual expr 0. expected ´expected´typen som ett uttryck väntas ha(ärvt) ´actual´typen som ett uttryck faktiskt har(syntetiserat) ´type´variablens typ enligt deklarationen(inneboende) expr . actual = var . type expr . actual = real expr . actual = int expr i. expected = expr 0. expected där i {1,2} expr 0. actual = intom expr 1. actual expr 2. actual int = realannars expr . expected = var . type semantiska regler
6
2003-11-18Lennart Edblom, Frank Drewes, Inst. f. datavetenskap 6 Dynamisk semantik Dynamisk semantik är den delen av semantiken som är nära relaterad till programexekveringen Det finns många sätt att definiera den dynamiska semantiken för ett programspråk, bl a operationell semantik denotationell semantik axiomatisk semantik
7
2003-11-18Lennart Edblom, Frank Drewes, Inst. f. datavetenskap 7 Operationell semantik Definiera en abstrakt maskin med enkla primitiva operationer Definiera olika språkkonstruktioners betydelse genom att använda den abstrakta maskinens operationer Fördel: konkret och intuitivt begriplig Nackdelar Ej lämplig för att bevisa egenskaper (ex korrekthet) Måste definiera den abstrakta maskinen otvetydigt Tenderar att föreslå en viss implementation
8
2003-11-18Lennart Edblom, Frank Drewes, Inst. f. datavetenskap 8 Denotationssemantik Syntaktiska konstruktioner avbildas på matematiska objekt m.h.a semantiska funktioner Dessa matematiska objekt är satsernas/uttryckens värde/betydelse, kan behandlas matematiskt Beskriver hur ett abstrakt tillstånd förändras Ett uttrycks värde definieras m.h.a deluttryckens värde Klarar alla sekvensiella p-språkskonstruktioner (men vissa är komplicerade att beskriva!) Kan vara för detaljerad
9
2003-11-18Lennart Edblom, Frank Drewes, Inst. f. datavetenskap 9 Axiomatisk semantik Ligger nära programspråket självt Användbar för att bevisa saker om program, men säger bara indirekt något om betydelsen Omständliga bevis, kräver datorstöd Klarar ej komplicerade konstruktioner, t ex sidoeffekter
10
2003-11-18Lennart Edblom, Frank Drewes, Inst. f. datavetenskap 10 Axiomatisk semantik Satsernas semantisk innebörd beskrivs mha inferensregler som tillåter att härleda logiska formler på formen { P } S { Q } Om P är sant direkt före att S exekveras så är Q sant direkt efteråt. förhandsvillkor predikatlogisk formel som antas vara sann innan S exekveras satsen som det handlar om efterhandsvillkor predikatlogisk formel som är sann efter att S exekverats
11
2003-11-18Lennart Edblom, Frank Drewes, Inst. f. datavetenskap 11 De viktigaste inferensreglerna Q där varje förekomst av x ersätts med E { Q x E } x E { Q } Tilldelningsaxiomet { P } S { Q } P P', { P' } S { Q' }, Q' Q Konsekvensregeln
12
2003-11-18Lennart Edblom, Frank Drewes, Inst. f. datavetenskap 12 De viktigaste inferensreglerna (2) Sekvensregeln { P } S 1; S 2 { Q } { P } S 1 { P' }, { P' } S 2 { Q } Urvalsregeln { P } if B then S 1 else S 2 { Q } { P B } S 1 { Q }, { P B } S 2 { Q }
13
2003-11-18Lennart Edblom, Frank Drewes, Inst. f. datavetenskap 13 De viktigaste inferensreglerna Loopregeln (endast partiell korrekthet) { I } while B do S end { B I } { B I } S { I } loopinvarianten I är sann såväl före loopen som efter varje exekvering av S, dvs även efter loopen invarianten brukar beskriva förhållandet mellan variablerna som förekommer i S total korrekthet =partiell korrekthet + loopen kommer att avslutas
14
2003-11-18Lennart Edblom, Frank Drewes, Inst. f. datavetenskap 14 Ett korrekthetsbevis { x 0 } a 0; b 0; while b x do a a + y; b b + 1 end { a = x y } { x 0 a 0 } { x 0 a b 0 } tilldelningsaxiom (+konsekvensregel) { b x a b y } I { b x a – y b y }{ b + 1 x a (b + 1) y } { b x a b y } B I { b x a b y } I { (b x) b x a b y } B I { b x a b y }
Liknande presentationer
© 2024 SlidePlayer.se Inc.
All rights reserved.