SW wykład 5 - Slajd9: 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:sw0508.png|center|frame]]
[[Grafika:sw0508.png|center|frame]]
Problem określenia nowej, niewykorzystywanej dotychczas lokacji można
rozwiązywać na wiele sposobów. Tak czy inaczej, niezbędne jest
przechowywanie dodatkowej informacji o już wykorzystywanych lokacjach.
Przyjmiemy tu bardzo proste rozwiązanie --- nawet jeśli jest ono
zbytnio uproszczone dla potrzeb praktycznej realizacji języków, czy
nawet ich opisu semantycznego w bardziej złożonych sytuacjach (gdy na
przykład chcemy wprowadzić opis "odśmiecania pamięci"), to jest on w
zupełności wystarczający dla celów opisu semantyki konstrukcji tu
omawianych.
Przyjmiemy, że lokacje to po prostu liczby naturalne --- możemy też
myśleć tu o nich jako o numerach rzeczywistych lokacji. Rozszerzymy
też składy tak, by ich dziedzina obejmowała dodatkowy argument,
któremu stany przypiszą pierwszą jeszcze niewykorzystywaną
lokację. Zatem wszystkie lokacje o numerach mniejszych niż przypisana
temu znacznikowi mogły być wykorzystywane, a lokacje o tym numerze i
większych pozostają "wolne".
Klauzule semantyczne dla deklaracji zmiennych można teraz już
sformułować w pełni ściśle. Klauzula dla pustego ciągu deklaracji nie
ulega zmianie. Istotna zmiana w klauzuli dla deklaracji zmiennej to
przyjęcie, że nowa lokacja, którą przypiszemy deklarowanej zmiennej
zadana jest przez wartość składu na wprowadzonym wyżej
znaczniku. Środowisko modyfikujemy jak poprzednio, a skład
modyfikujemy "przesuwając" wartość znacznika o jeden w górę i
przypisując wykorzystanej właśnie lokacji "błąd".

Aktualna wersja na dzień 14:12, 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.

Problem określenia nowej, niewykorzystywanej dotychczas lokacji można rozwiązywać na wiele sposobów. Tak czy inaczej, niezbędne jest przechowywanie dodatkowej informacji o już wykorzystywanych lokacjach. Przyjmiemy tu bardzo proste rozwiązanie --- nawet jeśli jest ono zbytnio uproszczone dla potrzeb praktycznej realizacji języków, czy nawet ich opisu semantycznego w bardziej złożonych sytuacjach (gdy na przykład chcemy wprowadzić opis "odśmiecania pamięci"), to jest on w zupełności wystarczający dla celów opisu semantyki konstrukcji tu omawianych.

Przyjmiemy, że lokacje to po prostu liczby naturalne --- możemy też myśleć tu o nich jako o numerach rzeczywistych lokacji. Rozszerzymy też składy tak, by ich dziedzina obejmowała dodatkowy argument, któremu stany przypiszą pierwszą jeszcze niewykorzystywaną lokację. Zatem wszystkie lokacje o numerach mniejszych niż przypisana temu znacznikowi mogły być wykorzystywane, a lokacje o tym numerze i większych pozostają "wolne".

Klauzule semantyczne dla deklaracji zmiennych można teraz już sformułować w pełni ściśle. Klauzula dla pustego ciągu deklaracji nie ulega zmianie. Istotna zmiana w klauzuli dla deklaracji zmiennej to przyjęcie, że nowa lokacja, którą przypiszemy deklarowanej zmiennej zadana jest przez wartość składu na wprowadzonym wyżej znaczniku. Środowisko modyfikujemy jak poprzednio, a skład modyfikujemy "przesuwając" wartość znacznika o jeden w górę i przypisując wykorzystanej właśnie lokacji "błąd".