en involves splitting up the
        functions of the lower-level and higher-level parsing. The lexical scanner
        deals with things at the character level, collecting characters into strings,
        converting character sequence into different representations as integers,
        etc., and passing them along to the parser proper as indivisible tokens.
        It's also considered normal to let the scanner do additional jobs, such as
        identifying keywords, storing identifiers in tables, etc.
  