Metody realizacji języków programowania/MRJP Ćwiczenia 12

Z Studia Informatyczne
Przejdź do nawigacjiPrzejdź do wyszukiwania

Wstęp

W poniższych zadaniach używamy m.in. następujących definicji funkcji

 S f g x = (f x) (g x)
 K x y = x
 main = S K K 7

Zadanie - zmienne nielokalne

Rozważmy język ze strukturą blokową i funkcjami lokalnymi (np. wariant Pascala), dopuszczający funkcje jako argumenty i wyniki funkcji. Podaj przykład funkcji dającej w wyniku swoją funkcję lokalną, oraz jej wywołania, które mogą przysporzyć kłopotu przy klasycznej implementacji ze stosem rekordów aktywacji. Wyjaśnij, jaka będzie zawartość stosu po takim wywołaniu i na czym polega problem.

Zadanie - szablony i redukcje

  • Zbuduj szablony dla funkcji main, S, K.
  • Prześledź redukcję funkcji main (obliczenie programu)

Zadanie - G-maszyna

  • Wygeneruj kod dla funkcji main, S, K.
  • Prześledź wykonanie przez G-maszynę kodu dla funkcji main.