Scenariusz na lab 8 Kalkulator stosowy to maszyna, na której można zadać ciąg instrukcji. Maszyna w każdym momencie posiada stos liczb, początkowo pusty. Operacje są następujące: PUSH --- wrzuca na wierzch stosu nową liczbę (można założyć, że jest nieujemna) POP --- zrzuca najwyższą liczbę. ADD --- zrzuca dwie najwyższe liczby i wrzuca ich sumę. SUB --- zrzuca dwie najwyższe liczby i wrzuca ich różnicę (najwyższa minus druga). MUL --- zrzuca dwie najwyższe liczby i wrzuca ich iloczyn. DIV --- zrzuca dwie najwyższe liczby i wrzuca ich iloraz (najwyższa przez druga). NEG --- zrzuca najwyższą liczbę i wrzuca jej liczbę przeciwną. W ten sposób, program to string z kolejnymi instrukcjami, przedzielonymi białymi znakami. Zaimplementuj funkcjonalność, w której dla danego stringa można zasymulować działanie kalkulatora na nim i wypisać na wyjście końcową zawartość stosu. Program powinien sprawdzać poprawność danych wejściowych i wyrzucać następujące wyjątki: - Nieprawidłowy format wejścia --- jakiś niezrozumiały token pojawił się na wejściu, np. nie było liczby zaraz po PUSH. - Pusty stos --- kalkulator próbuje zrzucić element z pustego stosu. - Overflow lub underflow --- wynik operacji nie jest pomiędzy minint a maxint. - Dzielenie przez zero --- jak w nazwie. Napisz prostą metodę main, która sprawdzi Twoją implementację na kilku przykładach. Użyj wyrażenia try { ... } catch { ... } w swoim kodzie. To jest piąte zadanie domowe. Termin oddawania: 24 maja, początek laboratorium.