SW wykład 5 - Slajd9
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".