/* Converting an infix expression into postfix 

E.g.
| ?- e(V,['(',1,'+',2,')','*',3],[])
V = [1,2,+,3,*]
*/

:- table e/3, t/3.

e(V) --> e(V1), ['+'], t(V2),{append(V1,V2,['+'],V)}.
e(V) --> e(V1), [ '-'], t(V2), {append(V1,V2,['-'],V)}.
e(V) --> t(V).

t(V) --> t(V1), ['*'], f(V2), {append(V1,V2,['*'],V)}.
t(V) --> t(V1), ['/'], f(V2), {append(V1,V2,['/'],V)}.
t(V) --> f(V).

f([X]) --> [X], {number(X)}.
f(V) --> ['('], e(V), [')'].



