SW wykład 5 - Slajd1

Z Studia Informatyczne
Wersja z dnia 13:36, 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.

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.