Informacje dla uzytkownikow programu Gen1s (wersja 0.1.1) --------------------------------------------------------- 1.Opis ogolny. Program Gen1s sluzy do generacji parserow na podstawie gramatyki zapisanej w oddzielnym pliku z rozszezeniem '.gpa'. 2.Sposob uzycia programu. Generator parserow Gen1s mona wywolac z linii komend piszac Gen1s gdzie moze skladac sie z liter, cyfr i znaku '_' i jest wykorzystywana w nazwach generowanych plikow, Zakladamy, ze istnieje plik '.gpa' zawierajacy zapis gramatyki wg ponizszego formatu. 3.Notacja wymagana przy zapisie gramatyki. Przykladowa zawartosc pliku opisujacego gramatyke moze byc nastepujaca (bez numeracji linii!): == bez wstawek kodu: 1 -- komentarz 2 -- 3 4 "plik" = "sekcja" {"sekcja"}. 5 "sekcja" = 'nazwa_sek' "element" {"element"}. 6 "element" = 'nazwa' 'rown' "wart" ["wart"]. 7 "wart" = ('liczba' | 'ident'). 8 9 %% -- first 10 "plik" : 'nazwa_sek'. 11 "sekcja" : 'nazwa_sek'. 12 "element" : 'nazwa'. 13 "wart" : 'liczba' 'ident'. 14 -- koniec pliku == ze wstawkami kodu: 1 -- komentarz 2 #{i: Integer:=0;}# 3 4 "plik" #$Temp: Integer;$# = #$null;$#"sekcja" {"sekcja"#$null;$#}. 5 "sekcja" = 'nazwa_sek'#$null;$# "element"#$null;$# {"element"}. 6 "element" = 'nazwa' 'rown' "wart" ["wart"#$null;$#]. 7 "wart" = ('liczba'#$null;$# | 'ident'). 8 9 %% -- first 10 "plik" : 'nazwa_sek'. 11 "sekcja" : 'nazwa_sek'. 12 "element" : 'nazwa'. 13 "wart" : 'liczba' 'ident'. 14 -- koniec pliku gdzie - napisy w nawiasach " " zawieraja nazwy symboli nieterminalnych, - napisy w nawiasach ' ' zawieraja nazwy symboli terminalnych, - znak '=' oznacza produkcje, - nawiasy '[' i ']' oznaczaja opcjonalne wystapienie symbolu w nawiasach (zero lub jeden raz), - nawiasy '{' i '}' oznaczaja mozliwosc wielokrotnego wystapienia symbolu w nawiasach (zero lub wiecej razy), - nawiasy '(' i ')' oznaczaja alternatywne wystapienie symboli oddzielone znakiem '|' np. ('s1' "s2" | "s3" | "s4" 's5'), - kropka oznacza koniec produkcji, - znaki '--' oznaczaja komentarz wg zasad jak w jezyku Ada, - tresc zawarta pomiedzy '#$' i '$#' moze zawierac kod uzytkownika do wstawienia w generowanym parserze w zaleznosci od kontekstu: = kod umieszczony przed liniami z produkcjami (linia 2 przykladu) wstawiany jest na poczatku tresci pakietu z generowanym parserem i glownie sluzy do wpisania deklaracji zmiennych widzianych w calym pakiecie = kod umieszczony przez znakiem '=' (linia 4 przykladu ) wstawiany jest w czesci deklaracyjnej procedury obslugujacej dany symbol neterminalny ( "plik"), = kod umieszczony po znaku '=' staje sie pierwsza instrukcja procedury obslugujacej dany symbol neterminalny (np "plik"), = kod umieszczony po symbolu terminalnym lub nieterminalnym wstawiony jest w parserze po pojawieniu sie danego symbolu, - sekcja zaczynajaca sie od znakow '%%' umozliwia wpisanie dla kazdego symbolu nieterminalnego zbioru First czyli zbioru wszystkich symboli terminalnych, ktore moga wystapic na pierwszej pozycji w ciagach wyprowadzonych z danego symbolu nieterminalnego, 4.Ograniczenia programu - nie mozna zagniezdzac nawiasow - dla kazdego symbolu nieterminalnego tylko jedna produkcja - brak lub nieprawidlowa sekcja First wymaga recznego uzupelnienia kodu o te dane - generator parserow nie sprawdza zgodnosci gramatyki z regulami LL1 5.Uwagi - produkcja moze zajmowac wiele linii