Metody realizacji języków programowania: Różnice pomiędzy wersjami

Z Studia Informatyczne
Przejdź do nawigacjiPrzejdź do wyszukiwania
Salwicki (dyskusja | edycje)
Salwicki (dyskusja | edycje)
Linia 28: Linia 28:
'''Opis''':
'''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, sposoby analizy składniowej: parsery LL(1) i LR(1), algorytmy syntezy kodu wynikowego.
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.  


'''Wymagania wstępne''':
'''Wymagania wstępne''':
Linia 38: Linia 38:
'''Sylabus''':  
'''Sylabus''':  


Kompilator i maszyna wirtualna z lotu ptaka
TODO
Analiza leksykalna. Analiza składniowa zstępująca i wstępująca
Zob. lista tematów wykładów
Tablica symboli. Statyczna analiza semantyczna
Środowisko czasu wykonania: rekordy aktywacji i obiekty.
Kompilacja sterowana składnią. Reguły semantyczne.
Kod pośredni. Postać SSA kodu pośredniego
Optymalizacja kodu
Zarządzanie pamięcią – tworzenie jednostek dynamicznych i odśmiecanie
Obsługa systuacji wyjątkowych i zarządzanie wątkami w procesach współbieżnych i rozproszonych


'''Literatura''':
'''Literatura''':

Wersja z 07:35, 1 lip 2006

Inwokacja

Wszystkich którzy trafią na poniższą stronę proszę o nadsyłanie uwag, protestów, sugestii etc. Dziękuję.

Jak łatwo widać zderzyły się programy zajęć Podstawy kompilatorów i Metody Realizacji Języków Programowania.

Na prośbę prof. Diksa opracowujemy nowy sylabus. Prosimy o uwagi i sugestie.

Opis

Celem tych zajęć 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, sposoby analizy składniowej: parsery LL(1) i LR(1), algorytmy syntezy kodu wynikowego.

Sylabus

Autor sylabusa

prof. dr hab. Andrzej Salwicki

salwicki@mimuw.edu.pl

Nazwa zajęć:

Metody Realizacji Języków Programowania

Typ zajęć:

wykład (30 godz.) + ćwiczenia (30 godz.)

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.

Wymagania wstępne:

  • Programowanie obiektowe
  • Języki, automaty i obliczenia

Sylabus:

TODO Zob. lista tematów wykładów

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
  • Internet

MRJP wprowadza definicje

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

Moduły

  1. Wstęp (Ćwiczenia)
  2. Tablica symboli (Ćwiczenia)
  3. Statyczna analiza semantyczna (Ćwiczenia)
  4. Maszyna wirtualna I (Ćwiczenia)
  5. Maszyna wirtualna II (Ćwiczenia)
  6. Generowanie kodu pośredniego (Ćwiczenia)
  7. Sprowadzanie kodu do postaci SSA (Ćwiczenia)
  8. Optymalizacja kodu pośredniego w postaci SSA (Ćwiczenia)
  9. Zarządzanie pamięcią. Odśmiecanie (Ćwiczenia)
  10. Realizacja obsługi sygnałów/wyjątków (Ćwiczenia)
  11. Optymalizacja II (Ćwiczenia)
  12. Kompilacja języków programowania funkcyjnego (Ćwiczenia)
  13. Realizacja obiektów aktywnych (wątków, procesów) w jezyku z procesami współbieżnymi i rozproszonymi (Ćwiczenia)
  14. Nie istnieje (Ćwiczenia)
  15. Nie istnieje (Ćwiczenia)