2020-12-06
Używając LEX-a i BISON-a zaimplementuj translator wyrażeń arytmetycznych w ciele z postaci infiksowej do postaci postfiksowej (odwrotnej notacji polskiej), z korekcją postaci liczby (w nie ma liczb ujemnych i większych lub równych ), i podającej wynik obliczenia wyrażenia. Wyrażenia do policzenia umieszczone są w osobnych liniach. Program ma przetwarzać wszystkie linie wejścia, a linie zaczynające się od
#
traktować jak linie komentarza i omijać. W przypadku długich linii ma być możliwość ich podzielenie za pomocą znaku\
(tak jak w języku C).Zadbaj o właściwe priorytety operatorów, właściwą łączność operatorów i odpowiednią obsługę błędów. Pamiętaj o unarnym operatorze
-
dla danych wejściowych (często dla wygody w piszemy np. zamiast ). Potęgowanie powinno być dozwolone tylko jako pojedynczą operacja — nie wolno składać potęg.
Rozwiązanie zadania znajduje się w plikach ex-1.{l,y}
. Po uprzednim skompilowaniu przy pomocy make
program można uruchomić przy pomocy ./ex-1
.
Napisz poprzednie zadanie w innym języku programowania, np. w Pythonie z pakietem PLY lub Javie z biblioteką ANTLR (inne języki uzgodnij z prowadzącym laboratorium).
Program jest napisany w Pythonie. Kod źródłowy znajduje się w plikach ./ex-2.py
oraz auxiliary.py
.
Przed uruchomieniem należy się upewnić, że paczka ply
jest zainstalowana i dostępna dla programu python3
(wystarczy uruchomić polecenie python3 -m pip install ply
).
Żeby uruchomić program, należy wykonać ./ex-2.py
lub najpierw make
a następnie ./ex-2
.