Cześć,
Mam problem, na laborkach dostałem zadanie zrobienie kalkulatora w prologu dla liczb rzeczywistych z nawiasami.
Czyli np "44+((3+33)(3(3+3)))"
Generalnie nie mam pomysłu w jaki sposób zrobić określenie liczby całkowitej dowolnie dużej(bo rozwiązanie zaprezentowane poniżej raczej się nie sprawdzi), a dalej liczby rzeczywistej.
Poniżej kod jaki mam dotychczas:
%Cyfry
cyfra(X) --> "1", {X is 1}.
cyfra(X) --> "2", {X is 2}.
cyfra(X) --> "3", {X is 3}.
cyfra(X) --> "4", {X is 4}.
cyfra(X) --> "5", {X is 5}.
cyfra(X) --> "6", {X is 6}.
cyfra(X) --> "7", {X is 7}.
cyfra(X) --> "8", {X is 8}.
cyfra(X) --> "9", {X is 9}.
cyfra(X) --> "0", {X is 0}.
%Liczby Ca�kowite
liczba_c(X) --> cyfra(X).
liczba_c(X) --> cyfra(A), cyfra(B), {X is((A*10)+B)}.
liczba_c(X) --> "-",liczba_c(A),{X is -A}.
%Operatory
plus(X) --> "+".
minus(X) --> "-".
razy(X) --> "*".
przez(X) --> "/".
%Dzilania
iloczyn(Wynik) --> liczba_c(Wynik).
iloczyn(Wynik) --> liczba_c(A), razy(D), liczba_c(B), {Wynik is A*B}.
%iloczyn(Wynik) --> iloczyn(A), razy(D), liczba_c(B), {Wynik is A*B}.
iloczyn(Wynik) --> liczba_c(A), razy(D), iloczyn(B), {Wynik is A*B}.
suma(Wynik) --> liczba_c(Wynik).
suma(Wynik) --> liczba_c(A), plus(D), liczba_c(B), {Wynik is A+B}.
suma(Wynik) --> liczba_c(A), plus(D), suma(B), {Wynik is A+B}.
suma(Wynik) --> iloczyn(A), plus(D), iloczyn(B), {Wynik is A+B}.
suma(Wynik) --> iloczyn(A), plus(D), suma(B), {Wynik is A+B}.
roznica(Wynik) --> liczba_c(Wynik).
roznica(Wynik) --> liczba_c(A), minus(D), liczba_c(B), {Wynik is A-B}.
iloraz(Wynik) --> liczba_c(Wynik).
iloraz(Wynik) --> liczba_c(A), przez(D), liczba_c(B), {Wynik is A/B}.
oblicz(Wynik) --> suma(Wynik).
oblicz(Wynik) --> roznica(Wynik).
oblicz(Wynik) --> iloczyn(Wynik).
oblicz(Wynik) --> iloraz(Wynik).
%oblicz(Wynik) --> suma(X), plus(D), iloczyn(Y), {Wynik is X+Y}.
Proszę o jakieś porady :)