This uses stricter (and more correct) rules in both the lexer and the parser. The resulting AST has also received a small rework to make it more compact and less confusing.