implement unary `!`

Support the ! character in expressions.