class_docstr: The option parser is an internal class that is ultimately used to
  parse options and arguments.  It's modelled after optparse and brings
  a similar but vastly simplified API.  It should generally not be used
  directly as the high level Click classes wrap it for you.
  
  It's not nearly as extensible as optparse or argparse as it does not
  implement features that are implemented on a higher level (such as
  types or defaults).
  
  :param ctx: optionally the :class:`~click.Context` where this parser
              should go with.
class_docstr_tok: ["The","option","parser","is","an","internal","class","that","is","ultimately","used","to","parse","options","and","arguments",".","It","'s","modelled","after","optparse","and","brings","a","similar","but","vastly","simplified","API",".","It","should","generally","not","be","used","directly","as","the","high","level","Click","classes","wrap","it","for","you",".","It","'s","not","nearly","as","extensible","as","optparse","or","argparse","as","it","does","not","implement","features","that","are","implemented","on","a","higher","level","(","such","as","types","or","defaults",")",".",":","param","ctx",":","optionally","the",":","class",":","`","~click.Context","`","where","this","parser","should","go","with","."]
code: def _process_opts(self, arg, state):
      explicit_value = None
      # Long option handling happens in two parts.  The first part is
      # supporting explicitly attached values.  In any case, we will try
      # to long match the option first.
      if "=" in arg:
          long_opt, explicit_value = arg.split("=", 1)
      else:
          long_opt = arg
      norm_long_opt = normalize_opt(long_opt, self.ctx)
  
      # At this point we will match the (assumed) long option through
      # the long option matching code.  Note that this allows options
      # like "-foo" to be matched as long options.
      try:
          self._match_long_opt(norm_long_opt, explicit_value, state)
      except NoSuchOption:
          # At this point the long option matching failed, and we need
          # to try with short options.  However there is a special rule
          # which says, that if we have a two character options prefix
          # (applies to "--foo" for instance), we do not dispatch to the
          # short option code and will instead raise the no option
          # error.
          if arg[:2] not in self._opt_prefixes:
              return self._match_short_opt(arg, state)
          if not self.ignore_unknown_options:
              raise
          state.largs.append(arg)
  
imports: import re
  from collections import deque
  from .exceptions import BadArgumentUsage
  from .exceptions import BadOptionUsage
  from .exceptions import NoSuchOption
  from .exceptions import UsageError
label_desc: Use image node_id 9 for calling the OptionParser obj's underlying member method code with example usage: obj._process_opts(arg, state) and returns: self