refactored Lexer.__call__ and match
added basic lexer_generator implementation