I am parsing a domain specific language which has several type definitions. Primitive types have been relatively straight-forward to parse, but moving on to the complex type