SW wykład 5 - Slajd13

Z Studia Informatyczne
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.

Podamy najpierw semantykę tak rozszerzonego języka TINY przyjmując wiązanie dynamiczne.

Wprowadzamy dwie nowe dziedziny semantyczne. Pierwsza to dziedzina środowisk procedur, które są funkcjami przypisującymi identyfikatorom znaczenia procedur (lub sygnał błędu, mówiący, że w danym środowisku procedura o tym identyfikatorze nie została zadeklarowana). Druga zaś to dziedzina znaczeń procedur bezparametrowych, które są funkcjami, przyjmującymi jako argumenty kolejno środowisko zmiennych, środowisko procedur i skład początkowy, dając w wyniku skład końcowy (lub sygnalizując błąd).

Modyfikujemy odpowiednio semantykę instrukcji, których znaczenia teraz muszą też przyjmować jako dodatkowy argument środowisko procedur. Zauważmy, że przy dynamicznym wiązaniu zmiennych dziedziny znaczeń instrukcji i znaczeń procedur są tożsame. Nieformalnie: procedury to po prostu nazwane instrukcje.

Dodajemy też semantykę deklaracji procedur, które tu są funkcjami przekształcającymi środowiska procedur (z uwzględnieniem możliwości sygnalizacji błędu). Zauważmy, że semantyka ta nie dopuszcza, by deklaracje procedur modyfikowały skład --- taka możliwość nie będzie nam tu poprzednia.

Funkcje semantyczne dla innych kategorii syntaktycznych (wyrażenia, deklaracje zmiennych) nie ulegają zmianie --- procedury nie są w nich wykorzystywane.