[WikiDyd] [TitleIndex] [WordIndex

Laboratorium języków formalnych i kompilatorów

Celem zajęć jest zapoznanie się z nowoczesnymi narzędziami wspomagającymi analizę leksykalno-składniową (ANTLR) oraz samodzielne stworzenie obiektowego obiektowego analizatora LL.

Regulamin

  1. Do wykonania są dwa zadania. Zadania polegają na opracowaniu języka (jego gramatyki) oraz zaprojektowaniu i napisaniu aplikacji zawierającej kompilator realizujący ten język.
  2. Zadania realizowane są w dwuosobowych zespołach.
  3. Za wykonanie dwóch zadań można otrzymać maksimum 100 punktów. Na tę sumę składa się po 50 pkt. za każde zadanie.
  4. Przekroczenie terminu oddania wyników pośrednich oraz aplikacji wraz z dokumentacją oznacza obniżenie oceny za dane zadanie o 20% przy spóźnieniu do jednego tygodnia i o 100% przy spóźnieniu powyżej jednego tygodnia.
  5. Warunkiem zaliczenia jest pozytywna obrona obu projektów.
  6. Projekty będą oceniane tylko jeśli zostały skompilowane i poprawnie działają w środowisku LOP.

  7. Ocena końcowa zależna jest od uzyskanej sumarycznej liczby punktów: 51-60 pkt. = 3,0; 61-70 pkt. = 3,5; 71-80 pkt. = 4,0; 81-90 pkt. = 4,5; 91-100 pkt. = 5,0.

Zadanie pierwsze

Napisz program rysujący schemat układu logicznego opisanego w zaprojektowanym przez siebie języku. Język musi obsługiwać zdefiniowane elementy takie jak bramki OR, AND, NOT, XOR oraz wejście-wyjście oraz połączenia pomiędzy nimi. Język musi dawać możliwość tworzenia i wykorzystywania własnych komponentów składających się z wielu elementów, np. (multiplekser).

Aplikacja powinna zostać napisana w języku Java, może być wyposażona w minimalny interfejs graficzny do prezentacji wynikowego schematu. Analiza leksykalna i składniowa zrobiona przy pomocy własnych klas o strukturze zgodnej ze strukturą kompilatorów LL(1) przedstawioną na wykładzie. Aplikacje powinny być zaprojektowane przy wykorzystaniu diagramów w języku UML oraz zaimplementowane przy wykorzystaniu projektowania obiektowego.

Ważny jest zdecydowany podział pracy pomiędzy członami zespołu. Jedna osoba odpowiada za analizator leksykalny i moduł rysujący, a druga osoba ze analizator składniowy i drzewo składni.

Harmonogram zajęć:

  1. spotkanie - organizacja i konsultacje,
  2. spotkanie - konsultacje,
  3. spotkanie - diagramy UML + gramatyka (7 pkt.),
  4. spotkanie - konsultacje,
  5. spotkanie - uruchomione klasy kompilatora (8 pkt.),
  6. spotkanie - konsultacje,
  7. spotkanie - obrona projektu (20 pkt.) + dokumentacja końcowa (15 pkt.).

Objaśnienie harmonogramu

Zadanie drugie

Napisz interpreter samodzielnie zaprojektowanego języka skryptowego. Interpreter powinien czytać plik wejściowy, podany jako parametr linii poleceń, albo jako strumień STDIN i wykonywać polecenia w nim zawarte. Wyniki działania wypisywane są na STDOUT.

Minimalne wymagania na projektowany język:

Program powinien zostać napisany w języku Java przy wykorzystaniu biblioteki ANTLR. Pełna dokumentacja projektu oraz sam projekt dostępne są na stronie http://www.antlr.org/. Wymagane jest korzystanie z narzędzia ANTLRWorks (dostępnego na w/w stronie), wspomagającego pracę z biblioteką.

Harmonogram zajęć:

  1. spotkanie - organizacja i wprowadzenie do ANTLR,
  2. spotkanie - konsultacje i wprowadzenie do ANTLR cz. 2 - ANTLRWorks(?),
  3. spotkanie - uruchomione ANTLR + ANTLRWorks + gramatyka (7 pkt.),
  4. spotkanie - konsultacje,
  5. spotkanie - początki aplikacji + jej projekt (8 pkt.),
  6. spotkanie - konsultacje,
  7. spotkanie - obrona projektu (20 pkt.) + dokumentacja końcowa (15 pkt.).

(?) Być może uda się zaprezentować cały materiał na pierwszym spotkaniu.

Objaśnienie harmonogramu

Pliki

Calc.g Skrypt.g antlr.pdf

Opóźnione zaliczanie

Terminy:

* 19 września 2008, piątek, godz. 12-14, pokój GG446


2015-09-23 06:43