SW wykład 4 - Slajd1
Semantyka denotacyjna Dziedziny składniowe i semantyczne Funkcje semantyczne Kompozycjonalność Tiny. Semantyka denotacyjna Tiny. Semantyka denotacyjna, c.d. Pojęcia pomocnicze Pojęcia pomocnicze, c.d. |Tiny. Semantyka denotacyjna, c.d. Tiny. Semantyka denotacyjna, c.d. Problem z while Konstrukcje stałopunktowe Konstrukcje stałopunktowe, c.d. Konstrukcje stałopunktowe, c.d. Przykład Przykład, c.d. Dowód Dowód Zgodność semantyki denotacyjnej

Przejdźmy teraz do prezentacji kolejnej metody definiowania semantyki języków programowania: semantyki denotacyjnej.
(Uwaga: "denotacyjny" to nie jest piękne polskie słowo, ale tę terminologię można już uznać za powszechnie przyjętą, szczególnie, że nie bardzo potrafimy znaleźć rdzennie polski odpowiednik. "Semantyka znaczeniowa" z pewnością nie brzmi lepiej...)
Podstawowy pomysł jest dość oczywisty i tak naprawdę był już w tych materiałach wcześniej wykorzystywany. Otóż: semantykę programów i innych fraz języka opisujemy tu przypisując im wprost ich znaczenia --- pewne matematyczne obiekty. Funkcje, przypisujące frazom języka ich znaczenia też zresztą często nazywa się semantyką, choć my będziemy się starali systematycznie używać określenia "funkcje semantyczne".
Definiując semantykę denotacyjną języka programowania, jak zwykle rozpoczynamy od zdefiniowania jego składni. Napisy, tworzące poprawne frazy poszczególnych kategorii składniowych języka, tworzą zbiory, zwane tu "dziedzinami syntaktycznymi". Zaczynamy więc od ich definicji.
Podobnie, zbiory obiektów, które potencjalnie mogą być znaczeniami fraz języka, nazywane są tu "dziedzinami semantycznymi". Ich precyzyjna definicja to kolejny krok definiowania semantyki denotacyjnej języka.
W końcu definiujemy funkcje semantyczne: dla danej kategorii składniowej języka, funkcja taka przypisuje frazom tej kategorii (elementom odpowiadającej tej kategorii dziedziny syntaktycznej) ich znaczenia (elementy odpowiadającej jej dziedziny semantycznej).
Kluczową cechą denotacyjnej metody opisu semantyki jest jej kompozycjonalność: znaczenie każdej frazy języka zależy jedynie od znaczeń jej bezpośrednich składowych. Podkreślmy: od ich znaczeń, nie od ich postaci. Definiując znaczenie danej frazy języka określamy je więc jednolicie względem znaczeń jej bezpośrednich składowych, nie pozwalając sobie na analizę ich syntaktycznej postaci, czy na sięganie "w głąb" po znaczenia właściwych pod-składowych tychże składowych.