#compdef zsh
local curcontext=$curcontext state state_descr line expl
typeset -A opt_args
_arguments -S -s : \
'*-o+[set named option]:option:_options' \
'*+o+[unset named option]:option:_options' \
'(1 -s --shinstdin)'{-s,--shinstdin}'[read commands from standard input]' \
'(-)-b[end of option processing, like --]' \
'(1 -)-c[run a command]:command:_cmdstring' \
'(-)1:script file:_files' \
'*::script arguments:->args' -- && return 0
case $state in
(args)
if [[ -n ${opt_args[(I)-c|-s|--shinstdin]} ]]; then
_files
else
_normal
fi
;;
esac