(1) Modified the 'Dao.NewParser.expect' function so it is now polymorphic over 'Dao.NewParser.MonadParser' types.
(2) Defined the 'Dao.NewParser.LookAhead' 'Dao.NewParser.MonadParser' which behaves similarly to 'Dao.NewParser.Parser' except monadic bind and applicative now store each token in the function call stack and restore the tokens if the 'Dao.NewParser.LookAhead' backtracks.
(3) Redefined the 'Dao.NewParser.token' and 'Dao.NewParser.tokenName' (and renamed tokenName to tokenBy) to take a polymorphic function which will be 'Data.Functor.fmap'ped to the next 'Dao.NewParser.TokenAt' object in the 'Dao.NewParser.TokStream' to produce an arbitray value. Also defined several default functions all starting with the name 'as...' to be used with the 'Dao.NewParser.token' and 'Dao.NewParser.tokenBy' function.
Rewrote any part of the parser that needed changing due to the recent updates in the "Dao.NewParser" module.
Cleaned up a lot of the scrap code and comments that had accumulated over the past few weeks in the "Dao.NewParser" module. Also, modified 'Dao.NewParser.nextTokenPos' and any functions which used to deal with a triple of the type @('Dao.NewParser.LineNum', 'Dao.NewParser.ColumnNum', 'Dao.NewParser.Token' tok)@ to now make use of 'Dao.NewParser.TokenAt' instead.
Bug fix: the 'Dao.NewParser.Parser' data type was defined such that the semantics didn't behave as I had intended. I had to redefine the 'Dao.NewParser.Parser' data type and it's instantiation into the 'Control.Monad.Monad', 'Control.Monad.MonadPlus', 'Control.Monad.State.MonadState', and 'Control.Monad.Error.MonadError' classes.
Declaring more of the Dao language parser using the new parser. Discovering more bugs.
The NewParser just doesn't work, and I cannot figure out why.