code: def __get_type_from_char(self, c):
          
          if c.isdigit() or c =='-':
              return ("number", False, None)
          elif c == 't' or c == 'f': ## true/false
              return ("boolean", False, None)
          elif c == 'n': ## nil
              return ("nil", False, None)
          elif c == '\\' :
              return ("char", False, None)
          elif c == ':':
              return ("keyword", False, None)
          elif c == '"':
              return ("string", False, None)
          elif c == '#':
              if self.__read_and_back(1) == '{':
                  return ("set", True, "}")
              if self.__read_and_back(1) == ':':
                  return ("namespaced_dict", True, "}")
              if self.__read_and_back(4) == 'inst':
                  return ("datetime", False, None)
              if self.__read_and_back(4) == 'uuid':
                  return ("uuid", False, None)
          elif c == '{':
              return ("dict", True, "}")
          elif c == '(':
              return ("list", True, ")")
          elif c == '[':
              return ('list', True, "]")
  
          return (None, False, None)
docs: return a tuple of type information
          * type name
          * a flag to indicate if it's a collection