Pok-13-wyk-Slajd29
Środowisko czasu wykonania – zmienne nielokalne(1)
Dla przedstawionego wcześniej przykładowego programu w języku Pascal rozważmy następujący ciąg wywołań podprogramów A->B->C->D->B i przyjrzyjmy się stosowi rekordów aktywacji poszczególnych instancji podprogramów.
W momencie, gdy dochodzi do wykonania przypisania „p:=q+s”, to oczywiste jest, że chodzi o zmienne p i s, które są lokalnymi zmiennymi w podprogramie B, ale co ze zmienną q ?
Zgodnie z omówionymi wcześniej regułami widzialności statycznej wykorzystywanej w Pascalu chodzi o zmienną zadeklarowaną w podprogramie A.
Niektóre języki korzystają jednak z tzw. reguły widzialności dynamicznej (np. APN, Snobol i Lisp). W tym przypadku wiązanie nazwy z deklaracją odbywa się dynamicznie, w trakcie wykonywania programu. W przypadku wiązania dynamicznego poszukujemy w stosie rekordów aktywacji ostatniego wystąpienia zmiennej q – w przedstawionym przykładzie jest to zmienna lokalna procedury C.
Niezależnie od tego, która reguła widzialności jest stosowana w danym języku środowisko czasu wykonania musi zapewnić odpowiednie mechanizmy wyszukania właściwego wystąpienia zmiennej w stosie rekordów aktywacji.