move component parsing into its own grammar, with the intention of doing the same to NETS etc. in the future
add error_info for components subgrammar
clean up DEF grammar