add keyword reading to the lexer, allowing us to catch parse errors in which keywords are placed where they shouldn't be