if (! this.sh_languages) {
  this.sh_languages = {};
}
sh_languages['sh'] = [
  [
    {
      'regex': /\b(?:import)\b/g,
      'style': 'sh_preproc'
    },
    {
      'regex': /\b[+-]?(?:(?:0x[A-Fa-f0-9]+)|(?:(?:[\d]*\.)?[\d]+(?:[eE][+-]?[\d]+)?))u?(?:(?:int(?:8|16|32|64))|L)?\b/g,
      'style': 'sh_number'
    },
    {
      'regex': /\\"/g,
      'style': 'sh_normal'
    },
    {
      'regex': /\\'/g,
      'style': 'sh_normal'
    },
    {
      'next': 1,
      'regex': /"/g,
      'style': 'sh_string'
    },
    {
      'next': 2,
      'regex': /'/g,
      'style': 'sh_string'
    },
    {
      'regex': /function[ \t]+(?:[A-Za-z]|_)[A-Za-z0-9_]*[ \t]*(?:\(\))?/g,
      'style': 'sh_function'
    },
    {
      'regex': /(?:[A-Za-z]|_)[A-Za-z0-9_]*[ \t]*\(\)/g,
      'style': 'sh_function'
    },
    {
      'regex': /(?:[A-Za-z]*[-\/]+[A-Za-z]+)+/g,
      'style': 'sh_normal'
    },
    {
      'regex': /\b(?:alias|bg|bind|break|builtin|caller|case|command|compgen|complete|continue|declare|dirs|disown|do|done|elif|else|enable|esac|eval|exec|exit|export|false|fc|fg|fi|for|getopts|hash|help|history|if|in|jobs|let|local|logout|popd|printf|pushd|read|readonly|return|select|set|shift|shopt|source|suspend|test|then|times|trap|true|type|typeset|umask|unalias|unset|until|wait|while)\b/g,
      'style': 'sh_keyword'
    },
    {
      'regex': /(?:[A-Za-z]|_)[A-Za-z0-9_]*(?==)/g,
      'style': 'sh_variable'
    },
    {
      'regex': /\$\{(?:[^ \t]+)\}/g,
      'style': 'sh_variable'
    },
    {
      'regex': /\$\((?:[^ \t]+)\)/g,
      'style': 'sh_variable'
    },
    {
      'regex': /\$(?:[A-Za-z]|_)[A-Za-z0-9_]*/g,
      'style': 'sh_variable'
    },
    {
      'regex': /\$(?:[^ \t]{1})/g,
      'style': 'sh_variable'
    },
    {
      'regex': /~|!|%|\^|\*|\(|\)|\+|=|\[|\]|\\|:|;|,|\.|\/|\?|&|<|>|\||(?:##){2}|%%/g,
      'style': 'sh_symbol'
    },
    {
      'next': 3,
      'regex': /#/g,
      'style': 'sh_comment'
    }
  ],
  [
    {
      'exit': true,
      'regex': /"/g,
      'style': 'sh_string'
    },
    {
      'regex': /\\./g,
      'style': 'sh_specialchar'
    }
  ],
  [
    {
      'exit': true,
      'regex': /'/g,
      'style': 'sh_string'
    },
    {
      'regex': /\\./g,
      'style': 'sh_specialchar'
    }
  ],
  [
    {
      'exit': true,
      'regex': /$/g
    }
  ]
];
