Uma paródia lamentável de uma calculadora

Avalie uma expressão aritmética sem espaços que contém números e +, -, * ou /, respeitando a precedência usual dos operadores. Os números podem começar com um sinal de menos, e a divisão pode produzir um resultado decimal.

calculator("23+4");       // 27
calculator("13+2-5*2");   // 5
calculator("49/7*2-3");   // 11
calculator("-34/4");      // -8.5

As entradas não contêm parênteses, espaços nem funções matemáticas.