nice grammar: clean up Types, factoring in rules; start AST definition, directed by grammar