Thoroughly cleaned-up the "Dao.NewParser" module, and introduced the 'Dao.NewParser.MonadParser' class into which several parsing functions were consolidated. Many of the functions have been renamed, for example, 'Dao.NewParser.parseEOF' is now 'Dao.NewParser.guardEOF' and a member of the 'Dao.NewParser.MonadParser' class. 'Dao.NewParser.GenParseError' is now simply called 'GenError'. I renamed 'Dao.NewParser.GenParser' to 'Dao.NewParser.ParseTable' and 'Dao.NewParser.GSTP' to 'Dao.NewParser.GenParser'. I then instantiated 'Dao.NewParser.TokStream', 'Dao.NewParser.ParseTable', and 'Dao.NewParser.GenParser' into the 'MonadParser' class, and re-defined as many of the functions as I could to make use of these functions. I modified the instantiation of all of these parsers into the 'Control.Monad.Error.Class.MonadError' class such that 'Dao.NewParser.GenError' now specifically stores the 'Dao.NewParser.TokStreamState' state, not just the polymorphic type reserved for arbitrary user-state types.
Thoroughly cleaned-up the "Dao.NewParser" module, and introduced the 'Dao.NewParser.MonadParser' class into which several parsing functions were consolidated. Many of the functions have been renamed, for example, 'Dao.NewParser.parseEOF' is now 'Dao.NewParser.guardEOF' and a member of the 'Dao.NewParser.MonadParser' class. 'Dao.NewParser.GenParseError' is now simply called 'GenError'. I renamed 'Dao.NewParser.GenParser' to 'Dao.NewParser.ParseTable' and 'Dao.NewParser.GSTP' to 'Dao.NewParser.GenParser'. I then instantiated 'Dao.NewParser.TokStream', 'Dao.NewParser.ParseTable', and 'Dao.NewParser.GenParser' into the 'MonadParser' class, and re-defined as many of the functions as I could to make use of these functions. I modified the instantiation of all of these parsers into the 'Control.Monad.Error.Class.MonadError' class such that 'Dao.NewParser.GenError' now specifically stores the 'Dao.NewParser.TokStreamState' state, not just the polymorphic type reserved for arbitrary user-state types.

printedheart/Dao