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

  1. A.V. Aho, R. Sethi, J.D. Ullman, Kompilatory. Reguły, metody i narzędzia, WNT, Warszawa 2002, (ISBN: 83-204-2656-1)
  2. J.E. Hopcroft, J.D. Ullman, Wprowadzenie do teorii automatów, języków i obliczeń, WNT, Warszawa 1994 (ISBN 83-01-11298-0)
  3. Studia Informatyczne - Podstawy kompilatorów (http://wazniak.mimuw.edu.pl/)

Tematy wykładów (w przybliżeniu)

  1. Wprowadzenie (1-10-2007)
  2. Analiza leksykalna (8-10-2007)
  3. Wstęp do analizy składniowej (15-10-2007)
  4. Analiza metodą zstępującą (22-10-2007)
  5. Gramatyki typu LL(k) (29-10-2007)
  6. Analiza metodą wstępującą (5-11-2007)
  7. Gramatyki LR(k) (12-11-2007) (Przykład z wykładu )
  8. Gramatyki SLR i LR(1) (19-11-2007)
  9. Gramatyki LALR (26-11-2007)
  10. Translacja sterowana składnią (3-12-2007) (Przykład z wykładu )
  11. Zależności kontekstowe (10-12-2007)
  12. Synteza kodu (17-12-2007)
  13. Środowisko czasu wykonania (7-01-2008)
  14. Podsumowanie (14-01-2008)
  15. 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.

  1. 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)
  2. 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)
  3. 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)
  4. Projekt - prosty kompilator.
    (Termin oddania 13 stycznia)
    Wyniki projektu

Zasady zaliczenia kursu

  1. Zaliczenie kursu następuje przez zaliczenie kolokwium końcowego.
  2. Zasadniczym celem ćwiczeń jest ułatwienie studentom samodzielnej pracy nad opanowaniem materiału w czasie całego semestru.
  3. 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.
  4. 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.
  5. Zadania mogą posiadać również formę programistyczną. W takim przypadku każdy student oddaje takie zadanie indywidualnie.
  6. Oddanie zadań pisemnych i programistycznych jest warunkiem koniecznym do uzyskania zaliczenia.
  7. Kolokwium końcowe jest pisane na ostatnim wykładzie.
  8. 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.
  9. Oceną końcową jest ocena z kolokwium która może być podwyższona za aktywność na ćwiczeniach i zadania programistyczne.

Valid XHTML 1.1! Valid CSS!

Maciej.Gebala@pwr.edu.pl