Finally connected the new parser to the testing program. New bugs are being discovered. Also, the
new parser is roughly 33% slower than the old parser, but there is room for improvement.
I have modified the 'Dao.NewParse.GenLexer' monad to now be able to throw it's state when throwing an error, so that the calling context can see which line and column the lexer was on when the failure occurred.
Discovered new bugs and inefficiencies in the new parser. I am going to try my best to resolve these issues because I am convinced that the new parser is of a better design than the old.
Instantiated 'Dao.Tree.Tree' into the 'Data.Monoid.Monoid' class, with @'Dao.Tree.unionWith 'Data.Monoid.mappend'@ as the instantiation of 'Data.Monoid.mappend.
The instantiation of 'Dao.Tree.Tree' into the 'Data.Binary.Binary' class had 'Prelude.Show' as a restriction on the polymorphic types over which it was instantiated. I had done this for debugging purposes but forgot to remove it. Now it is no longer restricted by the 'Prelude.Show' class.
Added the 'ObjTree' type to "Dao.Prelude", although this is just the beginning, I will be writing more functions later. The idea is to be able to store objects into a somewhat persistent state that can be saved/loaded from disk and plugged into Dao programs from the GHCi command line.
Bug fix: I fixed the parser to the point where it is somewhat working, it can at least parse the test files without throwing an incorrect failure. I have discovered that numbers still are not parsing correctly due to the lexer, and I will have to re-write it again.
The new parser is now ready for debugging. I needed to add a few more prerequisites to the make file to make it easier to quickly re-compile the new parser's sources from within Vim.
Eliminated the default group of tokens from "Dao.NewParser". Every tokenizer and parser must now create their own tokens and define their own Lexer and Parser and ParseErr using type synonyms.