Podstawy kompilatorów: Różnice pomiędzy wersjami

Z Studia Informatyczne
Przejdź do nawigacjiPrzejdź do wyszukiwania
Complak (dyskusja | edycje)
Complak (dyskusja | edycje)
Linia 4: Linia 4:
== Opis ==
== Opis ==
Celem przedmiotu jest przedstawienie zasad i technik budowy kompilatorów.
Celem przedmiotu jest przedstawienie zasad i technik budowy kompilatorów.
W ramach przedmiotu przedstawione zostaną zasady ich implementacji zarówno z wykorzystaniem specjalizowanych narzędzi takich jak LEX, YACC i LLgen, jak i z wykorzystaniem uniwersalnych języków programowania wysokiego poziomu, takich jak język C.
W ramach przedmiotu przedstawione zostaną zasady ich implementacji, zarówno z wykorzystaniem specjalizowanych narzędzi, takich jak LEX, YACC i LLgen, jak i z wykorzystaniem uniwersalnych języków programowania wysokiego poziomu, takich jak język C.
Omówione zostaną poszczególne fazy kompilacji poczynając od analizy leksykalnej, poprzez analizę składniową, semantyczną, generację kodu pośredniego i wynikowego po optymalizację kodu. Przedstawione zostaną także zagadnienia dotyczące budowy środowiska wykonawczego.
Omówione zostaną poszczególne fazy kompilacji poczynając od analizy leksykalnej, poprzez analizę składniową, semantyczną, generację kodu pośredniego i wynikowego po optymalizację kodu. Przedstawione zostaną także zagadnienia dotyczące budowy środowiska wykonawczego.


Przedmiot "Podstawy kompilatorów" koncentruje się omówieniu etapu analizy kodu i przedstawieniu narzędzi wykorzystywanych w tworzeniu kompilatorów.
Przedmiot "Podstawy kompilatorów" koncentruje się na omówieniu etapu analizy kodu i przedstawieniu narzędzi wykorzystywanych w tworzeniu kompilatorów.
Pozostałe zagadnienia omówione są szerzej w ramach przedmiotu "Metody realizacji języków programowania".
Pozostałe zagadnienia omówione są szerzej w ramach przedmiotu "Metody realizacji języków programowania".



Wersja z 14:58, 4 wrz 2006

Forma zajęć

Wykład (30 godzin) + laboratorium (30 godzin)

Opis

Celem przedmiotu jest przedstawienie zasad i technik budowy kompilatorów. W ramach przedmiotu przedstawione zostaną zasady ich implementacji, zarówno z wykorzystaniem specjalizowanych narzędzi, takich jak LEX, YACC i LLgen, jak i z wykorzystaniem uniwersalnych języków programowania wysokiego poziomu, takich jak język C. Omówione zostaną poszczególne fazy kompilacji poczynając od analizy leksykalnej, poprzez analizę składniową, semantyczną, generację kodu pośredniego i wynikowego po optymalizację kodu. Przedstawione zostaną także zagadnienia dotyczące budowy środowiska wykonawczego.

Przedmiot "Podstawy kompilatorów" koncentruje się na omówieniu etapu analizy kodu i przedstawieniu narzędzi wykorzystywanych w tworzeniu kompilatorów. Pozostałe zagadnienia omówione są szerzej w ramach przedmiotu "Metody realizacji języków programowania".

Sylabus

Autorzy

  • Bartosz Bogacki
  • Wojciech Complak

Wymagania wstępne

  • Umiejętność konstruowania algorytmów iteracyjnych i rekurencyjnych
  • Umiejętność programowania w imperatywnych językach wysokiego poziomu
  • Podstawowa znajomość architektury procesora i języka asemblera

Zawartość

  • Model kompilatora
    • etapy i fazy kompilacji
  • Analiza leksykalna
    • podstawowe pojęcia
    • języki i wyrażenia regularne
    • niedeterministyczne i deterministyczne automaty skończone
    • implementacja analizatorów leksykalnych w języku C i za pomocą generatora LEX
  • Analiza składniowa
    • podstawowe pojęcia
    • gramatyki bezkontekstowe
    • analiza metodą zstępującą i wstępującą
    • implementacja analizatorów składniowych działających metodą zstępującą w języku C i za pomocą generatora LLgen
    • implementacja analizatorów składniowych działających metodą wstępującą za pomocą generatora YACC
    • translacja sterowana składnią w metodzie zstępującej i wstępującej
    • gramatyki niejednoznaczne
  • Analiza zależności kontekstowych
    • typy zależności kontekstowych
    • implementacja kontrolera typów
  • Synteza kodu i środowisko czasu wykonania
    • generacja kodu pośredniego
    • optymalizacja kodu
    • generacja kodu wynikowego
    • dostęp do nazw nielokalnych
    • dynamiczny przydział pamięci
    • przekazywanie parametrów

Literatura

  • Aho A. V., Sethi R., Ullman J. D., Kompilatory Reguły, metody i narzędzia, WNT 2002
  • Foryś M., Foryś W., Teoria automatów i języków formalnych, Akademicka Oficyna Wydawnicza Exit 2005
  • Tremblay J. P., Sorenson P. G., The Theory and Practice of Compiler Writing, McGraw-Hill, 1985
  • Waite W. M., Goos G., Konstrukcja kompilatorów, WNT 1989
  • Wilhelm R., Maurer D., Compiler Design, Addison-Wesley 1995

Moduły