move component parsing into its own grammar, with the intention of doing the same to NETS etc. in the future
add error handling for component grammar