The most easiest solution for your example is to cycle through your expression twice.
In first run, you only multiply/divide, you dont add or substract anything. In second run, there is no multiplying/dividing, therefore you can do it form left to right.
Pseudocode :
for (number : numbers) { //for each number in numbers in your expression
if (next operator is */){
number */= nextNumber();
removeNextOperator();
removeNextNumber();
doNotMoveFromThisNumberInNextStep(); //like decrementing index variable in classic for-cycle
}
}
now we have expression with only +-, which you say you know how to do it
I thought a bit and it can be done in one run! You only need to remember the sum you get from adding/substracting when you find */.
Pseudocode :
int sum = 0;
for (number : numbers) { //for each number in numbers in your expression
if (next operator is */){
number */= nextNumber();
removeNextOperator();
removeNextNumber();
doNotMoveFromThisNumberInNextStep(); //like decrementing index variable in classic for-cycle
} else { //next operator is +- or the last number
sum +-= numberBefore() +- number;
}
}