El algoritmo si va a ser un poco largo pero simple
Crea un array, si hay números seguidos los guarda con sus operadores, si hay un parentesis, lo guarda como una dimension adicional del array, ej
5+5(5+8*7)/4
Array[0]=5
Array[1]=+
Array[2]=5
Array[3][0]=5
....
Array[3][4]=7
Array[4]=/
Array[5]=4
Luego resuelves las operaciones mas anidadas (dentro de mas corchetes)
Para resolver cualquier operacion tomas todos los numeros y los colocas en un nuevo array, para pasarlos por filtro de prioridad, es decir si hay un * primero resuelves los números a sus lados (multiplicación ) y rearmas el array con los resultados (y menos indices) hasta que el largo del array sea 1... haces esto con todos los anidados hasta que no quede sino el array principal y resuelves... no esta de más añadir que si te quedan 2 números en indices consecutivos puedes agregar en medio el * para que el proceso sea lineal y predecible