1. Writing a programming language - the Lexer