preproc = "import"

#number = '(?<=-)([[:digit:]]+)'

include "number.lang"

normal = '\\"'
normal = '\\\''

#include "c_string.lang"

string delim "\"" "\"" escape "\\"
string delim "'" "'" escape "\\"

function = 'function[[:blank:]]+([[:alpha:]]|_)[[:word:]]*[[:blank:]]*(\(\))?'
function = '([[:alpha:]]|_)[[:word:]]*[[:blank:]]*\(\)'

# avoids, in things such as --bind, that words are highlighted as keywords
normal = '([[:alpha:]]*[-/]+[[:alpha:]]+)+'

keyword = "alias|always|autoload|bg|bindkey|break|builtin",
          "bye|cap|case|cd|chdir|clone|command|comparguments",
          "compcall|compctl|compdescribe|compfiles|compgroups",
          "compquote|comptags|comptry|compvalues|continue",
          "declare|dirs|disable|disown|do|echo|echotc|echoti",
          "elif|else|emulate|enable|esac|eval|exec|exit",
          "export|false|fc|fg|fi|float|for|foreach|function",
          "functions|getcap|getln|getopts|hash|history|if|in",
          "integer|jobs|kill|let|limit|local|log|logout",
          "nocorrect|noglob|none|popd|print|printf|pushd",
          "pushln|pwd|r|read|readonly|rehash|repeat|return",
          "sched|select|set|setcap|setopt|shift|source|stat",
          "suspend|test|then|time|times|trap|true|ttyctl|type",
          "typeset|ulimit|umask|unalias|unfunction|unhash",
          "unlimit|unset|unsetopt|until|vared|wait|whence",
          "where|which|while|zcompile|zformat|zftp|zle",
          "zmodload|zparseopts|zprof|zpty|zregexparse",
          "zsocket|zstyle|ztcp"

variable = '\$\{([^[:blank:]]+)\}'
variable = '\$\(([^[:blank:]]+)\)'
variable = '\$([[:alpha:]]|_)[[:word:]]*'
variable = '\$([^[:blank:]]{1})'

# notice that - is not a symbol since it can be used in command line parameters
symbol = "~","!","%","^","*","(",")","+","=","[",
        "]","\\",":",";",",",".","/","?","&","<",">","\|","%%"
symbol = '(##){2}(?!#)'

include "script_comment.lang"

# vim:ft=lang
