Pole | KOD | Znaczenie kodu |
---|
Zamierzone efekty uczenia się | Itest_1A_C25.3_W01 | ma wiedzę w zakresie algorytmów projektowania kompilatorów oraz zna narzędzia do tworzenia kompilatorów |
---|
Odniesienie do efektów kształcenia dla kierunku studiów | I_1A_W05 | Ma wiedzę o nowoczesnych metodach projektowania, analizowania, wytwarzania, testowania oprogramowania oraz rozwiązywania wybranych zadań inżynierskich obejmujących w szczególności narzędzia wspomagające wytwarzanie oprogramowania na różnych etapach powstawania, eksploatacji i rozwoju systemów informatycznych. |
---|
I_1A_W03 | Ma szczegółową wiedzę w zakresie wybranych specjalności informatyki technicznej. |
Cel przedmiotu | C-2 | Ukształtowanie świadomego rozumowania dokształcania się i odpowiedzialności za wspólne realizowanie projektów w zakresie tworzenia kompilatorów |
---|
C-1 | Ukształtowanie wiedzy i umiejętności niezbędnych do opracowania kompilatora dla komputera sekwencyjnego o prostej architekturze |
Treści programowe | T-L-5 | Implementacja generatora kodu dla wyrażeń arytmetycznych (z wykorzystaniem ONP) |
---|
T-L-6 | Generacja kodu dla instrukcji warunkowych i pętli |
T-L-7 | Metody implementacji korzystania z tablic jedno- i wielowymiarowych |
T-L-8 | Implementacja generatora kodu dla różnych typów danych |
T-L-9 | Implementacja wywołań funkcji (na lepsze oceny) |
T-L-10 | Implementacja struktur (na lepsze oceny) |
T-L-3 | Implementacja analizatora składniowego przy pomocy narzędzia BISON |
T-L-1 | Definiowanie języka |
T-L-2 | Implementacja analizatora leksykalnego przy pomocy narzędzia FLEX |
T-L-4 | Proste akcje semantyczne |
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. |
T-W-1 | Definicja translatora, kompilatora, interpretera. Fazy kompilacji. Struktura przodu kompilatora. Struktura tylnej części kompilatora. Definicja produkcji. Definicja epsilon-produkcji. |
T-W-2 | Łączność operatorów. Definicja gramatyki. Gramatyki bezkontekstowe. Gramatyki niejednocznaczne. Definicja języka. Drzewa wyprowadzeń. Priorytety operatorów a odpowiednia gramatyka. |
T-W-3 | Translacja sterowana składnią. Definicja sterowana składnią. Atrybuty syntezowane. Przechodzenie drzewa w głąb. Schemat translacji. Składnia abstrakcyjna i składnia konkretna. Translator dla prostych wyrażeń. |
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. |
T-W-6 | Wyrażenia regularne. Definicje regularne. Skróty notacyjne w wyrażeniach regularnych. Rozpoznanie symboli leksykalnych. Diagramy przejść. Tworzenie analizatora leksykalnego przy użyciu Leksa. Specyfikacja dla Leksa. Automaty skończone: deterministyczne i niedeterministyczne. |
T-W-15 | Analiza wstępująca. Redukcja. Parsowanie shift-reduce. Zastosowanie stosu. Klasyfikacja gramatyk. Gramatyka LR(1). Gramatyka LR(k). Konflikty w parserach LR(k). Akcje parsera LR(1). Architektura parsera LL(1) i sposób jego działania. Parsowanie zstępujące. Zastosowanie ε-produkcji w parsowaniu zstępującym. Parsowanie przewidujące. Definicja zbioru FIRST i jego zastosowanie w parsowaniu przewidującym. Rekurencja lewostronna. Wyeliminowanie rekurencji lewostronnej. Pseudokod parsowania przewidującego. Projektowanie parsera przewidującego. |
T-W-7 | Miejsce analizatora składniowego w kompilatorze. Wyprowadzenie, typy wyprowadzeń. Drzewo wyprowadzeń. Budowa tablic przewidujących. Obliczenie zbioru FIRST. Obliczenie zbioru FOLLOW. Gramatyka LL(1). |
T-W-13 | Podstawy optymalizacji kodu wynikowego w kompilatorach. |
T-W-14 | Nowoczesne narzędzia do budowy kompilatorów. Roslyn. LLVM. |
T-W-8 | Narzędzie YACC. Tworzenie pliku specyfikacji. Akcje semantyczne. Rozwiązywanie konfliktów reduce/reduce. Rozwiązywanie konfliktów shift/reduce. |
T-W-9 | Analiza semantyczna. Cele analizy semantycznej. Rodzaje kontroli. Przykłady błędów na etapie analizy semantycznej. Zakresy zmiennych, zasięgi nazw. |
T-W-12 | Składnia abstrakcyjna i konkretna. Drzewa konkretne i abstrakcyjne. Zasady tworzenia prostego translatora: kolejność czynności niezbędnych do utworzenia prostego translatora. Dostosowanie schematu translacji na notację polską. Pseudokod translacji na notację polską. Translator w języku Java. Translator w języku C. Translator w oparciu o Lex i Yacc. |
T-W-10 | Generacja kodu maszynowego MIPS/x86 1, symulator SPIM. Język Asembler. Rejestry MIPS/x86 i ich zastosowanie. Operatory porównania. Instrukcje skoków. |
T-W-11 | Generacja kodu maszynowego MIPS 2/x86, symulator SPIM. Generowanie kodu dla deklaracji. Generowanie kodu dla wyrażeń. Generowanie kodu dla instrukcji sterujących. Wywołanie procedur. Tablice. Wejście/wyjście. Kod dla struktur i klas. |
Metody nauczania | M-1 | Wykład informacyjny/konwersatoryjny |
---|
M-2 | Ćwiczenia laboratoryjne |
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 |
Kryteria oceny | Ocena | Kryterium oceny |
---|
2,0 | nie zna podstawowych metod projektowania kompilatorów, nie ma wiedzy o narzędziach do analizy leksykalnej i syntaktycznej |
3,0 | zna podstawowe metody projektowania kompilatorów oraz rozumie potrzebę projektowania kompilatorów na ogólnym poziomie, ma podstawową więdzę o narzędziach do analizy leksykalnej i syntaktycznej |
3,5 | zna szczegółowo podstawowe metody projektowania kompilatorów oraz rozumie potrzebę projektowania kompilatorów na ogólnym poziomie, ma wiedzę o narzedziu LEX do projektowania analizatorów leksykalnych |
4,0 | zna szczegółowo podstawowe metody projektowania kompilatorów oraz wie jak zastosować je do projektowania prostych kompilatorów, ma wiedzę o narzedziu LEX do projektowania analizatorów leksykalnych oraz narzędziu YACC/bison do projektowania analizatorów składniowych |
4,5 | zna szczegółowo zaawansowane metody projektowania kompilatorów oraz wie jak zastosować je do projektowania kompilatorów, ma szczegółową wiedzę o narzedziu LEX do projektowania analizatorów leksykalnych oraz narzędziu YACC/bison do projektowania analizatorów składniowych |
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ż, ma szczegółową wiedzę o narzedziu LEX do projektowania analizatorów leksykalnych oraz narzędziu YACC/bison do projektowania analizatorów składniowych oraz wie jak zastosować wiedze do projektowania analizatorów leksykalnych i składniowych |