code: def nextobject(self):
          
          while not self.results:
              (pos, token) = self.nexttoken()
              #print (pos,token), (self.curtype, self.curstack)
              if isinstance(token, (int, long, float, bool, str, PSLiteral)):
                  # normal token
                  self.push((pos, token))
              elif token == KEYWORD_ARRAY_BEGIN:
                  # begin array
                  self.start_type(pos, 'a')
              elif token == KEYWORD_ARRAY_END:
                  # end array
                  try:
                      self.push(self.end_type('a'))
                  except PSTypeError:
                      if STRICT:
                          raise
              elif token == KEYWORD_DICT_BEGIN:
                  # begin dictionary
                  self.start_type(pos, 'd')
              elif token == KEYWORD_DICT_END:
                  # end dictionary
                  try:
                      (pos, objs) = self.end_type('d')
                      if len(objs) % 2 != 0:
                          raise PSSyntaxError('Invalid dictionary construct: %r' % (objs,))
                      # construct a Python dictionary.
                      d = dict((literal_name(k), v) for (k, v) in choplist(2, objs) if v is not None)
                      self.push((pos, d))
                  except PSTypeError:
                      if STRICT:
                          raise
              elif token == KEYWORD_PROC_BEGIN:
                  # begin proc
                  self.start_type(pos, 'p')
              elif token == KEYWORD_PROC_END:
                  # end proc
                  try:
                      self.push(self.end_type('p'))
                  except PSTypeError:
                      if STRICT:
                          raise
              else:
                  if self.debug:
                      logging.debug('do_keyword: pos=%r, token=%r, stack=%r' % \
                                    (pos, token, self.curstack))
                  self.do_keyword(pos, token)
              if self.context:
                  continue
              else:
                  self.flush()
          obj = self.results.pop(0)
          if self.debug:
              logging.debug('nextobject: %r' % (obj,))
          return obj
docs: Yields a list of objects.
  
          Returns keywords, literals, strings, numbers, arrays and dictionaries.
          Arrays and dictionaries are represented as Python lists and dictionaries.