Zadanie 4 (termin oddania 8.12, godz 18:30) ------------------------------------------- Napisz program, ktory wyprowadzi slowo z symbolu poczatkowego zgodnie z podana gramatyka i zadana kolejnoscia stosowania produkcji. Przyjmujemy w tym zadaniu, ze zbior symboli koncowych (alfabet), to male litery alfabetu lacinskiego, zas zbior symboli pomocniczych to wielkie litery alfabetu lacinskiego. Jako symbol poczatkowy przyjmujemy A. WEJSCIE ------- Program wczytuje wiersze ze standardowego wejscia. Poczatkowe wiersze (do wiersza zawierajacego jedynie znak -) zawieraja produkcje. Kazdy wiersz zawiera: wielka litera (symbol pomocniczy, lewa strona produkcji znaki -> ciag malych i wielkich liter oraz znakow | Znaki | sluza rozdzielaniu prawych stron produkcji. Na przyklad zapis: A->aA|aBb|C| opisuje cztery produkcje: A->aA, A->aBb, A->C, A->\epsilon Jak widac na tym przykladzie puste slowo reprezentujemy jako pusty napis. Po opisie produkcji znajduje sie wiersz zawierajacy wylacznie znak -, nastepnie znajduje sie jeden lub wiecej wierszy okreslajacych, ktore produkcje nalezy kolejno zastosowac. Kazdy taki wiersz zawiera: wielka litere pojedynczy odstep numer produkcji o lewej stronie bedacej symbolem pomocnicznym z poczatku wiersza. Na przyklad zapis: A 2 oznacza druga produkcje z symbolu pomocniczego A, czyli w podanym wczesniej przykladzie A->aBb. Wskazana produkcje nalezy zastosowac do pierwszego od lewej wystapienia podanego symbolu pomocniczego. Jesli wskazanej produkcji nie da sie wykonac (nie ma w slowie takiego symbolu pomocniczego, albo numer produkcji jest za duzy lub zbyt maly, to slowo pozostaje bez zmian). Na koncu danych znajduje sie wiersz skladajacy sie ze znaku -. Poza wymienionymi w opisie spacjami wiersze danych nie zawieraja zadnych spacji (ani innych dodatkowych znakow). Wolno zalozyc poprawnosc danych. WYJSCIE ------- Program ma wypisac na standardowe wyjscie tyle wierszy ile wymieniono produkcji do zastosowania. Kazdy wiersz ma zawierac aktualna postac wyprowadzanego slowa. PRZYKLAD -------- Dane: A->BC B->bBc| C->aCa| - A 1 B 1 C 1 B 1 B 2 C 1 - Wynikiem powinny byc wiersze: BC bBcC bBcaCa bbBccaCa bbccaCa bbccaaCaa