code: def split_quoted(s):
      """Split a string up according to Unix shell-like rules for quotes and
      backslashes.  In short: words are delimited by spaces, as long as those
      spaces are not escaped by a backslash, or inside a quoted string.
      Single and double quotes are equivalent, and the quote characters can
      be backslash-escaped.  The backslash is stripped from any two-character
      escape sequence, leaving only the escaped character.  The quote
      characters are stripped from any quoted string.  Returns a list of
      words.
      """
  
      # This is a nice algorithm for splitting up a single string, since it
      # doesn't require character-by-character examination.  It was a little
      # bit of a brain-bender to get it working right, though...
      if _wordchars_re is None:
          _init_regex()
  
      s = s.strip()
      words = []
      pos = 0
  
      while s:
          m = _wordchars_re.match(s, pos)
          end = m.end()
          if end == len(s):
              words.append(s[:end])
              break
  
          if (
              s[end] in string.whitespace
          ):  # unescaped, unquoted whitespace: now
              words.append(
                  s[:end]
              )  # we definitely have a word delimiter
              s = s[end:].lstrip()
              pos = 0
  
          elif s[end] == "\\":  # preserve whatever is being escaped;
              # will become part of the current word
              s = s[:end] + s[end + 1 :]
              pos = end + 1
  
          else:
              if s[end] == "'":  # slurp singly-quoted string
                  m = _squote_re.match(s, end)
              elif s[end] == '"':  # slurp doubly-quoted string
                  m = _dquote_re.match(s, end)
              else:
                  raise RuntimeError(
                      "this can't happen (bad char '%c')" % s[end]
                  )
  
              if m is None:
                  raise ValueError(
                      "bad string (mismatched %s quotes?)" % s[end]
                  )
  
              (beg, end) = m.span()
              s = s[:beg] + s[beg + 1 : end - 1] + s[end:]
              pos = m.end() - 2
  
          if pos >= len(s):
              words.append(s)
              break
  
      return words
  
imports: import os
  import re
  import importlib.util
  import string
  import sys
  import distutils
  from distutils.errors import DistutilsPlatformError
  from distutils.dep_util import newer
  from distutils.spawn import spawn
  from distutils import log
  from distutils.errors import DistutilsByteCompileError
label_desc: Use image node_id 9 for calling a global function with example usage: split_quoted(s) and returns: words