Se existe uma lib pronta pra isso eu não conheço…
Mas você implementar na forma de uma árvore binária, montando uma estrutura onde os nós-filho são os números, e o ultimo nó pai a operação… Agrupando as operações em pares…
No seu exemplo ficaria algo como:
(((5 + 6) * 8) * 2)
/ \
(5+6) * 8 *2
/ \
(5+6) *8
E resolveria as folhas, sempre subindo na estrutura… Ou algo assim…
Viajei um monte, e não consegui explicar… Provavelmente compliquei mais… mas enfim… hehe