Define parser and compiler behavior for invalid expressions

The behavior is defined by adding some new tests. It happens to agree with the current behavior (`parse.ParseError` is thrown).

fixes #9