Refactored lexical analyzer into a scanner class.