<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def tokenize(s):
 r"""Returns an iterable through all subparts of string splitted by '.' So: ['foo', 'bar', 'wiz'] Contrary to traditional ``.split()`` method, this function has to deal with any type of data in the string. So it actually interprets the string. Characters with meaning are '.' and '\'. Both of these can be included in a token by quoting them with '\'. So dot of slashes can be contained in token: foo dot<.> slash<\> Notice that empty keys are also supported: ['foo', '', 'bar'] Given an empty string: [''] And a None value: [] """

    if s is None:
        return
    tokens = (re.sub(r'\\(\\|\.)', r'\1', m.group(0))
              for m in re.finditer(r'((\\.|[^.\\])*)', s))
    ## an empty string superfluous token is added after all non-empty token
    for token in tokens:
        if len(token) != 0:
            next(tokens)
        yield token