SW wykład 5 - Slajd3

Z Studia Informatyczne
Wersja z dnia 13:49, 29 wrz 2006 autorstwa Dorota (dyskusja | edycje)
(różn.) ← poprzednia wersja | przejdź do aktualnej wersji (różn.) | następna wersja → (różn.)
Przejdź do nawigacjiPrzejdź do wyszukiwania

<<powrót do strony wykładu

Bloki i deklaracje Lokacje Funkcje semantyczne Konwencje notacyjne Instrukcje Klauzule semantyczne Klauzule semantyczne, c.d. Deklaracje Deklaracje, c.d. Semantyka bloków Procedury Wiązania zmiennych Semantyka Tiny++ Semantyka Tiny++ Rekurencja Semantyka procedur rek. Semantyka procedur rek.

Zaproponowane powyżej modyfikacje dziedzin semantycznych prowadzą też oczywiście do modyfikacji funkcji semantycznych i ich definicji.

Semantyka dla stałych liczbowych nie ulega jednak zmianie.

Zgodnie z intuicją o reprezentacji stanu przez środowiska i składy "łącznie", modyfikujemy funkcje semantyczne dla wyrażeń arytmetycznych i logicznych. Funkcje te przypisują teraz wyrażeniom znaczenia, które są funkcjami kolejno oczekującymi dwóch argumentów: środowiska i składu, a następnie dla każdych takich dwóch argumentów (a więc mając dane środowisko i skład) określają wartość (liczbową, dla wyrażeń arytmetycznych, logiczną dla wyrażeń logicznych). Oczywiście, wprowadziwszy "nieokreśloności" do dziedzin środowisk i składów, dopuszczamy też sygnał "abstrakcyjnego błędu" przy określaniu wartości wyrażeń w danym środowisku i składzie.

Spójrzmy na typowe klauzule semantyczne dla wyrażeń. Znaczeniem zmiennej jest funkcja, której argumentem jest środowisko, a wynikiem dla danego środowiska jest funkcja, której argumentem jest skład, a wynikiem --- w zasadzie --- zawartość w tym składzie lokacji przypisanej danej zmiennej w podanym (jako pierwszy argument) środowisku. "W zasadzie", bo takie określenie wyniku możliwe jest tylko, jeśli lokacja przypisana zmiennej jest określona w danym środowisku i, gdy tak jest, wartość przypisana tej lokacji w danym składzie też jest określona. Zatem podanie tej wartości jako wyniku funkcji poprzedzamy w klauzuli sprawdzeniem tych warunków. Jeśli któryś z nich nie zachodzi, wynikiem jest błąd. Podobnie można przeanalizować klauzulę dla wyrażenia będącego sumą dwóch podwyrażeń: jego znaczeniem jest funkcja, która kolejno przyjmując jako swe argumenty środowisko i skład, określa jako wynik sumę wartości podwyrażeń w tymże środowisku i składzie --- ale tylko, jeśli nie pojawiają się sytuacje błędne, które są propagowane.

W tej wersji klauzule te mogą wydać się bardzo skomplikowane, a przede wszystkim niezgrabne i nieczytelne. Spróbujemy wyeksponować ich prostotę przez wprowadzenie pomocniczych notacji i konwencji notacyjnych.