1<?php
2/*************************************************************************************
3 * bash.php
4 * --------
5 * Author: Andreas Gohr (andi@splitbrain.org)
6 * Copyright: (c) 2004 Andreas Gohr, Nigel McNie (http://qbnz.com/highlighter)
7 * Release Version: 1.0.9.1
8 * Date Started: 2004/08/20
9 *
10 * BASH language file for GeSHi.
11 *
12 * CHANGES
13 * -------
14 * 2008/06/21 (1.0.8)
15 *  -  Added loads of keywords and commands of GNU/Linux
16 *  -  Added support for parameters starting with a dash
17 * 2008/05/23 (1.0.7.22)
18 *  -  Added description of extra language features (SF#1970248)
19 * 2007/09/05 (1.0.7.21)
20 *  -  PARSER_CONTROL patch using SF #1788408 (BenBE)
21 * 2007/06/11 (1.0.7.20)
22 *  -  Added a lot of keywords (BenBE / Jan G)
23 * 2004/11/27 (1.0.2)
24 *  -  Added support for multiple object splitters
25 * 2004/10/27 (1.0.1)
26 *   -  Added support for URLs
27 * 2004/08/20 (1.0.0)
28 *   -  First Release
29 *
30 * TODO (updated 2004/11/27)
31 * -------------------------
32 * * Get symbols working
33 * * Highlight builtin vars
34 *
35 *************************************************************************************
36 *
37 *     This file is part of GeSHi.
38 *
39 *   GeSHi is free software; you can redistribute it and/or modify
40 *   it under the terms of the GNU General Public License as published by
41 *   the Free Software Foundation; either version 2 of the License, or
42 *   (at your option) any later version.
43 *
44 *   GeSHi is distributed in the hope that it will be useful,
45 *   but WITHOUT ANY WARRANTY; without even the implied warranty of
46 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
47 *   GNU General Public License for more details.
48 *
49 *   You should have received a copy of the GNU General Public License
50 *   along with GeSHi; if not, write to the Free Software
51 *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
52 *
53 ************************************************************************************/
54
55$language_data = array (
56    'LANG_NAME' => 'Bash',
57    // Bash DOES have single line comments with # markers. But bash also has
58    // the  $# variable, so comments need special handling (see sf.net
59    // 1564839)
60    'COMMENT_SINGLE' => array('#'),
61    'COMMENT_MULTI' => array(),
62    'COMMENT_REGEXP' => array(
63        //Variables
64        1 => "/\\$\\{[^\\n\\}]*?\\}/i",
65        //BASH-style Heredoc
66        2 => '/<<-?\s*?(\'?)([a-zA-Z0-9]+)\1\\n.*\\n\\2(?![a-zA-Z0-9])/siU',
67        //Escaped String Starters
68        3 => "/\\\\['\"]/siU",
69        // Single-Line Shell usage: Hide the prompt at the beginning
70        /* 4 => "/\A(?!#!)\s*(?>[\w:@\\/\\-\\._~]*[$#]\s?)?(?=[^\n]+\n?\Z)|^(?!#!)(\w+@)?[\w\\-\\.]+(:~?)[\w\\/\\-\\._]*?[$#]\s?/ms" */
71        4 => "/\A(?!#!)(?:(?>[\w:@\\/\\-\\._~]*)[$#]\s?)(?=(?>[^\n]+)\n?\Z)|^(?!#!)(?:\w+@)?(?>[\w\\-\\.]+)(?>:~?[\w\\/\\-\\._]*?)?[$#]\s?/sm"
72        ),
73    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
74    'QUOTEMARKS' => array('"'),
75    'HARDQUOTE' => array("'", "'"),
76    'HARDESCAPE' => array("\'"),
77    'ESCAPE_CHAR' => '',
78    'ESCAPE_REGEXP' => array(
79        //Simple Single Char Escapes
80        1 => "#\\\\[nfrtv\\$\\\"\n]#i",
81        // $var
82        2 => "#\\$[a-z_][a-z0-9_]*#i",
83        // ${...}
84        3 => "/\\$\\{[^\\n\\}]*?\\}/i",
85        // $(...)
86        4 => "/\\$\\([^\\n\\)]*?\\)/i",
87        // `...`
88        5 => "/`[^`]*`/"
89        ),
90    'KEYWORDS' => array(
91        // Control flow keywords and super-important builtins
92        1 => array(
93            'case', 'do', 'done', 'elif', 'else', 'esac', 'fi', 'for', 'function',
94            'if', 'in', 'select', 'set', 'then', 'time', 'until', 'while'
95            ),
96        // Common Unix commands
97        2 => array(
98            'aclocal', 'aconnect', 'apachectl', 'apache2ctl', 'aplay', 'apm',
99            'apmsleep', 'apropos', 'apt-cache', 'apt-cdrom', 'apt-config',
100            'apt-file', 'apt-ftparchive', 'apt-get', 'apt-key', 'apt-listbugs',
101            'apt-listchanges', 'apt-mark', 'apt-mirror', 'apt-sortpkgs',
102            'apt-src', 'apticron', 'aptitude', 'aptsh', 'apxs', 'apxs2', 'ar',
103            'arch', 'arecord', 'as', 'as86', 'ash', 'autoconf', 'autoheader',
104            'automake', 'awk',
105
106            'apachectl start', 'apachectl stop', 'apachectl restart',
107            'apachectl graceful', 'apachectl graceful-stop',
108            'apachectl configtest', 'apachectl status', 'apachectl fullstatus',
109            'apachectl help', 'apache2ctl start', 'apache2ctl stop',
110            'apache2ctl restart', 'apache2ctl graceful',
111            'apache2ctl graceful-stop', 'apache2ctl configtest',
112            'apache2ctl status', 'apache2ctl fullstatus', 'apache2ctl help',
113
114            'apt-cache add', 'apt-cache depends', 'apt-cache dotty',
115            'apt-cache dump', 'apt-cache dumpavail', 'apt-cache gencaches',
116            'apt-cache pkgnames', 'apt-cache policy', 'apt-cache rdepends',
117            'apt-cache search', 'apt-cache show', 'apt-cache showauto',
118            'apt-cache showpkg', 'apt-cache showsrc', 'apt-cache stats',
119            'apt-cache unmet', 'apt-cache xvcg', 'apt-cdrom add',
120            'apt-cdrom ident', 'apt-config dump', 'apt-config shell',
121            'apt-file find', 'apt-file list', 'apt-file purge',
122            'apt-file search', 'apt-file shot', 'apt-file update',
123            'apt-get autoclean', 'apt-get autoremove', 'apt-get build-dep',
124            'apt-get check', 'apt-get clean', 'apt-get dist-upgrade',
125            'apt-get dselect-upgrade', 'apt-get install', 'apt-get markauto',
126            'apt-get purge', 'apt-get remove', 'apt-get source',
127            'apt-get unmarkauto', 'apt-get update', 'apt-get upgrade',
128            'apt-key add', 'apt-key adv', 'apt-key del', 'apt-key export',
129            'apt-key exportall', 'apt-key finger', 'apt-key list',
130            'apt-key net-update', 'apt-key update', 'apt-listbugs apt',
131            'apt-listbugs list', 'apt-listbugs rss', 'apt-src build',
132            'apt-src clean', 'apt-src import', 'apt-src install',
133            'apt-src list', 'apt-src location', 'apt-src name',
134            'apt-src remove', 'apt-src update', 'apt-src upgrade',
135            'apt-src version',
136
137            'aptitude autoclean', 'aptitude build-dep', 'aptitude changelog',
138            'aptitude clean', 'aptitude download', 'aptitude forbid-version',
139            'aptitude forget-new', 'aptitude full-upgrade', 'aptitude hold',
140            'aptitude install', 'aptitude markauto', 'aptitude purge',
141            'aptitude reinstall', 'aptitude remove', 'aptitude safe-upgrade',
142            'aptitude search', 'aptitude show', 'aptitude unhold',
143            'aptitude unmarkauto', 'aptitude update', 'aptitude versions',
144            'aptitude why', 'aptitude why-not',
145
146            'basename', 'bash', 'batctl', 'bc', 'bison', 'bunzip2', 'bzcat',
147            'bzcmp', 'bzdiff', 'bzegrep', 'bzfgrep', 'bzgrep',
148            'bzip2', 'bzip2recover', 'bzless', 'bzmore',
149
150            'c++', 'cal', 'cat', 'chattr', 'cc', 'cdda2wav', 'cdparanoia',
151            'cdrdao', 'cd-read', 'cdrecord', 'chfn', 'chgrp', 'chmod',
152            'chown', 'chroot', 'chsh', 'chvt', 'clear', 'cmp', 'comm', 'co',
153            'col', 'cp', 'cpio', 'cpp', 'csh', 'cut', 'cvs', 'cvs-pserver',
154
155            'cvs add', 'cvs admin', 'cvs annotate', 'cvs checkout',
156            'cvs commit', 'cvs diff', 'cvs edit', 'cvs editors', 'cvs export',
157            'cvs history', 'cvs import', 'cvs init', 'cvs log', 'cvs login',
158            'cvs logout', 'cvs ls', 'cvs pserver', 'cvs rannotate',
159            'cvs rdiff', 'cvs release', 'cvs remove', 'cvs rlog', 'cvs rls',
160            'cvs rtag', 'cvs server', 'cvs status', 'cvs tag', 'cvs unedit',
161            'cvs update', 'cvs version', 'cvs watch', 'cvs watchers',
162
163            'dash', 'date', 'dc', 'dch', 'dcop', 'dd', 'ddate', 'ddd',
164            'deallocvt', 'debconf', 'defoma', 'depmod', 'df', 'dh',
165            'dialog', 'diff', 'diff3', 'dig', 'dir', 'dircolors', 'directomatic',
166            'dirname', 'dmesg', 'dnsdomainname', 'domainname', 'dpkg',
167            'dselect', 'du', 'dumpkeys',
168
169            'ed', 'egrep', 'env', 'expr',
170
171            'false', 'fbset', 'fdisk', 'ffmpeg', 'fgconsole','fgrep', 'file',
172            'find', 'flex', 'flex++', 'fmt', 'free', 'ftp', 'funzip', 'fuser',
173
174            'g++', 'gawk', 'gc','gcc', 'gdb', 'gdisk', 'getent', 'getkeycodes',
175            'getopt', 'gettext', 'gettextize', 'gimp', 'gimp-remote',
176            'gimptool', 'gmake', 'gocr', 'grep', 'groups', 'gs', 'gunzip',
177            'gzexe', 'gzip',
178
179            'git', 'git add', 'git add--interactive', 'git am', 'git annotate',
180            'git apply', 'git archive', 'git bisect', 'git bisect--helper',
181            'git blame', 'git branch', 'git bundle', 'git cat-file',
182            'git check-attr', 'git checkout', 'git checkout-index',
183            'git check-ref-format', 'git cherry', 'git cherry-pick',
184            'git clean', 'git clone', 'git commit', 'git commit-tree',
185            'git config', 'git count-objects', 'git daemon', 'git describe',
186            'git diff', 'git diff-files', 'git diff-index', 'git difftool',
187            'git difftool--helper', 'git diff-tree', 'git fast-export',
188            'git fast-import', 'git fetch', 'git fetch-pack',
189            'git filter-branch', 'git fmt-merge-msg', 'git for-each-ref',
190            'git format-patch', 'git fsck', 'git fsck-objects', 'git gc', 'git gui',
191            'git get-tar-commit-id', 'git grep', 'git hash-object', 'git help',
192            'git http-backend', 'git http-fetch', 'git http-push',
193            'git imap-send', 'git index-pack', 'git init', 'git init-db',
194            'git instaweb', 'git log', 'git lost-found', 'git ls-files',
195            'git ls-remote', 'git ls-tree', 'git mailinfo', 'git mailsplit',
196            'git merge', 'git merge-base', 'git merge-file', 'git merge-index',
197            'git merge-octopus', 'git merge-one-file', 'git merge-ours',
198            'git merge-recursive', 'git merge-resolve', 'git merge-subtree',
199            'git mergetool', 'git merge-tree', 'git mktag', 'git mktree',
200            'git mv', 'git name-rev', 'git notes', 'git pack-objects',
201            'git pack-redundant', 'git pack-refs', 'git patch-id',
202            'git peek-remote', 'git prune', 'git prune-packed', 'git pull',
203            'git push', 'git quiltimport', 'git read-tree', 'git rebase',
204            'git rebase--interactive', 'git receive-pack', 'git reflog',
205            'git relink', 'git remote', 'git remote-ftp', 'git remote-ftps',
206            'git remote-http', 'git remote-https', 'git remote-testgit',
207            'git repack', 'git replace', 'git repo-config', 'git request-pull',
208            'git rerere', 'git reset', 'git revert', 'git rev-list',
209            'git rev-parse', 'git rm', 'git send-pack', 'git shell',
210            'git shortlog', 'git show', 'git show-branch', 'git show-index',
211            'git show-ref', 'git stage', 'git stash', 'git status',
212            'git stripspace', 'git submodule', 'git symbolic-ref', 'git tag',
213            'git tar-tree', 'git unpack-file', 'git unpack-objects',
214            'git update-index', 'git update-ref', 'git update-server-info',
215            'git upload-archive', 'git upload-pack', 'git var',
216            'git verify-pack', 'git verify-tag', 'git web--browse',
217            'git whatchanged', 'git write-tree',
218
219            'gitaction', 'git-add', 'git-add--interactive', 'git-am',
220            'git-annotate', 'git-apply', 'git-archive', 'git-bisect',
221            'git-bisect--helper', 'git-blame', 'git-branch', 'git-bundle',
222            'git-cat-file', 'git-check-attr', 'git-checkout',
223            'git-checkout-index', 'git-check-ref-format', 'git-cherry',
224            'git-cherry-pick', 'git-clean', 'git-clone', 'git-commit',
225            'git-commit-tree', 'git-config', 'git-count-objects', 'git-daemon',
226            'git-describe', 'git-diff', 'git-diff-files', 'git-diff-index',
227            'git-difftool', 'git-difftool--helper', 'git-diff-tree',
228            'gitdpkgname', 'git-fast-export', 'git-fast-import', 'git-fetch',
229            'git-fetch-pack', 'git-fetch--tool', 'git-filter-branch', 'gitfm',
230            'git-fmt-merge-msg', 'git-for-each-ref', 'git-format-patch',
231            'git-fsck', 'git-fsck-objects', 'git-gc', 'git-get-tar-commit-id',
232            'git-grep', 'git-hash-object', 'git-help', 'git-http-fetch',
233            'git-http-push', 'git-imap-send', 'git-index-pack', 'git-init',
234            'git-init-db', 'git-instaweb', 'gitkeys', 'git-log',
235            'git-lost-found', 'git-ls-files', 'git-ls-remote', 'git-ls-tree',
236            'git-mailinfo', 'git-mailsplit', 'git-merge', 'git-merge-base',
237            'git-merge-file', 'git-merge-index', 'git-merge-octopus',
238            'git-merge-one-file', 'git-merge-ours', 'git-merge-recursive',
239            'git-merge-resolve', 'git-merge-subtree', 'git-mergetool',
240            'git-mergetool--lib', 'git-merge-tree', 'gitmkdirs', 'git-mktag',
241            'git-mktree', 'gitmount', 'git-mv', 'git-name-rev',
242            'git-pack-objects', 'git-pack-redundant', 'git-pack-refs',
243            'git-parse-remote', 'git-patch-id', 'git-peek-remote', 'git-prune',
244            'git-prune-packed', 'gitps', 'git-pull', 'git-push',
245            'git-quiltimport', 'git-read-tree', 'git-rebase',
246            'git-rebase--interactive', 'git-receive-pack', 'git-reflog',
247            'gitregrep', 'git-relink', 'git-remote', 'git-repack',
248            'git-repo-config', 'git-request-pull', 'git-rerere', 'git-reset',
249            'git-revert', 'git-rev-list', 'git-rev-parse', 'gitrfgrep',
250            'gitrgrep', 'git-rm', 'git-send-pack', 'git-shell', 'git-shortlog',
251            'git-show', 'git-show-branch', 'git-show-index', 'git-show-ref',
252            'git-sh-setup', 'git-stage', 'git-stash', 'git-status',
253            'git-stripspace', 'git-submodule', 'git-svn', 'git-symbolic-ref',
254            'git-tag', 'git-tar-tree', 'gitunpack', 'git-unpack-file',
255            'git-unpack-objects', 'git-update-index', 'git-update-ref',
256            'git-update-server-info', 'git-upload-archive', 'git-upload-pack',
257            'git-var', 'git-verify-pack', 'git-verify-tag', 'gitview',
258            'git-web--browse', 'git-whatchanged', 'gitwhich', 'gitwipe',
259            'git-write-tree', 'gitxgrep',
260
261            'head', 'hexdump', 'hostname', 'htop',
262
263            'id', 'ifconfig', 'ifdown', 'ifup', 'igawk', 'install',
264
265            'ip', 'ip addr', 'ip addrlabel', 'ip link', 'ip maddr', 'ip mroute',
266            'ip neigh', 'ip route', 'ip rule', 'ip tunnel', 'ip xfrm',
267
268            'jar', 'java', 'javac', 'join',
269
270            'kbd_mode','kbdrate', 'kdialog', 'kfile', 'killall',
271
272            'lame', 'last', 'lastb', 'ld', 'ld86', 'ldd', 'less', 'lex', 'link',
273            'ln', 'loadkeys', 'loadunimap', 'locate', 'lockfile', 'login',
274            'logname', 'lp', 'lpr', 'ls', 'lsattr', 'lsmod', 'lsmod.old',
275            'lspci', 'ltrace', 'lynx',
276
277            'm4', 'make', 'man', 'mapscrn', 'mesg', 'mkdir', 'mkfifo',
278            'mknod', 'mktemp', 'more', 'mount', 'mplayer', 'msgfmt', 'mv',
279
280            'namei', 'nano', 'nasm', 'nawk', 'netstat', 'nice',
281            'nisdomainname', 'nl', 'nm', 'nm86', 'nmap', 'nohup', 'nop',
282
283            'od', 'openvt',
284
285            'passwd', 'patch', 'pbzip2', 'pcregrep', 'pcretest', 'perl',
286            'perror', 'pgawk', 'pidof', 'pigz', 'ping', 'pr', 'procmail',
287            'prune', 'ps', 'pstree', 'ps2ascii', 'ps2epsi', 'ps2frag',
288            'ps2pdf', 'ps2ps', 'psbook', 'psmerge', 'psnup', 'psresize',
289            'psselect', 'pstops',
290
291            'rbash', 'rcs', 'rcs2log', 'readlink', 'red', 'resizecons',
292            'rev', 'rm', 'rmdir', 'rsh', 'run-parts',
293
294            'sash', 'scp', 'screen', 'sed', 'seq', 'sendmail', 'setfont',
295            'setkeycodes', 'setleds', 'setmetamode', 'setserial', 'setterm',
296            'sh', 'showkey', 'shred', 'size', 'size86', 'skill', 'sleep',
297            'slogin', 'snice', 'sort', 'sox', 'split', 'ssed', 'ssh', 'ssh-add',
298            'ssh-agent', 'ssh-keygen', 'ssh-keyscan', 'sshfs', 'stat', 'strace',
299            'strings', 'strip', 'stty', 'su', 'sudo', 'suidperl', 'sum', 'svn',
300            'svnadmin', 'svndumpfilter', 'svnlook', 'svnmerge', 'svnmucc',
301            'svnserve', 'svnshell', 'svnsync', 'svnversion', 'svnwrap', 'sync',
302
303            'svn add', 'svn ann', 'svn annotate', 'svn blame', 'svn cat',
304            'svn changelist', 'svn checkout', 'svn ci', 'svn cl', 'svn cleanup',
305            'svn co', 'svn commit', 'svn copy', 'svn cp', 'svn del',
306            'svn delete', 'svn di', 'svn diff', 'svn export', 'svn help',
307            'svn import', 'svn info', 'svn list', 'svn lock', 'svn log',
308            'svn ls', 'svn merge', 'svn mergeinfo', 'svn mkdir', 'svn move',
309            'svn mv', 'svn patch', 'svn pd', 'svn pdel', 'svn pe', 'svn pedit',
310            'svn pg', 'svn pget', 'svn pl', 'svn plist', 'svn praise',
311            'svn propdel', 'svn propedit', 'svn propget', 'svn proplist',
312            'svn propset', 'svn ps', 'svn pset', 'svn relocate', 'svn remove',
313            'svn rename', 'svn resolve', 'svn resolved', 'svn revert', 'svn rm',
314            'svn st', 'svn stat', 'svn status', 'svn sw', 'svn switch',
315            'svn unlock', 'svn up', 'svn update', 'svn upgrade',
316
317            'svnadmin crashtest', 'svnadmin create', 'svnadmin deltify',
318            'svnadmin dump', 'svnadmin help', 'svnadmin hotcopy',
319            'svnadmin list-dblogs', 'svnadmin list-unused-dblogs',
320            'svnadmin load', 'svnadmin lslocks', 'svnadmin lstxns',
321            'svnadmin pack', 'svnadmin recover', 'svnadmin rmlocks',
322            'svnadmin rmtxns', 'svnadmin setlog', 'svnadmin setrevprop',
323            'svnadmin setuuid', 'svnadmin upgrade', 'svnadmin verify',
324
325            'svndumpfilter exclude', 'svndumpfilter help',
326            'svndumpfilter include',
327
328            'svnlook author', 'svnlook cat', 'svnlook changed', 'svnlook date',
329            'svnlook diff', 'svnlook dirs-changed', 'svnlook filesize',
330            'svnlook help', 'svnlook history', 'svnlook info', 'svnlook lock',
331            'svnlook log', 'svnlook pg', 'svnlook pget', 'svnlook pl',
332            'svnlook plist', 'svnlook propget', 'svnlook proplist',
333            'svnlook tree', 'svnlook uuid', 'svnlook youngest',
334
335            'svnrdump dump', 'svnrdump help', 'svnrdump load',
336
337            'svnsync copy-revprops', 'svnsync help', 'svnsync info',
338            'svnsync init', 'svnsync initialize', 'svnsync sync',
339            'svnsync synchronize',
340
341            'tac', 'tail', 'tar', 'tee', 'tempfile', 'touch', 'tr', 'tree',
342            'true',
343
344            'umount', 'uname', 'unicode_start', 'unicode_stop', 'uniq',
345            'unlink', 'unzip', 'updatedb', 'updmap', 'uptime', 'users',
346            'utmpdump', 'uuidgen',
347
348            'valgrind', 'vdir', 'vi', 'vim', 'vmstat',
349
350            'w', 'wall', 'watch', 'wc', 'wget', 'whatis', 'whereis',
351            'which', 'whiptail', 'who', 'whoami', 'whois', 'wine', 'wineboot',
352            'winebuild', 'winecfg', 'wineconsole', 'winedbg', 'winedump',
353            'winefile', 'wodim', 'write',
354
355            'xargs', 'xhost', 'xmodmap', 'xset',
356
357            'yacc', 'yes', 'ypdomainname', 'yum',
358
359            'yum check-update', 'yum clean', 'yum deplist', 'yum erase',
360            'yum groupinfo', 'yum groupinstall', 'yum grouplist',
361            'yum groupremove', 'yum groupupdate', 'yum info', 'yum install',
362            'yum list', 'yum localinstall', 'yum localupdate', 'yum makecache',
363            'yum provides', 'yum remove', 'yum resolvedep', 'yum search',
364            'yum shell', 'yum update', 'yum upgrade', 'yum whatprovides',
365
366            'zcat', 'zcmp', 'zdiff', 'zdump', 'zegrep', 'zfgrep', 'zforce',
367            'zgrep', 'zip', 'zipgrep', 'zipinfo', 'zless', 'zmore', 'znew',
368            'zsh', 'zsoelim'
369            ),
370        // Builtin commands
371        3 => array(
372            'alias', 'bg', 'bind', 'break', 'builtin', 'caller', 'cd', 'command',
373            'compgen', 'complete', 'compopt', 'continue', 'coproc', 'declare', 'dirs', 'disown',
374            'echo', 'enable', 'eval', 'exec', 'exit', 'export', 'fc',
375            'fg', 'getopts', 'hash', 'help', 'history', 'jobs', 'kill', 'let',
376            'local', 'logout', 'mapfile', 'popd', 'printf', 'pushd', 'pwd', 'read',
377            'readarray', 'readonly', 'return', 'shift', 'shopt', 'source',
378            'suspend', 'test', 'times', 'trap', 'type', 'typeset', 'ulimit',
379            'umask', 'unalias', 'unset', 'wait'
380            )
381        ),
382    'SYMBOLS' => array(
383        '(', ')', '[', ']', '!', '@', '%', '&', '*', '|', '/', '<', '>', ';;', '`'
384        ),
385    'CASE_SENSITIVE' => array(
386        GESHI_COMMENTS => false,
387        1 => true,
388        2 => true,
389        3 => true
390        ),
391    'STYLES' => array(
392        'KEYWORDS' => array(
393            1 => 'color: #000000; font-weight: bold;',
394            2 => 'color: #c20cb9; font-weight: bold;',
395            3 => 'color: #7a0874; font-weight: bold;'
396            ),
397        'COMMENTS' => array(
398            0 => 'color: #666666; font-style: italic;',
399            1 => 'color: #800000;',
400            2 => 'color: #cc0000; font-style: italic;',
401            3 => 'color: #000000; font-weight: bold;',
402            4 => 'color: #666666;'
403            ),
404        'ESCAPE_CHAR' => array(
405            1 => 'color: #000099; font-weight: bold;',
406            2 => 'color: #007800;',
407            3 => 'color: #007800;',
408            4 => 'color: #007800;',
409            5 => 'color: #780078;',
410            'HARD' => 'color: #000099; font-weight: bold;'
411            ),
412        'BRACKETS' => array(
413            0 => 'color: #7a0874; font-weight: bold;'
414            ),
415        'STRINGS' => array(
416            0 => 'color: #ff0000;',
417            'HARD' => 'color: #ff0000;'
418            ),
419        'NUMBERS' => array(
420            0 => 'color: #000000;'
421            ),
422        'METHODS' => array(
423            ),
424        'SYMBOLS' => array(
425            0 => 'color: #000000; font-weight: bold;'
426            ),
427        'REGEXPS' => array(
428            0 => 'color: #007800;',
429            1 => 'color: #007800;',
430            2 => 'color: #007800;',
431            4 => 'color: #007800;',
432            5 => 'color: #660033;'
433            ),
434        'SCRIPT' => array(
435            )
436        ),
437    'URLS' => array(
438        1 => '',
439        2 => '',
440        3 => ''
441        ),
442    'OOLANG' => false,
443    'OBJECT_SPLITTERS' => array(
444        ),
445    'REGEXPS' => array(
446        //Variables (will be handled by comment_regexps)
447        0 => "\\$\\{[a-zA-Z_][a-zA-Z0-9_]*?\\}",
448        //Variables without braces
449        1 => "\\$[a-zA-Z_][a-zA-Z0-9_]*",
450        //Variable assignment
451        2 => "(?<![\.a-zA-Z_\-])([a-zA-Z_][a-zA-Z0-9_]*?)(?==)",
452        //Shorthand shell variables
453        4 => "\\$[*#\$\\-\\?!\d]",
454        //Parameters of commands
455        5 => "(?<=\s)--?[0-9a-zA-Z\-]+(?=[\s=]|<(?:SEMI|PIPE)>|$)"
456        ),
457    'STRICT_MODE_APPLIES' => GESHI_NEVER,
458    'SCRIPT_DELIMITERS' => array(
459        ),
460    'HIGHLIGHT_STRICT_BLOCK' => array(
461        ),
462    'TAB_WIDTH' => 4,
463    'PARSER_CONTROL' => array(
464        'COMMENTS' => array(
465            'DISALLOWED_BEFORE' => '$'
466        ),
467        'KEYWORDS' => array(
468            'DISALLOWED_BEFORE' => "(?<![\.\-a-zA-Z0-9_\$\#:])",
469            'DISALLOWED_AFTER' =>  "(?![\.\-a-zA-Z0-9_%=\\/:])",
470            2 => array(
471                'SPACE_AS_WHITESPACE' => false
472                )
473            )
474        )
475);
476