TODO ---- * Read a configuration file and pass this to rules that want information. Possibly read in a file into a map and then have a function const std::string request_option(const std::string option) * Should we create an output file is one is specified, so that # make CXX=clint will work. * Get pre-processing working satisfactorily Nothing currently works. we need to get #include workign at least * hook up a parser so the we can get access to type information This is the biggest feature that is needed. Once we have this we can then write tests to check the symbol table and the parse tree. * create a function to find the current nested level. It may be worth adding a function to the rules to allow them to perform an action when the nested level changes. This would allow us to test things are still in scope.