SW wykład 5 - Slajd4
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.

Nie będziemy tu wykorzystywanych konwencji notacyjnych wprowadzać bardzo formalnie (choć oczywiście można to zrobić) ---- mamy nadzieję, że wszystkie są one oczywiste i w zasadzie czytelne bez większych wyjaśnień.
Po pierwsze, na ogół rezygnować będziemy z notacji lambda dla definiowania funkcji "na najwyższym poziomie" klauzul semantycznych. Zamiast tego, definiować będziemy te funkcje dla danych (nazwanych) argumentów. Po drugie, wykorzystywać będziemy notacje wygodne dla oznaczenia niektórych wartości pośrednich i warunkowych wyborów. I w końcu, co chyba najważniejsze dla czytelności klauzul, przyjmiemy, że wszelkie nieuwzględnione wyraźnie "błędy abstrakcyjne" są zawsze propagowane.
Wykorzystując te konwencje, podane na poprzednim slajdzie klauzule semantyczne dla zmiennych i dla sumy wyrażeń arytmetycznych możemy już zapisać w znacznie bardziej zwarty i przejrzysty sposób. Podkreślmy jednak, że podane tu ich wersje to tylko skrótowy zapis klauzul z poprzedniego slajdu.
W tej postaci, łatwo już je powiązać z semantyką dla wyrażeń w poprzednim module, gdzie znaczeniem wyrażeń arytmetycznych były funkcje ze stanów w wartości liczbowe. Zachęcamy Państwa do ścisłego określenia tego związku, wykorzystując wprowadzone pojęcie "złożenia" środowiska i składu dla określenia stanu.
Nie będziemy tu jeszcze raz wprowadzać odpowiednio zmodyfikowanych klauzul dla pozostałych konstrukcji językowych budujących wyrażenia arytmetyczne i logiczne --- klauzule dla stałych są oczywiste, klauzulę dla zmiennych podaliśmy, a pozostałe są podobne do podanej powyżej klauzuli dla sumy wyrażeń. Warto się jednak upewnić, choćby przez przejrzenie ich poprzednich wersji, że jasne jest, jak w każdym wypadku powinna wyglądać nowa klauzula.