code: def split_function_call(tokens, loc):
      
      pos_args = []
      star_args = []
      kwd_args = []
      dubstar_args = []
      for arg in tokens:
          argstr = "".join(arg)
          if len(arg) == 1:
              if star_args or kwd_args or dubstar_args:
                  raise CoconutDeferredSyntaxError("positional arguments must come first", loc)
              pos_args.append(argstr)
          elif len(arg) == 2:
              if arg[0] == "*":
                  if kwd_args or dubstar_args:
                      raise CoconutDeferredSyntaxError("star unpacking must come before keyword arguments", loc)
                  star_args.append(argstr)
              elif arg[0] == "**":
                  dubstar_args.append(argstr)
              else:
                  kwd_args.append(argstr)
          else:
              raise CoconutInternalException("invalid function call argument", arg)
      return pos_args, star_args, kwd_args, dubstar_args
docs: Split into positional arguments and keyword arguments.