Techniki translacji 2007
Środa 915 - 1100 C-4/35
wykład
Czwartek 915 - 1100 TN C-4/35 ćwiczenia - mgr
Marcin Zawada
Kolokwium zaliczeniowe odbędzie się na wykładzie 13
czerwca.
Kolokwium poprawkowe odbędzie się 25 czerwca o godz.
915 w sali C-11/P.01.
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 (21-02-2007)
- Analiza leksykalna (28-02-2007)
- Wstęp do analizy składniowej (7-03-2007)
- Analiza metodą zstępującą
(14-03-2007)
- Gramatyki typu LL(k) (21-03-2007)
- Analiza metodą wstępującą
(28-03-2007)
- Gramatyki LR(k) (4-04-2007)
(Przykład z wykładu
)
- Gramatyki SLR i LR(1) (11-04-2007)
- Gramatyki LALR (18-04-2007)
- Translacja sterowana składnią
(25-04-2007)
(Przykład z wykładu
)
- Zależności kontekstowe (9-05-2007)
- Synteza kodu (16-05-2007)
- Środowisko czasu wykonania (23-05-2007)
- Podsumowanie wykładu. (30-05-2007)
Listy zadań
Zadania programistyczne
Zadania należy napisać czytelnie, z komentarzami umożliwiającymi
zrozumienie implementacji oraz poznanie danych autora. Studenci o
nieparzystych numerach indeksów oddają zadania wykładowcy a o parzystych
prowadzącemu ćwiczenia. Zadania mogą 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 15 marca)
- 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
2 3+*
Błąd: za mała liczba argumentów
2.4 3+
Błąd: zły symbol "."
(Termin oddania 28 marca)
- 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 26 kwietnia)
- Projekt - prosty kompilator.
(Termin oddania 31 maja)
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.