Building the parser

This is complicated to say the least.