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)

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