Recursive parser

Ok, new parser is at least functional, so I'm merging it into the main.