I'd recommend to look for ``+``/``-`` in ``operator[0]`` and not somewhere in the string. Otherwise you process stuff like ``1+5`` and parse only the numeric values (``15``) further below, which makes ``+15``.