Zadanie 4 (termin oddania 8.12, godz 18:30) ------------------------------------------- Napisz program, który wyprowadzi słowo z symbolu początkowego zgodnie z podaną gramatyką i zadaną kolejnością stosowania produkcji. Przyjmujemy w tym zadaniu, że zbiór symboli końcowych (alfabet), to małe litery alfabetu łacińskiego, zaś zbiór symboli pomocniczych to wielkie litery alfabetu łacińskiego. Jako symbol początkowy przyjmujemy A. WEJŚCIE ------- Program wczytuje wiersze ze standardowego wejścia. Początkowe wiersze (do wiersza zawierającego jedynie znak -) zawierają produkcje. Każdy wiersz zawiera: wielką literą (symbol pomocniczy, lewa strona produkcji znaki -> ciąg małych i wielkich liter oraz znaków | Znaki | służą rozdzielaniu prawych stron produkcji. Na przykład zapis: A->aA|aBb|C| opisuje cztery produkcje: A->aA, A->aBb, A->C, A->\epsilon Jak widać na tym przykładzie puste słowo reprezentujemy jako pusty napis. Po opisie produkcji znajduje się wiersz zawierający wyłacznie znak -, następnie znajduje się jeden lub więcej wierszy określających, które produkcje należy kolejno zastosować. Każdy taki wiersz zawiera: wielką literę pojedynczy odstęp numer produkcji o lewej stronie będącej symbolem pomocnicznym z początku wiersza. Na przykład zapis: A 2 oznacza drugą produkcję z symbolu pomocniczego A, czyli w podanym wcześniej przykładzie A->aBb. Wskazaną produkcję należy zastosowac do pierwszego od lewej wystąpienia podanego symbolu pomocniczego. Jeśli wskazanej produkcji nie da się wykonać (nie ma w słowie takiego symbolu pomocniczego, albo numer produkcji jest za duży lub zbyt mały, to słowo pozostaje bez zmian). Na końcu danych znajduje się wiersz składający się ze znaku -. Poza wymienionymi w opisie spacjami wiersze danych nie zawierają żadnych spacji (ani innych dodatkowych znaków). Wolno założyć poprawność danych. WYJŚCIE ------- Program ma wypisać na standardowe wyjście tyle wierszy ile wymieniono produkcji do zastosowania. Każdy wiersz ma zawierać aktualną postać wyprowadzanego słowa. PRZYKŁAD -------- 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