Projekt dyplomowy - Parser LL(1) - inż. Piotr Mitka


Podręcznik Użytkownika

Wstęp

Aplikacja ilustruje budowę i działanie parsera LL(1) dla prostych gramatyk bezkontekstowych. Dla uproszczenia przyjęto, że nieterminale są reprezentowane przez duże litery alfabetu łacińskiego a terminale przez małe.

Uruchomienie

Po uruchomieniu programu część interfejsu odpowiedzialna za operacje na gramatyce jest "zamrożona". Taki zabieg ma za zadanie prowadzenie użytkownika przez całą aplikację krok po kroku, aż do uzyskania wyników. Po wprowadzeniu gramatyki i jej sprawdzeniu, kolejne elementy interfejsu zostają stopniowo odblokowane.

Wygląd programu

Wprowadzanie danych

Wprowadzanie gramatyki jest intuicyjne dla przeciętnego użytkownika i pokrywa się z formalną strukturą gramatyk spotykaną w literaturze. Aplikacja jako symbol początkowy traktuje nieterminal z lewej strony pierwszej wprowadzonej produkcji. Użytkownik ma do dyspozycji symbole specjalne, które może wprowadzać zarówno poprzez interfejs użytkownika jak i skróty klawiaturowe: epsilon (Ctrl+E), strzałka( Ctrl + RightArrow).

Wprowadzanie gramatyki

Dodatkowo użytkownik ma możliwość zapisu i odczytu napisanej wcześniej gramatyki z pliku (tylko w wersji uruchamianej jako aplikacja). Plik tekstowy jest zapisany ze wsparciem dla kodowania znaków UTF-8, ponieważ zapisywane są w nim symbole specjalne.

Zapis gramatyki

Po kliknięciu na przycisk 'Sprawdź gramatykę' następuje weryfikacja poprawności gramatyki. W przypadku napotkania błędów, wyświetlany jest stosowny komunikat informujący o niepowodzeniu, z dokładnym opisem naprowadzającym użytkownika na miejsce wystąpienia problemu.

Błąd gramatyki

Zbiory First i Follow

Jeśli gramatyka jest poprawna możemy wyznaczyć zbiory First i Follow poprzez kliknięcie odpowiedniego przycisku.

Zbiory First i Follow

Użytkownik może w łatwy sposób sprawdzić, jak dany element któregokolwiek ze zbiorów został wyznaczony poprzez zaznaczenie. Wtedy na ekranie pojawi się wykorzystana definicja, co ilustruje kolejny obrazek.

Definicje zbiorów

Tablica parsera

Po analizie zbiorów First i Follow użytkownik może wygenerować tablice parsera za pomocą przycisku 'Tablica parsera'. Po wygenerowaniu aplikacja przejdzie do kolejnej zakładki ze zbudowaną na podstawie poprzednich zbiorów (First i Follow) tablicą parsera, która wykorzystywana jest w procesie parsowania.

Tablica parsera

Parsowanie

Po zbudowaniu tablicy parsera odblokowywana jest dolna część aplikacji odpowiedzialna za parsowanie. Użytkownik może teraz wprowadzić ciąg symboli, w celu weryfikacji jego poprawności ze zdefiniowaną wcześniej gramatyką. Następnie inicjalizujemy parser klikając przycisk 'Start'. Na stosie pojawia się wówczas symbol startowy z gramatyki oraz analizowane słowo. Na końcu słowa jak i stosu znajduje się symbol $ oznaczający koniec wejścia.

Początek parsowania

Kolejne etapy parsowania pokonujemy za pomocą przycisku 'Kolejny krok'. Krokowe parsowanie tekstu umożliwia użytkownikowi lepsze zrozumienie działania parsera. Dodatkowo na tablicy parsera zaznaczane są kolorem reguły wykorzystane w danym momencie. Również na tablicy wyjściowej prezentowane są produkcje użyte do kolejnych przejść.

Parsowanie

Na zakończenie parsowania w przypadku zgodności danych wejściowych z gramatyką wyświetlony zostaje komunikat informujący o sukcesie. W przypadku napotkania błędu parsowania, użytkownik również zostaje powiadomiony o tym zdarzeniu.

Komunikat błędu


Valid XHTML 1.1! Valid CSS!