I had forgotten that keywords and operators were lexed using different algorithms, so since a while ago, the "Dao.NewParser" API for adding keywords and operators were one in the same. Now I have discovered that this was a mistake, I have separated the APIs for creating keywords and operators.  Now the 'Dao.NewParser.keywordTable' function, unlike 'Dao.NewParser.operatorTable' takes a 'Dao.NewParser.Regex' and a default token type to create if the token lexed-off of the input by the 'Dao.NewParser.Regex' is not a keyword.
Added the parser for "data" expressions, and am still trying to fix the parsers for the "date" and
"time" expressions.  I had actually got the parser to parse the entire "tests/1.dao" file, and as
soon as I did I created a backup of my work. Now after the few changes I made by adding the "data"
parser and rearranging the "date" and "time" and operator lexers in the call to "activate", very
mysteriously the parser has stopped working and is giving me a strange error. Even after I revert to
the backup I made when it was able to parse the "tests/1.dao" file and re-compiling, trying to parse
"tests/1.dao" in the exact state the program was in when it last worked, I get the same error as I
am getting now. I have no clue what changed or what is going wrong.
THE NEW PARSER WORKS! "tests/1.dao" can now be fully parsed.
OK, the problem from the previous commit on this file was that I had moved the "operators" lexer to a place after the "base10parser" in the list of parsers for activation, and I had done this before I made the backup of the functioning parser. So "base10parser" was lexing the dot and tokenizing it as a LABEL before the operators parser had a chance to tokenize the dot as its own token. The "date" and "time" tokenizers are still mysteriously not working.