code: def parse_shorts(tokens, options):
      
      token = tokens.move()
      assert token.startswith('-') and not token.startswith('--')
      left = token.lstrip('-')
      parsed = []
      while left != '':
          short, left = '-' + left[0], left[1:]
          similar = [o for o in options if o.short == short]
          if len(similar) > 1:
              raise tokens.error('%s is specified ambiguously %d times' %
                                 (short, len(similar)))
          elif len(similar) < 1:
              o = Option(short, None, 0)
              options.append(o)
              if tokens.error is DocoptExit:
                  o = Option(short, None, 0, True)
          else:  # why copying is necessary here?
              o = Option(short, similar[0].long,
                         similar[0].argcount, similar[0].value)
              value = None
              if o.argcount != 0:
                  if left == '':
                      if tokens.current() in [None, '--']:
                          raise tokens.error('%s requires argument' % short)
                      value = tokens.move()
                  else:
                      value = left
                      left = ''
              if tokens.error is DocoptExit:
                  o.value = value if value is not None else True
          parsed.append(o)
      return parsed
docs: shorts ::= '-' ( chars )* [ [ ' ' ] chars ] ;