Wydział Informatyki - Informatyka (N1)
Sylabus przedmiotu Metody kompilacji:
Informacje podstawowe
Kierunek studiów | Informatyka | ||
---|---|---|---|
Forma studiów | studia niestacjonarne | Poziom | pierwszego stopnia |
Tytuł zawodowy absolwenta | inżynier | ||
Obszary studiów | nauki techniczne, studia inżynierskie | ||
Profil | ogólnoakademicki | ||
Moduł | — | ||
Przedmiot | Metody kompilacji | ||
Specjalność | systemy komputerowe i oprogramowanie | ||
Jednostka prowadząca | Katedra Inżynierii Oprogramowania | ||
Nauczyciel odpowiedzialny | Piotr Błaszyński <Piotr.Blaszynski@zut.edu.pl> | ||
Inni nauczyciele | Piotr Błaszyński <Piotr.Blaszynski@zut.edu.pl> | ||
ECTS (planowane) | 4,0 | ECTS (formy) | 4,0 |
Forma zaliczenia | egzamin | Język | polski |
Blok obieralny | 8 | Grupa obieralna | 1 |
Formy dydaktyczne
Wymagania wstępne
KOD | Wymaganie wstępne |
---|---|
W-1 | Zaliczone przedmioty: Programowanie w językach C i Java, Struktury danych, Architektura komputerów |
Cele przedmiotu
KOD | Cel modułu/przedmiotu |
---|---|
C-1 | Ukształtowanie wiedzy i umiejętności niezbędnych do opracowania kompilatora dla komputera sekwencyjnego o prostej architekturze |
C-2 | Ukształtowanie świadomego rozumowania dokształcania się i odpowiedzialności za wspólne realizowanie projektów w zakresie tworzenia kompilatorów |
Treści programowe z podziałem na formy zajęć
KOD | Treść programowa | Godziny |
---|---|---|
laboratoria | ||
T-L-1 | Definiowanie prostej architektury komputera i języka programowania tego komputera. | 2 |
T-L-2 | Implementacja analizatora leksykalnego dla zdefiniowanego języka programowania przy pomocy narzędzia FLEX | 2 |
T-L-3 | Implementacja analizatora składniowego dla zdefiniowanego języka przy pomocy narzędzia BISON. | 2 |
T-L-4 | Implementacja zdefiniowanych akcji semantycznych. | 2 |
T-L-5 | Implementacja generatora kodu dla wyrażeń arytmetycznych dla zdefionowanej architektury komputera | 2 |
T-L-6 | Generacja kodu dla instrukcji warunkowych i pętli. | 2 |
T-L-7 | Iimplementacja korzystania z tablic jedno- i wielowymiarowych. | 1 |
T-L-8 | Implementacja generatora kodu dla różnych typów danych. | 1 |
T-L-9 | Implementacja wywołań funkcji | 2 |
16 | ||
wykłady | ||
T-W-1 | Definicja translatora, kompilatora, interpretera Fazy kompilacji Struktura przodu kompilatora Struktura tylnej części kompilatora Definicja produkcji Definicja epsilon-produkcji Definicja gramatyki Gramatyki bezkontekstowe Gramatyki niejednocznaczne Definicja języka Drzewa wyprowadzeń | 1 |
T-W-2 | Łączność operatorów Priorytety operatorów a odpowiednia gramatyka Translacja sterowana składnią Definicja sterowana składnią Atrybuty syntezowane Przechodzenie drzewa w głąb Schemat translacji | 1 |
T-W-3 | Zstępująca analiza składniowa Przewidująca analiza składniowa Lewostronna rekurencja Składnia abstrakcyjna i składnia konkretna Translator dla prostych wyrażeń | 1 |
T-W-4 | Proste metody analizy leksykalnej: usuwanie znaków odstępu I komentarzy, rozpoznanie identyfikatorów i słów kluczowych Prosty analizator leksykalny Implementacja tablicy symboli L-wartości i R-wartości Translacja wyrażeń z zastosowaniem stosu | 1 |
T-W-5 | Symbole leksykalne, wzorce, leksemy Leksemy i tokeny Atrybuty symboli leksykalnych Błędy leksykalne Buforowanie w analizie leksykalnej Napisy i języki Operacje na językach | 1 |
T-W-6 | Wyrażenia regularne Definicje regularne Skróty notacyjne w wyrażeniach regularnych Rozpoznanie symboli leksykalnych Diagramy przejść | 1 |
T-W-7 | Tworzenie analizatora leksykalnego przy użyciu Leksa Specyfikacja dla Leksa Automaty skończone: deterministyczne i niedeterministyczne | 1 |
T-W-8 | Symulacja automatu niedeterministycznego Miejsce analizatora składniowego w kompilatorze Wyprowadzenie, typy wyprowadzeń Drzewo wyprowadzeń | 2 |
T-W-9 | Eliminacja lewostronnej rekurencji Faktoryzacja lewostronna Zbiór FIRST Zbiór FOLLOW | 1 |
T-W-10 | Budowa tablic przewidujących Gramatyka LL(1) Architektura parsera LL(1) i sposób jego działania | 1 |
T-W-11 | Na czym polega redukcja w parserach wstępujących Czym jest uchwyt Sposób działania parsera wstępującego | 1 |
T-W-12 | Co to jest LR(0) sytuacja Automat LR(0) Gramatyka wzbogacona | 1 |
T-W-13 | Domknięcie zbioru sytuacji Architektura i algorytm LR parsera Tworzenie tablic parsera SLR(1) | 1 |
T-W-14 | Parser LR(1) Parser LALR(1) | 1 |
T-W-15 | Narzędzie YACC i BISON | 1 |
16 |
Obciążenie pracą studenta - formy aktywności
KOD | Forma aktywności | Godziny |
---|---|---|
laboratoria | ||
A-L-1 | udział w laboratoriach | 16 |
A-L-2 | przygotowanie do laboratoriów | 48 |
64 | ||
wykłady | ||
A-W-1 | Udział w wykładach | 16 |
A-W-2 | Przygotowanie do egzaminu | 40 |
56 |
Metody nauczania / narzędzia dydaktyczne
KOD | Metoda nauczania / narzędzie dydaktyczne |
---|---|
M-1 | Wykad informacyjny/konwerrsatoryjny |
M-2 | Ćwiczenia laboratoryjne |
Sposoby oceny
KOD | Sposób oceny |
---|---|
S-1 | Ocena formująca: Ocena stopnia wykonywania zadań praktycznych pod koniec każdych laboratoriów |
S-2 | Ocena podsumowująca: Zaliczenie końcowe poprzez sprawdzenie efektów kształcenia: przedstawienie pytań i ocena odpowiedzi |
Zamierzone efekty kształcenia - wiedza
Zamierzone efekty kształcenia | Odniesienie do efektów kształcenia dla kierunku studiów | Odniesienie do efektów zdefiniowanych dla obszaru kształcenia | Odniesienie do efektów kształcenia prowadzących do uzyskania tytułu zawodowego inżyniera | Cel przedmiotu | Treści programowe | Metody nauczania | Sposób oceny |
---|---|---|---|---|---|---|---|
I_1A_O1/01_W01 ma wiedzę w zakresie algorytmów projektowania kompilatorów | I_1A_W05 | — | — | C-1 | T-L-1, T-L-5, T-L-3, T-L-9, T-L-2, T-L-6, T-L-7, T-L-4, T-L-8, T-W-2, T-W-14, T-W-10, T-W-12, T-W-13, T-W-1, T-W-3, T-W-15, T-W-8, T-W-11, T-W-7, T-W-5, T-W-9, T-W-6, T-W-4 | M-1 | S-2 |
I_1A_O1/01_W02 zna narzędzia do tworzenia kompilatorów | I_1A_W06 | — | — | C-1 | T-L-1, T-L-5, T-L-3, T-L-9, T-L-2, T-L-6, T-L-7, T-L-4, T-L-8, T-W-2, T-W-14, T-W-10, T-W-12, T-W-13, T-W-1, T-W-3, T-W-15, T-W-8, T-W-11, T-W-7, T-W-5, T-W-9, T-W-6, T-W-4 | M-1 | S-2 |
I_1A_O1/01_W03 zna metody i techniki służące do komunikacji człowieka z komputerem poprzez tworzenie kompilatorów i translatorów | I_1A_W14 | — | — | C-1 | T-L-1, T-L-5, T-L-3, T-L-9, T-L-2, T-L-6, T-L-7, T-L-4, T-L-8, T-W-2, T-W-14, T-W-10, T-W-12, T-W-13, T-W-1, T-W-3, T-W-15, T-W-8, T-W-11, T-W-7, T-W-5, T-W-9, T-W-6, T-W-4 | M-1 | S-2 |
I_1A_O1/01_W04 zna podstawowe metody przetwarzania danych i informacji | I_1A_W17 | — | — | C-1 | T-L-1, T-L-5, T-L-3, T-L-9, T-L-2, T-L-6, T-L-7, T-L-4, T-L-8, T-W-2, T-W-14, T-W-10, T-W-12, T-W-13, T-W-1, T-W-3, T-W-15, T-W-8, T-W-11, T-W-7, T-W-5, T-W-9, T-W-6, T-W-4 | M-1 | S-2 |
Zamierzone efekty kształcenia - umiejętności
Zamierzone efekty kształcenia | Odniesienie do efektów kształcenia dla kierunku studiów | Odniesienie do efektów zdefiniowanych dla obszaru kształcenia | Odniesienie do efektów kształcenia prowadzących do uzyskania tytułu zawodowego inżyniera | Cel przedmiotu | Treści programowe | Metody nauczania | Sposób oceny |
---|---|---|---|---|---|---|---|
I_1A_O1/01_U01 potrafi w zakresie podstawowym projektować, implementować i testować kompilatory i translatory | I_1A_U01 | — | — | C-1 | T-L-1, T-L-5, T-L-3, T-L-9, T-L-2, T-L-6, T-L-7, T-L-4, T-L-8, T-W-2, T-W-14, T-W-10, T-W-12, T-W-13, T-W-1, T-W-3, T-W-15, T-W-8, T-W-11, T-W-7, T-W-5, T-W-9, T-W-6, T-W-4 | M-2 | S-1 |
I_1A_O1/01_U02 Potrafi aktywnie uczestniczyć w pracach projektowych zespołowych i indywidualnych dotyczących wytwarzania kompilatorów i translatorów | I_1A_U02 | — | — | C-1 | T-L-1, T-L-5, T-L-3, T-L-9, T-L-2, T-L-6, T-L-7, T-L-4, T-L-8, T-W-2, T-W-14, T-W-10, T-W-12, T-W-13, T-W-1, T-W-3, T-W-15, T-W-8, T-W-11, T-W-7, T-W-5, T-W-9, T-W-6, T-W-4 | M-2 | S-1 |
I_1A_O1/01_U03 Potrafi posługiwać się dokumentacją techniczną do narzędzi wsperające wytwarzanie kompilatorów | I_1A_U05 | — | — | C-1 | T-L-1, T-L-5, T-L-3, T-L-9, T-L-2, T-L-6, T-L-7, T-L-4, T-L-8, T-W-2, T-W-14, T-W-10, T-W-12, T-W-13, T-W-1, T-W-3, T-W-15, T-W-8, T-W-11, T-W-7, T-W-5, T-W-9, T-W-6, T-W-4 | M-2 | S-1 |
I_1A_O1/01_U04 ma umiejętność opracowania lub wyboru algorytmu i struktur danych do tworzenia kompilatorów | I_1A_U19 | — | — | C-1 | T-L-1, T-L-5, T-L-3, T-L-9, T-L-2, T-L-6, T-L-7, T-L-4, T-L-8, T-W-2, T-W-14, T-W-10, T-W-12, T-W-13, T-W-1, T-W-3, T-W-15, T-W-8, T-W-11, T-W-7, T-W-5, T-W-9, T-W-6, T-W-4 | M-1 | S-1 |
Zamierzone efekty kształcenia - inne kompetencje społeczne i personalne
Zamierzone efekty kształcenia | Odniesienie do efektów kształcenia dla kierunku studiów | Odniesienie do efektów zdefiniowanych dla obszaru kształcenia | Odniesienie do efektów kształcenia prowadzących do uzyskania tytułu zawodowego inżyniera | Cel przedmiotu | Treści programowe | Metody nauczania | Sposób oceny |
---|---|---|---|---|---|---|---|
I_1A_O1/01_K01 świadomie rozumie potrzeby dokształcania i dzielenia się wiedzą w zakresie metod i narzędzi do tworzenia kompilatorów | I_1A_K01 | — | — | C-2 | T-L-5, T-L-3, T-L-9, T-L-2, T-L-6, T-L-7, T-L-4, T-L-8, T-W-2, T-W-14, T-W-10, T-W-12, T-W-13, T-W-1, T-W-3, T-W-15, T-W-8, T-W-11, T-W-7, T-W-5, T-W-9, T-W-6, T-W-4 | M-2 | S-1 |
I_1A_O1/01_K02 ma świadomość odpowiedzialności za wspólnie realizowane zadania dotyczące tworzenia kompilatorów | I_1A_K03 | — | — | C-2 | T-L-1, T-L-5, T-L-3, T-L-9, T-L-2, T-L-6, T-L-7, T-L-4, T-L-8, T-W-2, T-W-14, T-W-10, T-W-12, T-W-13, T-W-1, T-W-3, T-W-15, T-W-8, T-W-11, T-W-7, T-W-5, T-W-9, T-W-6, T-W-4 | M-2 | S-1 |
Kryterium oceny - wiedza
Efekt kształcenia | Ocena | Kryterium oceny |
---|---|---|
I_1A_O1/01_W01 ma wiedzę w zakresie algorytmów projektowania kompilatorów | 2,0 | nie zna podstawowych metod projektowania kompilatorów |
3,0 | zna podstawowe metody projektowania kompilatorów oraz rozumie potrzebę projektowania kompilatorów na ogólnym poziomie | |
3,5 | zna szczegółowo podstawowe metody projektowania kompilatorów oraz rozumie potrzebę projektowania kompilatorów na ogólnym poziomie | |
4,0 | zna szczegółowo podstawowe metody projektowania kompilatorów oraz wie jak zastosować je do projektowania prostych kompilatorów | |
4,5 | zna szczegółowo zaawansowane metody projektowania kompilatorów oraz wie jak zastosować je do projektowania kompilatorów | |
5,0 | zna szczegółowo zaawansowane metody projektowania kompilatorów oraz wie jak zastosować je do projektowania kompilatorów, oraz potrafi udowodnić i uzasadnić swoją wypowiedż | |
I_1A_O1/01_W02 zna narzędzia do tworzenia kompilatorów | 2,0 | nie ma więdzy o narzędziach do analizy leksykalnej i syntaktycznej |
3,0 | ma podstawową więdzę o narzędziach do analizy leksykalnej i syntaktycznej | |
3,5 | ma wiedzę o narzedziu LEX do projektowania analizatorów leksykalnych | |
4,0 | ma wiedzę o narzedziu LEX do projektowania analizatorów leksykalnych oraz narzędziu YACC do projektowania analizatorów składniowych | |
4,5 | ma szczegółową wiedzę o narzedziu LEX do projektowania analizatorów leksykalnych oraz narzędziu YACC do projektowania analizatorów składniowych | |
5,0 | ma szczegółową wiedzę o narzedziu LEX do projektowania analizatorów leksykalnych oraz narzędziu YACC do projektowania analizatorów składniowych oraz wie jak zastosować wiedze do projektowania analizatorów leksykalnych i składniowych | |
I_1A_O1/01_W03 zna metody i techniki służące do komunikacji człowieka z komputerem poprzez tworzenie kompilatorów i translatorów | 2,0 | nie zna podstawowych metod projektowania kompilatorów |
3,0 | zna podstawowe metody projektowania kompilatorów oraz rozumie potrzebę projektowania kompilatorów na ogólnym poziomie | |
3,5 | zna szczegółowo podstawowe metody projektowania kompilatorów oraz rozumie potrzebę projektowania kompilatorów na ogólnym poziomie | |
4,0 | zna szczegółowo podstawowe metody projektowania kompilatorów oraz wie jak zastosować je do projektowania prostych kompilatorów | |
4,5 | zna szczegółowo zaawansowane metody projektowania kompilatorów oraz wie jak zastosować je do projektowania kompilatorów | |
5,0 | zna szczegółowo zaawansowane metody projektowania kompilatorów oraz wie jak zastosować je do projektowania kompilatorów, oraz potrafi udowodnić i uzasadnić swoją wypowiedż | |
I_1A_O1/01_W04 zna podstawowe metody przetwarzania danych i informacji | 2,0 | nie zna podstawowych metod projektowania kompilatorów |
3,0 | zna podstawowe metody projektowania kompilatorów oraz rozumie potrzebę projektowania kompilatorów na ogólnym poziomie | |
3,5 | zna szczegółowo podstawowe metody projektowania kompilatorów oraz rozumie potrzebę projektowania kompilatorów na ogólnym poziomie | |
4,0 | zna szczegółowo podstawowe metody projektowania kompilatorów oraz wie jak zastosować je do projektowania prostych kompilatorów | |
4,5 | zna szczegółowo zaawansowane metody projektowania kompilatorów oraz wie jak zastosować je do projektowania kompilatorów | |
5,0 | zna szczegółowo zaawansowane metody projektowania kompilatorów oraz wie jak zastosować je do projektowania kompilatorów, oraz potrafi udowodnić i uzasadnić swoją wypowiedż |
Kryterium oceny - umiejętności
Efekt kształcenia | Ocena | Kryterium oceny |
---|---|---|
I_1A_O1/01_U01 potrafi w zakresie podstawowym projektować, implementować i testować kompilatory i translatory | 2,0 | nie potrafi zaimplementować prostego kompilatora przekładającego podstawowe wyrażenia arytmetyczne na kod maszynowy. |
3,0 | potrafi zaimplementować bardzo prosty kompilator przekładający podstawowe wyrażenia arytmetyczne operujące na podstawowych typach danych (całkowite i zmiennoprzecinkowe) na kod maszynowy, jest w stanie zaimplementować obsługę instrukcji warunkowych bez zagnieżdżeń. | |
3,5 | potrafi wszystko to co na ocenę 3,0 oraz potrafi zastosować zasady dotyczące implementacji instrukcji warunkowych dla zagnieżdżonych konstrukcji. | |
4,0 | potrafi wszystko to co na ocenę 3,5 oraz potrafi przeanalizować powstały kod maszynowy w celu minimalizacji liczby skoków przy złożonych instrukcjach warunkowych. Potrafi również zaimplementować kompilację konstrukcji pętli i tablic jednowymiarowych. | |
4,5 | potrafi syntezować pozyskane umiejętności w kompletny kompilator generujący kod z wykorzystaniem konstrukcji wymaganych na niższe oceny oraz dodatkowo tablic wielowymiarowych. | |
5,0 | potrafi ocenić kompilator generujący kod z wykorzystaniem konstrukcji wymaganych na niższe oceny oraz zaproponować i wykonać dodatkowe funkcjonalności (np. obsługę funkcji, generowanie kodu dla architektury 64-bitowej) | |
I_1A_O1/01_U02 Potrafi aktywnie uczestniczyć w pracach projektowych zespołowych i indywidualnych dotyczących wytwarzania kompilatorów i translatorów | 2,0 | nie jest w stanie uczestniczyć w pracach zespołu przygotowującym projekt języka i kompilatora |
3,0 | potrafi uczestniczyć w zespole przygotowującym projekt języka i kompilatora | |
3,5 | potrafi aktywnie uczestniczyć w zespole przygotowującym projekt języka i kompilatora | |
4,0 | potrafi aktywnie uczestniczyć w zespole przygotowującym projekt języka i kompilatora oraz analizować proponowane rozwiązania | |
4,5 | wymagania na ocene 4.0 oraz potrafi dodawać istotne propozycje w realizowanym projekcie | |
5,0 | wymagania na ocene 4.5 oraz potrafi wyjaśnić innym studentom w zespole zagadnienia dotyczące budowy kompilatora | |
I_1A_O1/01_U03 Potrafi posługiwać się dokumentacją techniczną do narzędzi wsperające wytwarzanie kompilatorów | 2,0 | nie potrafi zastosować dostępnej dokumentacji technicznej do implementacji kompilatora |
3,0 | potrafi przy pomocy prowadzącego i na podstawie dostępnej dokumentacji zaimplementować podstawowe funkcje kompilatora przy wykorzystaniu narzędzi bison i flex. | |
3,5 | potrafi samodzielnie stosować udostępnioną dokumentacje techniczną do implementacji kompilator | |
4,0 | potrafi wszystko na ocenę 3,5, potrafi również analizować dostępną dokumentacje techniczną jak również poszukiwać i skutecznie użyć dodatkowych informacji (np. przykładowa składnia analizatora składniowego) | |
4,5 | potrafi wszystko na ocenę 4,0, proponuje również nowe rozwiązania (np. alternatywny sposób zapisu wyrażeń regularnych w narzędziu flex, składnia wykraczająca poza przykłady z dokumentacji narzędzia bison) rozwiązań prezentowanych w dokumentacji | |
5,0 | potrafi wszystko na ocenę 4,5, zapoznał się z przynajmniej jednym narzędziem do budowy kompilatorów (np. ANTLR, Roslyn) i potrafi z nim porównać stosowane na zajęciach narzędzia (flex i bison) | |
I_1A_O1/01_U04 ma umiejętność opracowania lub wyboru algorytmu i struktur danych do tworzenia kompilatorów | 2,0 | nie rozumie i nie potrafi zastosować podstawowych algorytmów budowy kompilatorów |
3,0 | rozumie i potrafi zastosować podstawowe algorytmy przedstawione w ramach zajęć | |
3,5 | potrafi wszystko na ocenę 3,0 oraz jest w stanie zmodyfikować implementacje prostych algorytmów | |
4,0 | potrafi wszystko na ocenę 3,5 oraz jest w stanie zmodyfikować implementacje złożonych algorytmów | |
4,5 | potrafi wszystko na ocenę 4,0 oraz potrafi wybrać efektywną implementacje używanych algorytmów budowy kompilatora (np. tablica symboli, obliczanie wyrażeń arytmetycznych, instrukcje skoku, indeksowanie tablic wielowymiarowych). | |
5,0 | potrafi wszystko na ocenę 4,5 oraz jest w stanie uogólnić znane algorytmy oraz przedstawić ocenę złożoności uzyskanego rozwiązania. |
Kryterium oceny - inne kompetencje społeczne i personalne
Efekt kształcenia | Ocena | Kryterium oceny |
---|---|---|
I_1A_O1/01_K01 świadomie rozumie potrzeby dokształcania i dzielenia się wiedzą w zakresie metod i narzędzi do tworzenia kompilatorów | 2,0 | nie rozumie potrzeby dokształcania i dzielenia się wiedzą w zakresie metod i narzędzi do tworzenia kompilatorów |
3,0 | rozumie potrzebę dokształcania i dzielenia się wiedzą w zakresie metod i narzędzi do tworzenia kompilatorów | |
3,5 | jest w stanie zaprezentować w pełni zaimplementowane rozwiązanie | |
4,0 | jest w stanie zaprezentować w pełni i przedyskutować z prowadzącym zaimplementowane rozwiązanie | |
4,5 | na bazie kompetencji wymaganych na niższe oceny jest w stanie podzielić się wiedzą w usystematyzowany sposób z grupą | |
5,0 | na bazie kompetencji wymaganych na niższe oceny jest w stanie przygotować i zaprezentować własne propozycje w zakresie metod i narzędzi do tworzenia kompilatorów | |
I_1A_O1/01_K02 ma świadomość odpowiedzialności za wspólnie realizowane zadania dotyczące tworzenia kompilatorów | 2,0 | nie ma świadomości odpowiedzialności za wspólnie realizowane zadania dotyczące tworzenia kompilatorów |
3,0 | ma świadomość odpowiedzialnośći za wspólnie realizowane zadania i potrafi uczestniczyć w zespole przygotowującym projekt języka i kompilatora | |
3,5 | ma świadomość odpowiedzialnośći za wspólnie realizowane zadania i potrafi aktywnie uczestniczyć w zespole przygotowującym projekt języka i kompilatora | |
4,0 | ma świadomość odpowiedzialnośći za wspólnie realizowane zadania i potrafi analizować proponowane rozwiązania i dodawać istotne propozycje w trakcie aktywnego uczestnictwa w zespole przygotowującym projekt języka i kompilatora | |
4,5 | ma świadomość odpowiedzialnośći za wspólnie realizowane zadania i potrafi ocenić przydatność proponowanych rozwiązań oraz wyjaśnić innym studentom zagadnienia dotyczące budowy kompilatora | |
5,0 | ma świadomość odpowiedzialnośći za wspólnie realizowane zadania i potrafi podjąć się przewodnictwa w grupie |
Literatura podstawowa
- Alfred V. Aho, Ravi Sethi, Jeffrey D. Ullman, Kompilatory, Reguły, Metody i Narzędzia, WNT, Warszawa, 2002
- Aho and al., Compilers: Principles, Techniques, and Tools, Addison Wesley, Boston, 2007
Literatura dodatkowa
- R. Wilhelm, D. Maurer, Compiler Design, Addison-Wesley, Boston, 1995