SW wykład 5 - Slajd9: Różnice pomiędzy wersjami
Nie podano opisu zmian |
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
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".