looks like there's a lot more happening here than it seems:
$calc(1 -+-- 2) -> 3
$calc(1 -+- 2) -> -1
$calc(1 -/- 2) -> 1
$calc(1 -/-- 2) -> 0
$calc(1 ++--++-- 2) -> 3
$calc(1 +++--++-- 2) -> -1
$calc(1 ++--++--/ 2) -> 0
some weird results
would be less confusing if every invalid operator was treated as such, and caused itself and the rest of the expression to be ignored