docs: def tokenize(code):
      """Tokenize the string `code`"""
      tok_regex = '|'.join('(?P<{}>{})'.format(*pair) for pair in _tokens)
      tok_regex = re.compile(tok_regex, re.IGNORECASE|re.M)
      line_num = 1
      line_start = 0
      for mo in re.finditer(tok_regex, code):
          kind = mo.lastgroup
          value = mo.group(kind)
          if kind == 'NEWLINE':
              line_start = mo.end()
              line_num += 1
          elif kind == 'SKIP' or value=='':
              pass
          else:
              column = mo.start() - line_start
              yield Token(kind, value, line_num, column)