Got rid of the polymorphism for the 'Dao.NewParser.token' function, the compiler kept on compaining about ambiguous instances, even for variables that were never used. GHC ought not behave that way.
I am changing the evaluation strategy of the new parser. Now, every parser must explicitly shift the next token with the newly added 'Dao.NewParser.shift' function.
Got rid of some old comments that are no longer relevant.
Created a new control data structure for constructing parsers, one that should make it much easier to use Control.Applicative.Applicative, Control.Applicative.Alternative, and monadic bind to build parsers, while using the parser monad that I was using before as a kind of lower-level parser for actually doing the work of checking and shifting tokens from the token stream.
Got rid of a data structure I had kind of used as a study before adding the newer 'Dao.NewParser.GSTP' control structure.
Renamed a bunch of symbols. Now there are three monadic functions for parsing: (from lowest to highest level) 'Dao.NewParser.TokStream', 'Dao.NewParser.ParseTable', and 'Dao.GenParser'. Actually, I intend to make 'Dao.NewParser.ParseTable' a private (not exported) intermediate very soon. I also modified instantiation of these monads into 'Control.Monad.Error.Class.MonadError' and 'Control.Monad.State.Class.MonadState' classes. Everything is much more consistent now.
Renamed 'Dao.NewParser.evalGSTPtoGenParser' to 'Dao.NewParser.evalGenParserToParseTable'.