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

Z Studia Informatyczne
Przejdź do nawigacjiPrzejdź do wyszukiwania
Tarlecki (dyskusja | edycje)
Nie podano opisu zmian
Dorota (dyskusja | edycje)
Nie podano opisu zmian
 
Linia 8: Linia 8:
zbytnio uproszczone dla potrzeb praktycznej realizacji języków, czy
zbytnio uproszczone dla potrzeb praktycznej realizacji języków, czy
nawet ich opisu semantycznego w bardziej złożonych sytuacjach (gdy na
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
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
zupełności wystarczający dla celów opisu semantyki konstrukcji tu
omawianych.
omawianych.

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