code: def parse(data, datafile):
      
      data._last_travel = [0, [0]]  # x and verbs used by section 3
  
      while True:
          section_number = int(datafile.readline())
          if not section_number:  # no further sections
              break
          store = globals().get('section%d' % section_number)
          while True:
              fields = [ (int(field) if field.lstrip('-').isdigit() else field)
                         for field in datafile.readline().strip().split('\t') ]
              if fields[0] == -1:  # end-of-section marker
                  break
              store(data, *fields)
  
      del data._last_travel  # state used by section 3
      del data._object       # state used by section 5
  
      data.object_list = sorted(set(data.objects.values()), key=attrgetter('n'))
      #data.room_list = sorted(set(data.rooms.values()), key=attrgetter('n'))
      for obj in data.object_list:
          name = obj.names[0]
          if hasattr(data, name):
              name = name + '2'  # create identifiers like ROD2, PLANT2
          setattr(data, name, obj)
  
      return data
docs: Read the Adventure data file and return a ``Data`` object.