We could extend this lexer to generate tokens for keywords (or just a single `KEYWORD` token to cover all the keywords), instead of requiring the parser to distinguish between keywords and identifiers.