Techniki translacji 2007 (jesień)
Poniedziałek 1315 - 1500 A-1/204
wykład
Poniedziałek 1115 - 1300 TN/TP C-7/303 ćwiczenia - dr Marcin Zawada
Kolokwium zaliczeniowe odbędzie się na wykładzie 21
stycznia.
Kolokwium poprawkowe odbędzie się 4 lutego o godz. 1715 w sali A-1/329.
Literatura
- A.V. Aho, R. Sethi, J.D. Ullman,
Kompilatory. Reguły, metody i narzędzia,
WNT, Warszawa 2002, (ISBN: 83-204-2656-1)
- J.E. Hopcroft, J.D. Ullman,
Wprowadzenie do teorii automatów, języków i obliczeń,
WNT, Warszawa 1994 (ISBN 83-01-11298-0)
- Studia Informatyczne - Podstawy kompilatorów (http://wazniak.mimuw.edu.pl/)
Tematy wykładów (w przybliżeniu)
- Wprowadzenie (1-10-2007)
- Analiza leksykalna (8-10-2007)
- Wstęp do analizy składniowej (15-10-2007)
- Analiza metodą zstępującą (22-10-2007)
- Gramatyki typu LL(k) (29-10-2007)
- Analiza metodą wstępującą (5-11-2007)
- Gramatyki LR(k) (12-11-2007)
(Przykład z wykładu
)
- Gramatyki SLR i LR(1) (19-11-2007)
- Gramatyki LALR (26-11-2007)
- Translacja sterowana składnią (3-12-2007)
(Przykład z wykładu
)
- Zależności kontekstowe (10-12-2007)
- Synteza kodu (17-12-2007)
- Środowisko czasu wykonania (7-01-2008)
- Podsumowanie (14-01-2008)
- Kolokwium zaliczeniowe (21-01-2008)
Listy zadań
Zadania programistyczne
Zadania należy napisać czytelnie, z komentarzami umożliwiającymi
zrozumienie implementacji oraz poznanie danych autora. Zadania powinny
być oddawane przez email.
- Napisz w LEX-ie program który czyta dowolny plik tekstowy, usuwa
w nim wszystkie białe znaki na końcu i na początku wiersza, zmienia
wszystkie wystąpienia ciągów tabulatorów i spacji na dokładnie jedną
spację, oraz na końcu dopisuje liczbę linii i słów (ciągi znaków
oddzielone białymi znakami).
(Termin oddania 11 listopada)
- Używając tylko LEX-a zaimplementuj prosty kalkulator postfiksowy dla
liczb całkowitych wykonujący operacje dodawania (+), odejmowania (-),
mnożenia (*), dzielenia całkowitoliczbowego (/) i operację modulo (%).
Wyrażenie do policzenia powinno być napisane w jednej linii. Program
powinien wyświetlać wynik lub komunikat o błędzie (jak najbardziej
szczegółowy). Przykład sesji:
2 3+4*
= 20
1 2 3 4 + * -
= -13
-1 2 -3 4 + * -
= -3
8 -7 6 -5 4 * -3 % / - +
= 4
2 3+*
Błąd: za mała liczba argumentów
2 3 4 +
Błąd: za mała liczba operatorów
2.4 3+
Błąd: zły symbol "."
(Termin oddania 2 grudnia)
- Używając LEX-a i BISON-a zaimplementuj translator wyrażeń
arytmetycznych z postaci infiksowej do postaci postfiksowej (takiej jak w
poprzednim zadaniu) i podającej wynik obliczenia wyrażenia. Przykład
sesji:
2+3*(4-5)
2 3 4 5 - * +
Wynik: -1
2+3*(4-5
Błąd.
(Termin oddania 23 grudnia)
- Projekt - prosty kompilator.
(Termin oddania 13 stycznia)
Wyniki projektu
Zasady zaliczenia kursu
- Zaliczenie kursu następuje przez zaliczenie kolokwium końcowego.
- Zasadniczym celem ćwiczeń jest ułatwienie studentom samodzielnej pracy
nad opanowaniem materiału w czasie całego semestru.
- Wykładowca ogłasza z odpowiednim wyprzedzeniem listy zadań do
samodzielnego rozwiązania przed zajęciami. Na ćwiczeniach studenci
prezentują rozwiązania zadań. W trakcie rozwiązywania wyjaśniane są
wątpliwości dotyczące rozwiązania oraz przedstawiane alternatywne rozwiązania.
- Dodatkowym warunkiem zaliczenia jest oddanie przez studenta w formie
pisemnej (PDF) wyznaczonych zadań zrobionych na ćwiczeniach. Oddawane
zadanie powinno być rozwiązane dokładnie, w sposób formalny i przejrzysty.
Zadanie wyznacza prowadzący ćwiczenia.
- Zadania mogą posiadać również formę programistyczną. W takim przypadku
każdy student oddaje takie zadanie indywidualnie.
- Oddanie zadań pisemnych i programistycznych jest warunkiem koniecznym
do uzyskania zaliczenia.
- Kolokwium końcowe jest pisane na ostatnim wykładzie.
- Na kolokwium jedyną dopuszczalną pomocą naukową jest kartka formatu a4
podpisana w ten sposób aby z odległości 2 metrów dało się ustalić jej
właściciela. Oprócz tego student nie ma prawa mieć żadnych innych kartek,
książek i innych pomocy. Kartki z treścią zadań i miejscem na rozwiązania oraz
brudnopisy dostarcza wykładowca.
- Oceną końcową jest ocena z kolokwium która może być podwyższona za
aktywność na ćwiczeniach i zadania programistyczne.