Tidy up ParseExpr

There was a lot of repetitive arity-checking and there was a missed opportunity
to use the string variant of the switch statement.