docs: def string_to_tokentype(s):
      """
      Convert a string into a token type::
  
          >>> string_to_token('String.Double')
          Token.Literal.String.Double
          >>> string_to_token('Token.Literal.Number')
          Token.Literal.Number
          >>> string_to_token('')
          Token
  
      Tokens that are already tokens are returned unchanged:
  
          >>> string_to_token(String)
          Token.Literal.String
      """
      if isinstance(s, _TokenType):
          return s
      if not s:
          return Token
      node = Token
      for item in s.split('.'):
          node = getattr(node, item)
      return node