Cleaned up some more code, added the 'Dao.NewParser.syntax' function. Now users can declare their syntax in a single monad with the ability to tag syntax functions with an ID, and the 'Dao.NewParser.evalSyntaxToRegex' function will not union any syntax functions if they have the same ID, which can save a lot of duplicate work. Also, did more attempted bug fixing, and although debug tracing shows it seems to be working a bit better, it parsing is still evaluating to a fail value for unknown reasons.