SW wykład 5 - Slajd1: Różnice pomiędzy wersjami

Z Studia Informatyczne
Przejdź do nawigacjiPrzejdź do wyszukiwania
Mengel (dyskusja | edycje)
Nie podano opisu zmian
 
Dorota (dyskusja | edycje)
Nie podano opisu zmian
 
(Nie pokazano 2 wersji utworzonych przez 2 użytkowników)
Linia 1: Linia 1:
{{Semantyka i weryfikacja programów/Wykład 5}}
[[Grafika:sw0500.png|center|frame]]
[[Grafika:sw0500.png|center|frame]]
Przedstawiona w poprzednim module semantyka języka TINY pokazała tylko
naprawdę najprostsze idee i techniki semantyki denotacyjnej. Nic w tym
dziwnego: sam język był bardzo prościutki. Przedstawimy teraz kolejno
kilka wzbogaceń języka TINY, rozszerzając go o kolejne konstrukcje
językowe. Wykorzystamy to do pokazania standardowych metod opisu
semantyki (denotacyjnej) dla tych konstrukcji. Z jednej strony
dostarczy to kilku podstawowych narzędzi dla opisu znanych i
oczekiwanych konstrukcji językowych, do których można się wprost
odwoływać budując semantykę bardziej złożonych i bliższych praktyce
języków. Z drugiej zaś, ilustrować to będzie kierunki możliwych
modyfikacji i rozszerzania denotacyjnego podejścia do opisu semantyki
języków programowania.
Zaczniemy od jednego z najbardziej oczywistych, powszechnie znanych i
stosowanych rozszerzeń: wprowadzamy do języka TINY bloki z
deklaracjami lokalnych zmiennych. Rozszerzamy syntaktykę języka TINY,
dodając nową konstrukcję dla instrukcji: instrukcję bloku, która
składa się z ciągu deklaracji zmiennych i z instrukcji --- ciała bloku
--- wspólnie ujętych w "nawiasy" <b>begin</b> ... <b>end</b>. Dodajemy
więc też nową kategorię składniową: deklaracje zmiennych, które są po
prostu ciągami (być może pustymi) nazw deklarowanych zmiennych
(opatrzonych słowem kluczowym <b>var</b>). Deklaracja zmiennej w bloku
udostępnia ją instrukcji ciała tego bloku i jest niewidoczna na
zewnątrz. Zatem jej modyfikacje nie mają bezpośredniego wpływu na
wartości zmiennych wcześniej zadeklarowanych. W szczególności, jeśli
zmienna o tej samej nazwie była już uprzednio zadeklarowana, to ta
"zewnętrzna" zmienna przestaje być czasowo widoczna we wnętrzu bloku
--- a pojawia się niejako ponownie po zakończeniu realizacji tego
bloku.

Aktualna wersja na dzień 13:36, 29 wrz 2006

<<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.

Przedstawiona w poprzednim module semantyka języka TINY pokazała tylko naprawdę najprostsze idee i techniki semantyki denotacyjnej. Nic w tym dziwnego: sam język był bardzo prościutki. Przedstawimy teraz kolejno kilka wzbogaceń języka TINY, rozszerzając go o kolejne konstrukcje językowe. Wykorzystamy to do pokazania standardowych metod opisu semantyki (denotacyjnej) dla tych konstrukcji. Z jednej strony dostarczy to kilku podstawowych narzędzi dla opisu znanych i oczekiwanych konstrukcji językowych, do których można się wprost odwoływać budując semantykę bardziej złożonych i bliższych praktyce języków. Z drugiej zaś, ilustrować to będzie kierunki możliwych modyfikacji i rozszerzania denotacyjnego podejścia do opisu semantyki języków programowania.

Zaczniemy od jednego z najbardziej oczywistych, powszechnie znanych i stosowanych rozszerzeń: wprowadzamy do języka TINY bloki z deklaracjami lokalnych zmiennych. Rozszerzamy syntaktykę języka TINY, dodając nową konstrukcję dla instrukcji: instrukcję bloku, która składa się z ciągu deklaracji zmiennych i z instrukcji --- ciała bloku --- wspólnie ujętych w "nawiasy" begin ... end. Dodajemy więc też nową kategorię składniową: deklaracje zmiennych, które są po prostu ciągami (być może pustymi) nazw deklarowanych zmiennych (opatrzonych słowem kluczowym var). Deklaracja zmiennej w bloku udostępnia ją instrukcji ciała tego bloku i jest niewidoczna na zewnątrz. Zatem jej modyfikacje nie mają bezpośredniego wpływu na wartości zmiennych wcześniej zadeklarowanych. W szczególności, jeśli zmienna o tej samej nazwie była już uprzednio zadeklarowana, to ta "zewnętrzna" zmienna przestaje być czasowo widoczna we wnętrzu bloku --- a pojawia się niejako ponownie po zakończeniu realizacji tego bloku.