code: def parse_core_link_format(self, link_format, base_path, remote_server):
          
          while len(link_format) > 0:
              pattern = "<([^>]*)>;"
              result = re.match(pattern, link_format)
              path = result.group(1)
              path = path.split("/")
              path = path[1:][0]
              link_format = link_format[result.end(1) + 2:]
              pattern = "([^<,])*"
              result = re.match(pattern, link_format)
              attributes = result.group(0)
              dict_att = {}
              if len(attributes) > 0:
                  attributes = attributes.split(";")
                  for att in attributes:
                      a = att.split("=")
                      if len(a) > 1:
                          dict_att[a[0]] = a[1]
                      else:
                          dict_att[a[0]] = a[0]
                  link_format = link_format[result.end(0) + 1:]
              # TODO handle observing
              resource = RemoteResource('server', remote_server, path, coap_server=self, visible=True, observable=False,
                                        allow_children=True)
              resource.attributes = dict_att
              self.add_resource(base_path + "/" + path, resource)
  
          logger.info(self.root.dump())
docs: Parse discovery results.
  
          :param link_format: the payload of the response to the discovery request
          :param base_path: the base path used to create child resources discovered on the remote server
          :param remote_server: the (ip, port) of the remote server