assigning operators should be distinct from binops
distinguish between returntype and datatype
simplify names and rules
allow empty parts in function definition
fix dangling if-else ambiguity