Finished lexer implementation with specs