Metody realizacji języków programowania
Z Studia Informatyczne
Forma zajęć
Wykład (30 godzin) + ćwiczenia (30 godzin)
Opis
Celem wykładu jest przedstawienie najważniejszych algorytmów i struktur danych służących kompilacji i wykonywaniu skompilowanych programów. Omówione zostaną: maszyna wirtualna czyli środowisko wykonywania programów, tablica symboli, algorytmy syntezy kodu wynikowego i jego optymalizacji. Przedstawione też zostaną wybrane zaawansowane zagadnienia kompilacji: kompilacja języków funkcyjnych, kompilacja języków z wątkami współbieżnymi i procesami rozproszonymi, obsługa sygnałów sytuacji wyjątkowych.
Sylabus
Autor
- Andrzej Salwicki
Wymagania wstępne
- Programowanie obiektowe
- Języki, automaty i obliczenia
Zawartość
- Analiza kodu źródłowego
- Analiza leksykalna
- Analiza składniowa
- Analiza poprawności typów (statyczna analiza semantyczna)
- Synteza
- Generowanie kodu pośredniego
- Optymalizacja kodu
- Generowanie kodu wynikowego
- Środowisko czasu wykonania (maszyna wirtualna)
- Zarządzanie pamięcią
- Odśmiecanie
Literatura
- A. Aho, R. Sethi, J. Ullman. Kompilatory. WNT, 2001.
- W. Waite, G. Goos, Konstrukcja kompilatorów, WNT, 1989
- D. Gries Konstrukcja translatorów dla maszyn cyfrowych ,WNT, 1984
Moduły
- Wstęp (Ćwiczenia)
- Tablica symboli (Ćwiczenia)
- Statyczna analiza semantyczna (Ćwiczenia)
- Maszyna wirtualna I (Ćwiczenia)
- Maszyna wirtualna II (Ćwiczenia)
- Generowanie kodu pośredniego (Ćwiczenia)
- Sprowadzanie kodu do postaci SSA (Ćwiczenia)
- Optymalizacja kodu pośredniego w postaci SSA (Ćwiczenia)
- Zarządzanie pamięcią. Odśmiecanie (Ćwiczenia)
- Realizacja obsługi sygnałów/wyjątków (Ćwiczenia)
- Optymalizacja II (Ćwiczenia)
- Kompilacja języków programowania funkcyjnego (Ćwiczenia)
- Realizacja obiektów aktywnych (wątków, procesów) w jezyku z procesami współbieżnymi i rozproszonymi (Ćwiczenia)