Warning, /frameworks/syntax-highlighting/data/syntax/zsh.xml is written in an unsupported language. File is not indexed.
0001 <?xml version="1.0" encoding="UTF-8"?> 0002 <!DOCTYPE language 0003 [ 0004 <!ENTITY tab "	"> 0005 <!ENTITY funcname "[^&_fragpathseps;=]*+"> 0006 <!ENTITY varname "[A-Za-z_][A-Za-z0-9_]*"> 0007 <!ENTITY eos "(?=$|[ &tab;])"> <!-- eol or space following --> 0008 <!ENTITY eoexpr "(?=$|[ &tab;<>|&;)])"> 0009 0010 <!ENTITY substseps "${}'"`\\"> 0011 <!ENTITY symbolseps "<>|&;()"> 0012 <!ENTITY wordseps " &tab;&symbolseps;"> 0013 <!ENTITY wordseps_or_extglog " &tab;>|&;)`"> <!-- wordseps without < and ( --> 0014 0015 <!ENTITY bq_string "`[^`]*+`"> 0016 <!ENTITY sq_string "'[^']*+'"> 0017 <!ENTITY dq_string ""(?:[^"\\`]*+|&bq_string;|\\.)*+""> 0018 <!ENTITY strings "(?:&sq_string;|&dq_string;|&bq_string;)"> 0019 0020 <!ENTITY simpleglob "*?#^~"> 0021 <!ENTITY globrange "<[0-9]*-[0-9]*>"> 0022 <!ENTITY globany "\[(?:[^&wordseps;"'`\\\[\]]+|\\.|&strings;|\[:\w+:\]|\[)*\]"> 0023 0024 <!ENTITY _fragpathseps "&simpleglob;[&wordseps;&substseps;"> 0025 <!ENTITY _fragpathnosep "(?:&_brace_noexpansion;)?+"> 0026 <!ENTITY path "(?:[^&_fragpathseps;]*+&_fragpathnosep;)*+"> 0027 <!ENTITY fragpath "(?:[^&_fragpathseps;/]*+&_fragpathnosep;)*+"> 0028 <!ENTITY fragpathesc "\\.(?:[^&_fragpathseps;/]*+(?:\\.|&_brace_noexpansion;)?+)*+"> 0029 <!ENTITY opt "(?:[^&_fragpathseps;=/]*+&_fragpathnosep;)*+"> 0030 <!ENTITY assumepath "/&path;|(?=[&simpleglob;([]|&globrange;)"> 0031 <!ENTITY pathpart "(?:~(?:/&path;|(?=[&wordseps;]|$))|&fragpath;(?:&assumepath;|(?=&fragpathesc;&assumepath;))|\.\.?(?=[&wordseps;]|$))"> 0032 0033 <!-- Path only with / --> 0034 <!ENTITY path_with_sep_text "[^[&wordseps;'"`\\/]"> 0035 <!ENTITY path_with_sep_text2 "[^[()<>'"`\\/]"> 0036 <!ENTITY path_with_sep_expr "\\.|&strings;|&globany;|&globrange;"> 0037 <!ENTITY path_with_sep_spe "(~|\.\.?)($|[/ &tab;<>|&;)])"> 0038 <!ENTITY path_with_sep_sub "\((&path_with_sep_text2;++|&path_with_sep_expr;)*+(\)|(?=/))"> 0039 <!ENTITY path_with_sep "/|&path_with_sep_spe;|(&path_with_sep_text;++|&path_with_sep_expr;|&path_with_sep_sub;)*+/"> 0040 0041 <!ENTITY _braceexpansion_spe " &tab;<>|&;{}\\`'"$"> 0042 <!ENTITY _brace_noexpansion "\{[^&_braceexpansion_spe;,]*+\}"> 0043 <!ENTITY _braceexpansion_var "\$(?:\{[^\[\]&_braceexpansion_spe;]*+(?:\[[*@a-zA-Z0-9]\])\})?"> 0044 <!ENTITY _braceexpansion_elems "\\.|&strings;|&_braceexpansion_var;|&_brace_noexpansion;"> 0045 <!ENTITY _braceexpansion_consume "&_braceexpansion_elems;|{(?:[^&_braceexpansion_spe;,]++|&_braceexpansion_elems;)*?}|(?R)?+"> 0046 <!ENTITY _braceexpansion "(?:[^&_braceexpansion_spe;,]++|&_braceexpansion_consume;)*?,(?:[^&_braceexpansion_spe;]++|&_braceexpansion_consume;)*?}"> 0047 <!ENTITY braceexpansion "{&_braceexpansion;"> 0048 0049 <!ENTITY _bracerangevar "\$([#+^=~]*([_a-zA-Z0-9]+|[*@#])(\[((\$[#+^=~]*)?([-+_a-zA-Z0-9]+|[*@])|$#)\])?|#|'(\\.|[^'\\])')"> 0050 <!ENTITY _bracerangeoperand "-?([0-9]+|[a-zA-Z!#$%*+,-./:=?@^_~]|&_bracerangevar;|\\.|'[^'\\]'|"(\\.|[^"\\`])"|`[^`]*`)"> 0051 <!ENTITY bracerangeexpansion "{(?=&_bracerangeoperand;\.\.&_bracerangeoperand;(\.\.-?([0-9]+|&_bracerangevar;))?})"> 0052 0053 <!ENTITY nobraceexpansion "(?:{([^&_braceexpansion_spe;/{},]++|(?R))+?})+"> 0054 <!ENTITY nogroupend "(?:}+(?:[^&_fragpathseps;]|(?=[}$'"`\\])))"> 0055 0056 <!-- glob with |, ( or spaces is a pattern --> 0057 <!ENTITY _ispattern_ugN "[ug][0123456789]+"> 0058 <!ENTITY _ispattern_ugeP "[ugeP](?:&_ispattern_ugeP_0;|&_ispattern_ugeP_1;|&_ispattern_ugeP_2;|&_ispattern_ugeP_3;|&_ispattern_ugeP_4;|(?=\|))"> 0059 <!ENTITY _ispattern_ugeP_0 ":(?:[^:'`"\\|()]*+(?:&_ispattern_q;)?)*(?::|(?=[|()]))"> 0060 <!ENTITY _ispattern_ugeP_1 "\[(?:[^]'`"\\|()]*+(?:&_ispattern_q;)?)*(?:\](?=[|()]))"> 0061 <!ENTITY _ispattern_ugeP_2 "{(?:[^}'`"\\|()]*+(?:&_ispattern_q;)?)*(?:}(?=[|()]))"> 0062 <!ENTITY _ispattern_ugeP_3 "<(?:[^>'`"\\|()]*+(?:&_ispattern_q;)?)*(?:>|(?=[|()]))"> 0063 <!ENTITY _ispattern_ugeP_4 "([^&wordseps;{}'"`\\])(?:(?:(?!\1)[^'`"\\\1|()])*+(?:&_ispattern_q;)?)*(?:\1|(?=[|()]))"> 0064 <!ENTITY _ispattern_q "\\.|&strings;"> 0065 <!ENTITY _ispattern_check "(?:\)(?:[^ &tab;}<>|&;)]|&nogroupend;)|[ &tab;|(]|$)"> 0066 <!ENTITY ispattern "(?:[^ &tab;\\'"|()`ugeP]*+(?:&_ispattern_ugN;|&_ispattern_ugeP;|&_ispattern_q;)?)*&_ispattern_check;"> 0067 0068 <!ENTITY heredocq "(?|"([^"]+)"|'([^']+)'|\\(.[^&wordseps;&substseps;]*))"> 0069 0070 <!ENTITY arithmetic_as_subshell "\(((?:[^`'"()$]++|\$\{[^`'"(){}$]+\}|\$(?=[^{`'"()])|&bq_string;|\((?1)(?:[)]|(?=['"])))++)(?:[)](?=$|[^)])|["'])"> 0071 0072 <!ENTITY unary_operators "-[abcdefghknoprstuvwxzLOGNS]&eos;"> 0073 <!ENTITY binary_operators "(?:-(?:e[fq]|[nolg]t|[nlg]e)|==?|!=)&eos;"> 0074 0075 <!ENTITY dblbracket_close "\]\](?=($|[ &tab;;|&)]))"> 0076 0077 <!ENTITY int "(?:[0-9]++[_0-9]*+)"> 0078 <!ENTITY exp "(?:[eE][-+]?∫)"> 0079 ]> 0080 <language name="Zsh" version="32" kateversion="5.79" section="Scripts" extensions="*.sh;*.zsh;.zshrc;.zprofile;.zlogin;.zlogout;.profile" mimetype="application/x-shellscript" casesensitive="1" author="Jonathan Poelen (jonathan.poelen@gmail.com)" license="MIT"> 0081 0082 <highlighting> 0083 <list name="keywords"> 0084 <item>continue</item> 0085 <item>break</item> 0086 <item>case</item> 0087 <item>do</item> 0088 <item>done</item> 0089 <item>elif</item> 0090 <item>else</item> 0091 <item>end</item> 0092 <item>esac</item> 0093 <item>fi</item> 0094 <item>for</item> 0095 <item>foreach</item> 0096 <item>function</item> 0097 <item>if</item> 0098 <item>in</item> 0099 <item>repeat</item> 0100 <item>return</item> 0101 <item>select</item> 0102 <item>then</item> 0103 <item>until</item> 0104 <item>while</item> 0105 </list> 0106 0107 <list name="builtins"><!-- see man zshbuiltins --> 0108 <item>-</item> 0109 <item>.</item> 0110 <item>:</item> 0111 <item>alias</item> 0112 <item>autoload</item> 0113 <item>bg</item> 0114 <item>bindkey</item> 0115 <item>builtin</item> 0116 <item>bye</item> 0117 <item>cap</item> 0118 <item>cd</item> 0119 <item>chdir</item> 0120 <item>clone</item> 0121 <item>command</item> 0122 <item>comparguments</item> 0123 <item>compcall</item> 0124 <item>compctl</item> 0125 <item>compdescribe</item> 0126 <item>compfiles</item> 0127 <item>compgroups</item> 0128 <item>compquote</item> 0129 <item>comptags</item> 0130 <item>comptry</item> 0131 <item>compvalues</item> 0132 <item>coproc</item> 0133 <item>dirs</item> 0134 <item>disable</item> 0135 <item>disown</item> 0136 <item>echo</item> 0137 <item>echotc</item> 0138 <item>echoti</item> 0139 <item>emulate</item> 0140 <item>enable</item> 0141 <item>eval</item> 0142 <item>exec</item> 0143 <item>exit</item> 0144 <item>false</item> 0145 <item>fc</item> 0146 <item>fg</item> 0147 <item>functions</item> 0148 <item>getcap</item> 0149 <item>hash</item> 0150 <item>history</item> 0151 <item>jobs</item> 0152 <item>kill</item> 0153 <item>limit</item> 0154 <item>log</item> 0155 <item>logout</item> 0156 <item>nocorrect</item> 0157 <item>noglob</item> 0158 <item>popd</item> 0159 <item>print</item> 0160 <item>printf</item> 0161 <item>pushd</item> 0162 <item>pushln</item> 0163 <item>pwd</item> 0164 <item>r</item> 0165 <item>rehash</item> 0166 <item>sched</item> 0167 <item>set</item> 0168 <item>setcap</item> 0169 <item>setopt</item> 0170 <item>shift</item> 0171 <item>source</item> 0172 <item>stat</item> 0173 <item>suspend</item> 0174 <item>test</item> 0175 <item>times</item> 0176 <item>trap</item> 0177 <item>true</item> 0178 <item>ttyctl</item> 0179 <item>type</item> 0180 <item>ulimit</item> 0181 <item>umask</item> 0182 <item>unalias</item> 0183 <item>unfunction</item> 0184 <item>unhash</item> 0185 <item>unlimit</item> 0186 <item>unset</item> 0187 <item>unsetopt</item> 0188 <item>vared</item> 0189 <item>wait</item> 0190 <item>whence</item> 0191 <item>where</item> 0192 <item>which</item> 0193 <item>zcompile</item> 0194 <item>zformat</item> 0195 <item>zftp</item> 0196 <item>zle</item> 0197 <item>zmodload</item> 0198 <item>zparseopts</item> 0199 <item>zprof</item> 0200 <item>zpty</item> 0201 <item>zregexparse</item> 0202 <item>zsocket</item> 0203 <item>zstyle</item> 0204 <item>ztcp</item> 0205 </list> 0206 0207 <list name="builtins_var"> 0208 <item>declare</item> 0209 <item>export</item> 0210 <item>float</item> 0211 <item>getln</item> 0212 <item>getopts</item> 0213 <item>integer</item> 0214 <item>let</item> 0215 <item>local</item> 0216 <item>read</item> 0217 <item>readonly</item> 0218 <item>typeset</item> 0219 <item>unset</item> 0220 </list> 0221 0222 <list name="unixcommands"> 0223 <include>unixcommands##Bash</include> 0224 </list> 0225 0226 <contexts> 0227 <context attribute="Normal Text" lineEndContext="#stay" name="Start" fallthroughContext="Command"> 0228 <DetectSpaces attribute="Normal Text" context="#stay"/> 0229 <DetectChar attribute="Comment" context="Comment" char="#"/> 0230 <!-- start expression in double parentheses --> 0231 <Detect2Chars context="ExprDblParenOrSubShell" char="(" char1="(" lookAhead="1"/> 0232 <!-- start a subshell --> 0233 <DetectChar attribute="Keyword" context="SubShell" char="(" beginRegion="subshell"/> 0234 <!-- start expression in single/double brackets --> 0235 <DetectChar context="MaybeBracketExpression" char="[" lookAhead="1"/> 0236 <!-- start a group command or BraceExpansion with { --> 0237 <DetectChar attribute="Keyword" context="Group" char="{" beginRegion="group"/> 0238 0239 <!-- handle ` --> 0240 <DetectChar attribute="Backquote" context="CommandBackq" char="`"/> 0241 0242 <!-- &> redirections --> 0243 <Detect2Chars attribute="Redirection" context="Prefix&>" char="&" char1=">"/> 0244 <Detect2Chars attribute="Control" context="#stay" char="&" char1="!"/> 0245 0246 <!-- handle branche conditions --> 0247 <Detect2Chars attribute="Control" context="#stay" char="&" char1="&"/> 0248 <Detect2Chars attribute="Control" context="#stay" char="|" char1="|"/> 0249 0250 <!-- handle &, |, ; --> 0251 <AnyChar attribute="Control" context="#stay" String="&|;"/> 0252 0253 <!-- handle variable assignments --> 0254 <RegExpr attribute="Variable" context="VarAssign" String="&varname;(?=\+?=|\[(?:$|[^]]))|[0-9]+(?=\+?=)"/> 0255 <!-- handle keywords --> 0256 <keyword context="DispatchKeyword" String="keywords" lookAhead="1"/> 0257 <!-- handle commands that have variable names as argument --> 0258 <keyword attribute="Builtin" context="VarName" String="builtins_var" lookAhead="1"/> 0259 <WordDetect attribute="Builtin" context="#stay" String="noglob"/> 0260 <WordDetect attribute="Builtin" context="#stay" String="coproc"/> 0261 <!-- mark function definitions without function keyword --> 0262 <RegExpr attribute="Function" context="#stay" String="&funcname;[ &tab;]*\(\)"/> 0263 <keyword attribute="Builtin" context="CommandArgs" String="builtins"/> 0264 <keyword attribute="Command" context="CommandArgs" String="unixcommands"/> 0265 0266 <!-- handle redirection --> 0267 <AnyChar context="CommandMaybeRedirection" String="<>0123456789" lookAhead="1"/> 0268 0269 <DetectChar attribute="Error" context="#stay" char=")"/> 0270 <DetectChar context="MaybeGroupEnd" char="}" lookAhead="1"/> 0271 0272 <LineContinue attribute="Escape" context="#stay"/> 0273 0274 <Detect2Chars attribute="Expression" context="#stay" char="!" char1=" "/> 0275 </context> 0276 <context attribute="Normal Text" lineEndContext="#pop" name="MaybeGroupEnd"> 0277 <RegExpr context="#pop!Command" String="&nogroupend;" lookAhead="1"/> 0278 <DetectChar attribute="Error" context="#pop" char="}"/> 0279 </context> 0280 <context attribute="Normal Text" lineEndContext="#pop" name="MaybeBracketExpression" fallthroughContext="#pop!Command"> 0281 <!-- start expression in double brackets --> 0282 <RegExpr attribute="Keyword" context="#pop!ExprDblBracket" String="\[\[(?=$|[ &tab;(])" beginRegion="expression"/> 0283 <!-- start expression in single brackets --> 0284 <RegExpr attribute="Builtin" context="#pop!ExprBracket" String="\[&eos;" beginRegion="expression"/> 0285 </context> 0286 <context attribute="Normal Text" lineEndContext="#pop" name="CommandMaybeRedirection" fallthroughContext="#pop!Command"> 0287 <IncludeRules context="FindRedirection"/> 0288 </context> 0289 <context attribute="Normal Text" lineEndContext="#pop" name="Return" fallthroughContext="#pop"> 0290 <DetectSpaces attribute="Normal Text" context="#stay"/> 0291 <Int attribute="Number" context="#stay"/> 0292 </context> 0293 <!-- Comment consumes shell comments till EOL --> 0294 <context attribute="Comment" lineEndContext="#pop" name="Comment"> 0295 <DetectSpaces attribute="Comment"/> 0296 <IncludeRules context="##Comments"/> 0297 <DetectIdentifier attribute="Comment" context="#stay"/> 0298 </context> 0299 0300 <!-- Group is called after a { is encountered --> 0301 <context attribute="Normal Text" lineEndContext="#stay" name="Group" fallthroughContext="Command"> 0302 <DetectChar attribute="Keyword" context="#pop!GroupEnd" char="}" endRegion="group"/> 0303 <IncludeRules context="Start"/> 0304 </context> 0305 <context attribute="Normal Text" lineEndContext="#pop" name="GroupEnd" fallthroughContext="#pop!CommandArgs"> 0306 <DetectSpaces attribute="Normal Text" context="#stay"/> 0307 <WordDetect attribute="Control Flow" context="#pop" String="always"/> 0308 </context> 0309 0310 <context attribute="OtherCommand" lineEndContext="#pop" name="Command"> 0311 <DetectSpaces attribute="Normal Text" context="#pop!CommandArgs"/> 0312 <DetectIdentifier attribute="OtherCommand" context="#stay"/> 0313 <DetectChar context="CommandVariables" char="$" lookAhead="1"/> 0314 <IncludeRules context="FindStrings"/> 0315 <Detect2Chars attribute="Control" context="#pop" char="&" char1="&"/> 0316 <Detect2Chars attribute="Control" context="#pop" char="|" char1="|"/> 0317 <DetectChar attribute="Control" context="#pop" char="|"/> 0318 <AnyChar context="#pop" String=";)`" lookAhead="1"/> 0319 <AnyChar context="#pop!CommandArgs" String="&<>" lookAhead="1"/> 0320 <!-- start expression in double parentheses --> 0321 <Detect2Chars attribute="Error" context="#pop!ExprDblParen" char="(" char1="(" beginRegion="expression"/> 0322 <!-- start a subshell --> 0323 <DetectChar attribute="Error" context="#pop!SubShell" char="(" beginRegion="subshell"/> 0324 <DetectChar context="CommandAssumeEscape" char="\" lookAhead="1"/> 0325 <DetectChar context="CommandMaybeBraceExpansion" char="{" lookAhead="1"/> 0326 <DetectChar context="CommandMaybeGroupEnd" char="}" lookAhead="1"/> 0327 </context> 0328 <context attribute="Command" lineEndContext="#pop" name="CommandVariables"> 0329 <IncludeRules context="DispatchVariables"/> 0330 <DetectChar attribute="OtherCommand" context="#pop" char="$"/> 0331 </context> 0332 <context attribute="OtherCommand" lineEndContext="#pop" name="CommandAssumeEscape"> 0333 <LineContinue attribute="Escape" context="#pop"/> 0334 <RegExpr attribute="OtherCommand" context="#pop" String="\\."/> 0335 </context> 0336 <context attribute="OtherCommand" lineEndContext="#pop" name="CommandMaybeBraceExpansion"> 0337 <IncludeRules context="DispatchBraceExpansion"/> 0338 <DetectChar attribute="OtherCommand" context="#pop" char="{"/> 0339 </context> 0340 <context attribute="Normal Text" lineEndContext="#pop" name="CommandMaybeGroupEnd"> 0341 <RegExpr attribute="OtherCommand" context="#pop" String="&nogroupend;+"/> 0342 <DetectChar context="#pop#pop" char="}" lookAhead="1"/> 0343 </context> 0344 0345 <context attribute="Variable" lineEndContext="#pop" name="DispatchVariables"> 0346 <IncludeRules context="DispatchSubstVariables"/> 0347 <IncludeRules context="DispatchStringVariables"/> 0348 <IncludeRules context="DispatchVarNameVariables"/> 0349 </context> 0350 <context attribute="Variable" lineEndContext="#pop" name="DispatchSubstVariables"> 0351 <Detect2Chars attribute="Parameter Expansion" context="#pop!VarBraceStart" char="$" char1="{"/> 0352 <StringDetect context="#pop!ExprDblParenSubstOrSubstCommand" String="$((" lookAhead="1"/> 0353 <Detect2Chars attribute="Parameter Expansion" context="#pop!SubstCommand" char="$" char1="(" beginRegion="subshell"/> 0354 </context> 0355 <context attribute="Variable" lineEndContext="#pop" name="DispatchStringVariables"> 0356 <Detect2Chars attribute="String SingleQ" context="#pop!StringEsc" char="$" char1="'"/> 0357 <Detect2Chars attribute="String Transl." context="#pop!StringDQ" char="$" char1="""/> 0358 </context> 0359 <context attribute="Variable" lineEndContext="#pop" name="DispatchVarNameVariables"> 0360 <RegExpr attribute="Dollar Prefix" context="#pop!VarNamePrefixedWithDollar" String="\$(?=&varname;|[0-9]+|[-*@?$!#~=^+])"/> 0361 </context> 0362 <context attribute="Variable" lineEndContext="#pop" name="VarNamePrefixedWithDollar"> 0363 <DetectIdentifier attribute="Variable" context="#pop!AfterVarName"/> 0364 <Int attribute="Variable" context="#pop!AfterVarName" additionalDeliminator="$"/> 0365 <AnyChar attribute="Variable" context="#pop!AfterVarName" String="-*@?$!"/> 0366 <DetectChar attribute="Parameter Expansion Operator" context="#pop!VarNameSubstLen" char="#"/> 0367 <DetectChar attribute="Parameter Expansion Operator" context="#pop!VarNameParam+" char="+"/> 0368 <AnyChar attribute="Parameter Expansion Operator" context="#pop!VarNameParam" String="~=^"/> 0369 </context> 0370 <context attribute="Variable" lineEndContext="#pop" name="VarNameSubstLen" fallthroughContext="#pop!AfterVarName"> 0371 <DetectIdentifier attribute="Variable" context="#pop!AfterVarName"/> 0372 <AnyChar attribute="Variable" context="#pop!AfterVarName" String="-*@?$!"/> 0373 <Int attribute="Variable" context="#pop!AfterVarName" additionalDeliminator="#~=^+{}[]:-/$"/> 0374 </context> 0375 <context attribute="Variable" lineEndContext="#pop" name="VarNameParam" fallthroughContext="#pop!AfterVarName"> 0376 <DetectChar attribute="Parameter Expansion Operator" context="#pop!VarNameSubstLen" char="#"/> 0377 <DetectChar attribute="Parameter Expansion Operator" context="#pop!VarNameParam+" char="+"/> 0378 <AnyChar attribute="Parameter Expansion Operator" context="#stay" String="^=~"/> 0379 <IncludeRules context="VarNameSubstLen"/> 0380 </context> 0381 <context attribute="Variable" lineEndContext="#pop" name="VarNameParam+" fallthroughContext="#pop"> 0382 <IncludeRules context="VarNameSubstLen"/> 0383 </context> 0384 0385 <!-- called as soon as $xxx is encoutered --> 0386 <context attribute="Normal Text" lineEndContext="#pop" name="AfterVarName" fallthroughContext="#pop"> 0387 <DetectChar context="VarNameDispatchModifiers" char=":" lookAhead="1"/> 0388 <DetectChar attribute="Parameter Expansion Operator" context="Subscript" char="["/> 0389 </context> 0390 <context attribute="Normal Text" lineEndContext="#pop#pop" name="VarNameDispatchModifiers" fallthroughContext="#pop#pop"> 0391 <Detect2Chars attribute="Parameter Expansion" context="#pop" char=":" char1="a"/> 0392 <Detect2Chars attribute="Parameter Expansion" context="#pop" char=":" char1="A"/> 0393 <Detect2Chars attribute="Parameter Expansion" context="#pop" char=":" char1="c"/> 0394 <Detect2Chars attribute="Parameter Expansion" context="#pop" char=":" char1="e"/> 0395 <Detect2Chars attribute="Parameter Expansion" context="#pop!VarNameModifier_h" char=":" char1="h"/> 0396 <Detect2Chars attribute="Parameter Expansion" context="#pop" char=":" char1="l"/> 0397 <Detect2Chars attribute="Parameter Expansion" context="#pop" char=":" char1="p"/> 0398 <Detect2Chars attribute="Parameter Expansion" context="#pop" char=":" char1="P"/> 0399 <Detect2Chars attribute="Parameter Expansion" context="#pop" char=":" char1="q"/> 0400 <Detect2Chars attribute="Parameter Expansion" context="#pop" char=":" char1="Q"/> 0401 <Detect2Chars attribute="Parameter Expansion" context="#pop" char=":" char1="r"/> 0402 <Detect2Chars attribute="Parameter Expansion" context="#pop!VarNameModifier_s" char=":" char1="s"/> 0403 <Detect2Chars attribute="Parameter Expansion" context="#pop!VarNameModifier_h" char=":" char1="t"/> 0404 <Detect2Chars attribute="Parameter Expansion" context="#pop" char=":" char1="u"/> 0405 <Detect2Chars attribute="Parameter Expansion" context="#pop" char=":" char1="x"/> 0406 <Detect2Chars attribute="Parameter Expansion" context="#pop" char=":" char1="&"/> 0407 <StringDetect attribute="Parameter Expansion" context="#pop!VarNameModifier_s" String=":gs"/> 0408 </context> 0409 <context attribute="Normal Text" lineEndContext="#pop#pop" name="VarNameModifier_h" fallthroughContext="#pop"> 0410 <AnyChar attribute="Number" context="#stay" String="0123456789"/> 0411 </context> 0412 <context attribute="Parameter Expansion Operator" lineEndContext="#pop#pop" name="VarNameModifier_s" fallthroughContext="#pop#pop"> 0413 <DetectChar attribute="Parameter Expansion Operator" context="#pop!VarNameModifier_s_Str" char="/"/> 0414 </context> 0415 <context attribute="String SingleQ" lineEndContext="#pop#pop" name="VarNameModifier_s_Str"> 0416 <DetectChar attribute="Parameter Expansion Operator" context="#pop!VarNameModifier_s_Rep" char="/"/> 0417 <DetectChar context="AssumeEscape" char="\" lookAhead="1"/> 0418 <DetectChar attribute="String DoubleQ" context="#pop" char="""/> 0419 <DetectChar attribute="String SingleQ" context="#pop" char="'"/> 0420 </context> 0421 <context attribute="String SingleQ" lineEndContext="#pop#pop" name="VarNameModifier_s_Rep"> 0422 <DetectChar context="AssumeEscape" char="\" lookAhead="1"/> 0423 <IncludeRules context="FindWord"/> 0424 <DetectChar attribute="Parameter Expansion Operator" context="#pop" char="/"/> 0425 <AnyChar context="#pop#pop" String=" &tab;<>|&;()" lookAhead="1"/> 0426 <DetectIdentifier attribute="String SingleQ"/> 0427 </context> 0428 0429 <context attribute="Normal Text" lineEndContext="#stay" name="CommandBackq" fallthroughContext="Command"> 0430 <DetectChar attribute="Backquote" context="#pop!CommandArgs" char="`"/> 0431 <DetectChar attribute="Comment" context="CommentBackq" char="#"/> 0432 <IncludeRules context="Start"/> 0433 </context> 0434 <!-- CommentBackq consumes shell comments till EOL or a backquote --> 0435 <context attribute="Comment" lineEndContext="#pop" name="CommentBackq"> 0436 <DetectChar context="#pop" char="`" lookAhead="1"/> 0437 <IncludeRules context="Comment"/> 0438 </context> 0439 0440 <!-- CommandArgs matches the items after a command --> 0441 <context attribute="Normal Text" lineEndContext="#pop" name="CommandArgs" fallthroughContext="CommandArg"> 0442 <DetectSpaces attribute="Normal Text" context="#stay"/> 0443 0444 <!-- &> redirections --> 0445 <Detect2Chars attribute="Redirection" context="Prefix&>" char="&" char1=">"/> 0446 0447 <!-- handle &, |, ;, ` --> 0448 <AnyChar context="#pop" String="&|;`" lookAhead="1"/> 0449 0450 <!-- handle process subst --> 0451 <Detect2Chars attribute="Redirection" context="ProcessSubst" char="=" char1="("/> 0452 <!-- handle redirection --> 0453 <AnyChar context="CommandArgMaybeRedirection" String="><0123456789" lookAhead="1"/> 0454 0455 <DetectChar context="#pop" char=")" lookAhead="1"/> 0456 </context> 0457 <context attribute="Normal Text" lineEndContext="#pop#pop" name="CommandArg" fallthroughContext="#pop!NormalOption"> 0458 <!-- In command arguments, do not allow comments after escaped characters. 0459 This avoids highlighting comments within paths or other text. Ex: pathtext\ #no\ comment --> 0460 <DetectChar context="#pop#pop" char="#" lookAhead="1"/> 0461 <Detect2Chars attribute="Option" context="#pop!LongOption" char="-" char1="-"/> 0462 <DetectChar attribute="Option" context="#pop!ShortOption" char="-"/> 0463 <DetectChar attribute="Keyword" context="#pop!NormalOption" char="="/> 0464 </context> 0465 <context attribute="Normal Text" lineEndContext="#pop" name="CommandArgMaybeRedirection" fallthroughContext="#pop!NormalOption"> 0466 <IncludeRules context="FindRedirection"/> 0467 </context> 0468 0469 <context attribute="Option" lineEndContext="#pop" name="ShortOption" fallthroughContext="#pop"> 0470 <DetectChar attribute="Path" context="PathThenPop" char="/"/> 0471 <IncludeRules context="LongOption"/> 0472 </context> 0473 <context attribute="Option" lineEndContext="#pop" name="LongOption" fallthroughContext="#pop"> 0474 <AnyChar context="#pop" String="&wordseps_or_extglog;" lookAhead="1"/> 0475 <DetectChar attribute="Operator" context="#pop!NormalOption" char="="/> 0476 <IncludeRules context="FindWord"/> 0477 <IncludeRules context="FindSingleGlob"/> 0478 <IncludeRules context="FindGlobAny"/> 0479 <AnyChar context="#pop!NormalOption" String="({}<" lookAhead="1"/> 0480 <RegExpr attribute="Option" context="#stay" String="&opt;"/> 0481 </context> 0482 <context attribute="Normal Text" lineEndContext="#pop" name="NormalOption" fallthroughContext="#pop"> 0483 <AnyChar context="#pop" String="&wordseps_or_extglog;" lookAhead="1"/> 0484 <IncludeRules context="FindWord"/> 0485 <DetectChar attribute="Glob" context="PathThenPop" char="[" lookAhead="1"/> 0486 <DetectChar context="ExprGlobParenThenPath" char="(" lookAhead="1"/> 0487 <IncludeRules context="FindPathThenPop"/> 0488 <DetectChar context="NormalOptionMaybeBraceExpansion" char="{" lookAhead="1"/> 0489 <DetectChar context="NormalOptionMaybeGroupEnd" char="}" lookAhead="1"/> 0490 <IncludeRules context="FindNormalTextOption"/> 0491 <DetectChar context="MaybeGlobRangeOrPop" char="<" lookAhead="1"/> 0492 </context> 0493 <context attribute="Normal Text" lineEndContext="#pop#pop" name="NormalOptionRecBrace"> 0494 <AnyChar context="#pop#pop" String="&wordseps_or_extglog;" lookAhead="1"/> 0495 <IncludeRules context="FindWord"/> 0496 <IncludeRules context="FindSingleGlob"/> 0497 <IncludeRules context="FindGlobAny"/> 0498 <DetectChar context="ExprGlobParen" char="(" lookAhead="1"/> 0499 <DetectChar context="NormalOptionMaybeBraceExpansion" char="{" lookAhead="1"/> 0500 <DetectChar attribute="Normal Text" context="#pop" char="}"/> 0501 <DetectChar context="MaybeGlobRangeOrPop" char="<" lookAhead="1"/> 0502 <DetectIdentifier/> 0503 </context> 0504 <context attribute="Normal Text" lineEndContext="#pop" name="NormalOptionMaybeGroupEnd"> 0505 <IncludeRules context="FindNoGroupEndThenPop"/> 0506 <DetectChar context="#pop#pop#pop" char="}" lookAhead="1"/> 0507 </context> 0508 <context attribute="Normal Text" lineEndContext="#pop" name="FindNoGroupEndThenPop"> 0509 <RegExpr context="#pop" String="&nogroupend;"/> 0510 </context> 0511 <context attribute="Normal Text" lineEndContext="#stay" name="FindNormalTextOption"> 0512 <RegExpr attribute="Normal Text" context="#stay" String="([^[&wordseps;&substseps;]+|&nogroupend;)+"/> 0513 </context> 0514 <context attribute="Normal Text" lineEndContext="#pop" name="NormalOptionMaybeBraceExpansion"> 0515 <IncludeRules context="DispatchBraceExpansion"/> 0516 <DetectChar attribute="Normal Text" context="#pop!NormalOptionRecBrace" char="{"/> 0517 </context> 0518 0519 <context attribute="Normal Text" lineEndContext="#pop" name="AssumeEscape"> 0520 <LineContinue attribute="Escape" context="#pop"/> 0521 <RegExpr attribute="Escape" context="#pop" String="\\."/> 0522 </context> 0523 0524 <!-- ====== The following rulessets are meant to be included ======== --> 0525 0526 <!-- FindRedirection consumes shell redirection --> 0527 <context attribute="Normal Text" lineEndContext="#pop" name="FindRedirection"> 0528 <RegExpr attribute="File Descriptor" context="#pop!AssumeRedirection" String="[0-9]++(?=[<>])"/> 0529 <IncludeRules context="AssumeRedirection"/> 0530 </context> 0531 0532 <!-- DispatchBraceExpansion consumes brace expansions --> 0533 <context attribute="Normal Text" lineEndContext="#pop" name="DispatchBraceExpansion"> 0534 <RegExpr context="#pop!BraceExpansion" String="&braceexpansion;" lookAhead="1"/> 0535 <IncludeRules context="IncBraceExpansion"/> 0536 </context> 0537 <context attribute="Normal Text" lineEndContext="#pop" name="DispatchPathBraceExpansion"> 0538 <RegExpr context="#pop!PathBraceExpansion" String="&braceexpansion;" lookAhead="1"/> 0539 <IncludeRules context="IncBraceExpansion"/> 0540 </context> 0541 <context attribute="Normal Text" lineEndContext="#pop" name="IncBraceExpansion"> 0542 <RegExpr attribute="Escape" context="#pop!SequenceExpression" String="&bracerangeexpansion;"/> 0543 <RegExpr context="#pop" String="&nobraceexpansion;"/> 0544 </context> 0545 0546 <!-- FindPathThenPop consumes path --> 0547 <context attribute="Normal Text" lineEndContext="#pop" name="FindPathThenPop"> 0548 <AnyChar attribute="Glob" context="PathThenPop" String="?*#^"/> 0549 <RegExpr attribute="Path" context="PathThenPop" String="&pathpart;"/> 0550 <DetectChar attribute="Glob" context="PathThenPop" char="~"/> 0551 </context> 0552 <context attribute="Path" lineEndContext="#pop#pop" name="IncPath"> 0553 <IncludeRules context="FindWord"/> 0554 <IncludeRules context="FindSingleGlob"/> 0555 <IncludeRules context="FindGlobAny"/> 0556 <DetectChar context="ExprGlobParen" char="(" lookAhead="1"/> 0557 <RegExpr attribute="Path" context="#stay" String="&path;"/> 0558 <DetectChar context="MaybeGlobRangeOrPop" char="<" lookAhead="1"/> 0559 <DetectChar context="PathMaybeBraceExpansion" char="{" lookAhead="1"/> 0560 </context> 0561 <context attribute="Path" lineEndContext="#pop#pop" name="PathThenPop"> 0562 <AnyChar context="#pop#pop" String="&wordseps_or_extglog;" lookAhead="1"/> 0563 <IncludeRules context="IncPath"/> 0564 <DetectChar context="PathMaybeGroupEnd" char="}" lookAhead="1"/> 0565 <DetectIdentifier attribute="Path"/> 0566 </context> 0567 <context attribute="Path" lineEndContext="#pop" name="PathRecBrace"> 0568 <AnyChar context="#pop" String="&wordseps_or_extglog;" lookAhead="1"/> 0569 <IncludeRules context="IncPath"/> 0570 <DetectChar attribute="Path" context="#pop" char="}"/> 0571 <DetectIdentifier attribute="Path"/> 0572 </context> 0573 <context attribute="Glob" lineEndContext="#stay" name="MaybeGlobRangeOrPop" fallthroughContext="#pop#pop"> 0574 <IncludeRules context="FindGlobRangeThenPop"/> 0575 </context> 0576 <context attribute="Path" lineEndContext="#pop" name="PathMaybeBraceExpansion"> 0577 <IncludeRules context="DispatchPathBraceExpansion"/> 0578 <DetectChar attribute="Path" context="#pop!PathRecBrace" char="{"/> 0579 </context> 0580 <context attribute="Path" lineEndContext="#pop" name="PathMaybeGroupEnd"> 0581 <IncludeRules context="FindNoGroupEndThenPop"/> 0582 <DetectChar context="#pop#pop#pop" char="}" lookAhead="1"/> 0583 </context> 0584 <context attribute="Glob" lineEndContext="#stay" name="FindGlobRangeThenPop"> 0585 <RegExpr attribute="Glob" context="#pop!InGlobRange" String="<(?=[0-9]*-[0-9]*>)"/> 0586 </context> 0587 <context attribute="Number" lineEndContext="#stay" name="InGlobRange"> 0588 <AnyChar attribute="Number" context="#stay" String="0123456789"/> 0589 <DetectChar attribute="Glob" context="#stay" char="-"/> 0590 <DetectChar attribute="Glob" context="#pop" char=">"/> 0591 </context> 0592 0593 <!-- FindPathThenPopInAlternateValue consumes path in ${xx:here}--> 0594 <context attribute="Normal Text" lineEndContext="#pop" name="FindPathThenPopInAlternateValue"> 0595 <AnyChar attribute="Glob" context="PathThenPopInAlternateValue" String="&simpleglob;|"/> 0596 <Detect2Chars context="PathThenPopInAlternateValue" char="(" char1="#" lookAhead="1"/> 0597 <AnyChar context="PathThenPopInAlternateValue" String="[(" lookAhead="1"/> 0598 <RegExpr attribute="Path" context="PathThenPopInAlternateValue" String="&pathpart;"/> 0599 </context> 0600 <context attribute="Path" lineEndContext="#pop" name="PathThenPopInAlternateValue"> 0601 <AnyChar context="#pop" String="&wordseps_or_extglog;}" lookAhead="1"/> 0602 <IncludeRules context="IncPath"/> 0603 <DetectIdentifier/> 0604 </context> 0605 0606 <context attribute="Glob" lineEndContext="#stay" name="FindGlobAny"> 0607 <DetectChar attribute="Glob" context="GlobAnyFlag" char="["/> 0608 </context> 0609 <context attribute="String SingleQ" lineEndContext="#pop" name="GlobAnyFlag" fallthroughContext="#pop!GlobAny"> 0610 <DetectChar attribute="Glob Flag" context="#pop!GlobAny" char="^"/> 0611 </context> 0612 <context attribute="String SingleQ" lineEndContext="#pop" name="GlobAny"> 0613 <DetectIdentifier attribute="String SingleQ"/> 0614 <DetectChar context="AssumeEscape" char="\" lookAhead="1"/> 0615 <DetectChar attribute="Glob Flag" context="#stay" char="-"/> 0616 <IncludeRules context="FindStrings"/> 0617 <DetectChar attribute="Glob" context="#pop" char="]"/> 0618 <Detect2Chars attribute="Glob" context="GlobClass" char="[" char1=":"/> 0619 </context> 0620 <context attribute="Glob" lineEndContext="#pop#pop" name="GlobClass"> 0621 <DetectIdentifier attribute="Pattern"/> 0622 <Detect2Chars attribute="Glob" context="#pop" char=":" char1="]"/> 0623 <DetectChar attribute="Error" context="#pop" char="]"/> 0624 </context> 0625 0626 <context attribute="Pattern" lineEndContext="#stay" name="FindSingleGlob"> 0627 <AnyChar attribute="Glob" context="#stay" String="&simpleglob;"/> 0628 </context> 0629 0630 <context attribute="Pattern" lineEndContext="#stay" name="FindGlobPattern"> 0631 <AnyChar attribute="Glob" context="#stay" String="&simpleglob;|"/> 0632 <IncludeRules context="FindGlobAny"/> 0633 <IncludeRules context="FindGroupPattern"/> 0634 </context> 0635 0636 <context attribute="Pattern" lineEndContext="#stay" name="FindPattern"> 0637 <IncludeRules context="FindGlobPattern"/> 0638 <DetectChar context="GlobRangeOrError" char="<" lookAhead="1"/> 0639 </context> 0640 <context attribute="Glob" lineEndContext="#stay" name="GlobRangeOrError"> 0641 <IncludeRules context="FindGlobRangeThenPop"/> 0642 <DetectChar attribute="Error" context="#pop" char="<"/> 0643 </context> 0644 0645 <context attribute="Pattern" lineEndContext="#stay" name="FindSubPattern"> 0646 <IncludeRules context="FindGlobPattern"/> 0647 <DetectChar context="GlobRangeOrPattern" char="<" lookAhead="1"/> 0648 </context> 0649 <context attribute="Pattern" lineEndContext="#stay" name="GlobRangeOrPattern"> 0650 <IncludeRules context="FindGlobRangeThenPop"/> 0651 <DetectChar attribute="Pattern" context="#pop" char="<"/> 0652 </context> 0653 0654 <context attribute="Pattern" lineEndContext="#stay" name="FindStringDQPattern"> 0655 <IncludeRules context="FindGlobPattern"/> 0656 <DetectChar context="GlobRangeOrStringDQ" char="<" lookAhead="1"/> 0657 </context> 0658 <context attribute="String DoubleQ" lineEndContext="#stay" name="GlobRangeOrStringDQ"> 0659 <IncludeRules context="FindGlobRangeThenPop"/> 0660 <DetectChar attribute="String DoubleQ" context="#pop" char="<"/> 0661 </context> 0662 0663 <context attribute="Glob Flag" lineEndContext="#stay" name="FindGroupPattern"> 0664 <Detect2Chars attribute="Glob Flag" context="GlobPatFlag" char="(" char1="#"/> 0665 <DetectChar attribute="Glob" context="ExtGlobPattern" char="("/> 0666 </context> 0667 <context attribute="Pattern" lineEndContext="#stay" name="ExtGlobPattern"> 0668 <DetectChar attribute="Glob" context="#pop" char=")"/> 0669 <IncludeRules context="FindWord"/> 0670 <IncludeRules context="FindSubPattern"/> 0671 <DetectIdentifier attribute="Pattern"/> 0672 </context> 0673 <context attribute="Pattern" lineEndContext="#stay" name="ExtGlobPatternThenPath"> 0674 <DetectChar attribute="Glob" context="#pop!PathThenPop" char=")"/> 0675 <IncludeRules context="FindWord"/> 0676 <IncludeRules context="FindSubPattern"/> 0677 <DetectIdentifier attribute="Pattern"/> 0678 </context> 0679 0680 <context attribute="Normal Text" lineEndContext="#pop" name="VarAssign" fallthroughContext="#pop"> 0681 <DetectChar attribute="Parameter Expansion Operator" context="Subscript" char="["/> 0682 <DetectChar attribute="Operator" context="#pop!Assign" char="="/> 0683 <Detect2Chars attribute="Operator" context="#pop!Assign" char="+" char1="="/> 0684 </context> 0685 0686 <context attribute="Normal Text" lineEndContext="#pop" name="DispatchKeyword"> 0687 <!-- match do and if blocks --> 0688 <Detect2Chars attribute="Control Flow" context="#pop!NotCond" char="i" char1="f" beginRegion="if"/> 0689 <Detect2Chars attribute="Control Flow" context="#pop" char="f" char1="i" endRegion="if"/> 0690 <StringDetect attribute="Control Flow" context="#pop" String="done" endRegion="do"/> 0691 <Detect2Chars attribute="Control Flow" context="#pop" char="d" char1="o" beginRegion="do"/> 0692 <!-- handle while/until as a special case --> 0693 <StringDetect attribute="Control Flow" context="#pop!NotCond" String="while"/> 0694 <StringDetect attribute="Control Flow" context="#pop!NotCond" String="until"/> 0695 <!-- handle for as a special case --> 0696 <StringDetect attribute="Control Flow" context="#pop!Foreach" String="foreach"/> 0697 <StringDetect attribute="Control Flow" context="#pop!For" String="for"/> 0698 <!-- handle select as a special case --> 0699 <StringDetect attribute="Control Flow" context="#pop!Select" String="select"/> 0700 <StringDetect attribute="Control Flow" context="#pop!Repeat" String="repeat"/> 0701 <!-- handle case as a special case --> 0702 <StringDetect attribute="Control Flow" context="#pop!Case" String="case" beginRegion="case"/> 0703 <!-- handle functions with function keyword before keywords --> 0704 <StringDetect attribute="Keyword" context="#pop!FunctionDef" String="function"/> 0705 <StringDetect attribute="Control Flow" context="#pop!Return" String="return"/> 0706 <!-- not a keyword in this context --> 0707 <Detect2Chars attribute="Error" context="#pop" char="i" char1="n"/> 0708 <StringDetect attribute="Error" context="#pop" String="esac"/> 0709 <!-- handle keywords --> 0710 <DetectIdentifier attribute="Control Flow" context="#pop"/> 0711 </context> 0712 0713 <!-- if ! ... and while ! ... --> 0714 <context attribute="Normal Text" lineEndContext="#pop" name="NotCond" fallthroughContext="#pop"> 0715 <DetectSpaces attribute="Normal Text" context="#pop!NotCond2"/> 0716 </context> 0717 <context attribute="Normal Text" lineEndContext="#pop" name="NotCond2" fallthroughContext="#pop"> 0718 <Detect2Chars attribute="Expression" context="#pop" char="!" char1="&tab;"/> 0719 <Detect2Chars attribute="Expression" context="#pop" char="!" char1=" "/> 0720 <LineContinue attribute="Expression" context="#pop" char="!"/> 0721 </context> 0722 0723 <context attribute="Normal Text" lineEndContext="#pop" name="Foreach" fallthroughContext="#pop"> 0724 <LineContinue attribute="Escape" context="#stay"/> 0725 <DetectSpaces attribute="Normal Text" context="#stay"/> 0726 <DetectIdentifier attribute="Normal Text" context="#stay"/> 0727 <DetectChar attribute="Keyword" context="#pop!ForeachWord" char="("/> 0728 </context> 0729 <context attribute="Normal Text" lineEndContext="#stay" name="ForeachWord" fallthroughContext="NormalOption"> 0730 <DetectSpaces attribute="Normal Text" context="#stay"/> 0731 <DetectChar attribute="Control" context="#stay" char=";"/> 0732 <DetectChar attribute="Keyword" context="#pop" char=")"/> 0733 <DetectChar attribute="Backquote" context="CommandBackq" char="`"/> 0734 <AnyChar attribute="Control" context="#stay" String="&symbolseps;"/> 0735 </context> 0736 0737 <context attribute="Normal Text" lineEndContext="#pop" name="For" fallthroughContext="#pop"> 0738 <LineContinue attribute="Escape" context="#stay"/> 0739 <DetectSpaces attribute="Normal Text" context="#stay"/> 0740 <WordDetect attribute="Keyword" context="#pop!CommandArgs" String="in"/> 0741 <DetectIdentifier attribute="Normal Text" context="#stay"/> 0742 <Detect2Chars attribute="Keyword" context="#pop!ForArithmeticExpr" char="(" char1="("/> 0743 <DetectChar attribute="Keyword" context="#pop!ForeachWord" char="("/> 0744 </context> 0745 <context attribute="Normal Text" lineEndContext="#pop" name="ForArithmeticExpr"> 0746 <DetectSpaces attribute="Normal Text" context="#stay"/> 0747 <DetectChar attribute="Control" context="#stay" char=";"/> 0748 <Detect2Chars attribute="Keyword" context="#pop" char=")" char1=")"/> 0749 <IncludeRules context="FindExprDblParen"/> 0750 </context> 0751 0752 <context attribute="Normal Text" lineEndContext="#pop" name="Select" fallthroughContext="#pop"> 0753 <LineContinue attribute="Escape" context="#stay"/> 0754 <DetectSpaces attribute="Normal Text" context="#stay"/> 0755 <DetectIdentifier attribute="Normal Text" context="#pop!SelectIn"/> 0756 </context> 0757 <context attribute="Normal Text" lineEndContext="#pop" name="SelectIn" fallthroughContext="#pop"> 0758 <LineContinue attribute="Escape" context="#stay"/> 0759 <DetectSpaces attribute="Normal Text" context="#stay"/> 0760 <WordDetect attribute="Keyword" context="#pop!CommandArgs" String="in"/> 0761 </context> 0762 0763 <context attribute="Normal Text" lineEndContext="#pop" name="Repeat" fallthroughContext="#pop!RepeatArithmeticExpr"> 0764 <LineContinue attribute="Escape" context="#stay"/> 0765 <DetectSpaces attribute="Normal Text" context="#stay"/> 0766 </context> 0767 <context attribute="Normal Text" lineEndContext="#pop" name="RepeatArithmeticExpr"> 0768 <DetectSpaces attribute="Normal Text" context="#pop"/> 0769 <DetectChar attribute="Control" context="#pop" char=";"/> 0770 <IncludeRules context="FindExprDblParen"/> 0771 </context> 0772 0773 <!-- &> and &>> redirection --> 0774 <context attribute="Normal Text" lineEndContext="#pop" name="Prefix&>" fallthroughContext="#pop!FdRedirection"> 0775 <Detect2Chars attribute="Redirection" context="#pop!WordRedirection" char=">" char1="|"/> 0776 <Detect2Chars attribute="Redirection" context="#pop!WordRedirection" char=">" char1="!"/> 0777 <AnyChar attribute="Redirection" context="#pop!WordRedirection" String=">|!"/> 0778 </context> 0779 0780 <context attribute="Normal Text" lineEndContext="#pop" name="AssumeRedirection"> 0781 <!-- handle output redirection --> 0782 <StringDetect attribute="Redirection" context="#pop!WordRedirection" String=">>|"/> 0783 <StringDetect attribute="Redirection" context="#pop!WordRedirection" String=">>!"/> 0784 <StringDetect attribute="Redirection" context="#pop!WordRedirection" String=">>&|"/> 0785 <StringDetect attribute="Redirection" context="#pop!WordRedirection" String=">>&!"/> 0786 <StringDetect attribute="Redirection" context="#pop!ProcessSubst" String=">>("/> 0787 <Detect2Chars attribute="Redirection" context="#pop!WordRedirection" char=">" char1=">"/> 0788 <Detect2Chars attribute="Redirection" context="#pop!WordRedirection" char=">" char1="|"/> 0789 <Detect2Chars attribute="Redirection" context="#pop!WordRedirection" char=">" char1="!"/> 0790 <StringDetect attribute="Redirection" context="#pop!WordRedirection" String=">&|"/> 0791 <StringDetect attribute="Redirection" context="#pop!WordRedirection" String=">&!"/> 0792 <Detect2Chars attribute="Redirection" context="#pop!FdRedirection" char=">" char1="&"/> 0793 <Detect2Chars attribute="Redirection" context="#pop!ProcessSubst" char=">" char1="("/> 0794 <DetectChar attribute="Redirection" context="#pop!WordRedirection" char=">"/> 0795 <!-- handle input redirection --> 0796 <Detect2Chars attribute="Redirection" context="#pop!ProcessSubst" char="<" char1="("/> 0797 <StringDetect attribute="Redirection" context="#pop!ProcessSubst" String="<<("/> 0798 <StringDetect attribute="Redirection" context="#pop!StringRedirection" String="<<<"/> 0799 <!-- handle here document --> 0800 <Detect2Chars context="#pop!HereDoc" char="<" char1="<" lookAhead="1"/> 0801 <Detect2Chars attribute="Redirection" context="#pop!FdRedirection" char="<" char1="&"/> 0802 <Detect2Chars attribute="Redirection" context="#pop!WordRedirection" char="<" char1=">"/> 0803 <IncludeRules context="FindGlobRangeThenPop"/> 0804 <DetectChar attribute="Redirection" context="#pop!WordRedirection" char="<"/> 0805 </context> 0806 <context attribute="Normal Text" lineEndContext="#pop" name="FdRedirection" fallthroughContext="#pop!FdRedirection2"> 0807 <DetectSpaces attribute="Normal Text" context="#pop!FdRedirection2"/> 0808 </context> 0809 <context attribute="Normal Text" lineEndContext="#pop" name="FdRedirection2" fallthroughContext="#pop!WordRedirection2"> 0810 <RegExpr attribute="File Descriptor" context="#pop!CloseFile" String="[0-9]+(?=-?&eoexpr;)"/> 0811 </context> 0812 <context attribute="Normal Text" lineEndContext="#pop" name="WordRedirection" fallthroughContext="#pop!WordRedirection2"> 0813 <DetectSpaces attribute="Normal Text" context="#pop!WordRedirection2"/> 0814 </context> 0815 <context attribute="Normal Text" lineEndContext="#pop" name="WordRedirection2" fallthroughContext="#pop"> 0816 <AnyChar context="#pop" String="&wordseps;`" lookAhead="1"/> 0817 <IncludeRules context="FindWord"/> 0818 <RegExpr attribute="Path" context="PathThenPop" String="&path;"/> 0819 </context> 0820 <context attribute="Normal Text" lineEndContext="#pop" name="StringRedirection" fallthroughContext="#pop!StringRedirection2"> 0821 <DetectSpaces attribute="Normal Text" context="#pop!StringRedirection2"/> 0822 </context> 0823 <context attribute="Normal Text" lineEndContext="#pop" name="StringRedirection2"> 0824 <AnyChar context="#pop" String="&wordseps;`" lookAhead="1"/> 0825 <IncludeRules context="FindWord"/> 0826 <DetectIdentifier attribute="Normal Text"/> 0827 </context> 0828 <context attribute="Normal Text" lineEndContext="#pop" name="CloseFile" fallthroughContext="#pop"> 0829 <DetectChar attribute="Keyword" context="#pop" char="-"/> 0830 </context> 0831 0832 <!-- HereDoc consumes Here-documents. It is called at the beginning of the "<<" construct. --> 0833 <context attribute="Normal Text" lineEndContext="#stay" name="HereDoc"> 0834 <RegExpr attribute="Redirection" context="HereDocIQ" String="<<-[ &tab;]*&heredocq;(?=[ &tab;]*$)"/> 0835 <RegExpr attribute="Redirection" context="HereDocINQ" String="<<-[ &tab;]*([^&wordseps;]+)(?=[ &tab;]*$)"/> 0836 <RegExpr attribute="Redirection" context="HereDocQ" String="<<[ &tab;]*&heredocq;(?=[ &tab;]*$)"/> 0837 <RegExpr attribute="Redirection" context="HereDocNQ" String="<<[ &tab;]*([^&wordseps;]+)(?=[ &tab;]*$)"/> 0838 0839 <RegExpr context="HereDocIQCmd" String="(<<-[ &tab;]*&heredocq;)" lookAhead="1"/> 0840 <RegExpr context="HereDocINQCmd" String="(<<-[ &tab;]*([^&wordseps;]+))" lookAhead="1"/> 0841 <RegExpr context="HereDocQCmd" String="(<<[ &tab;]*&heredocq;)" lookAhead="1"/> 0842 <RegExpr context="HereDocNQCmd" String="(<<[ &tab;]*([^&wordseps;]+))" lookAhead="1"/> 0843 0844 <Detect2Chars attribute="Redirection" context="#pop" char="<" char1="<"/><!-- always met --> 0845 </context> 0846 0847 <context attribute="Normal Text" lineEndContext="#pop" name="HereDocRemainder" fallthroughContext="CommandArg"> 0848 <AnyChar context="ZshOneLine" String="&|;`" lookAhead="1"/> 0849 <IncludeRules context="CommandArgs"/> 0850 </context> 0851 <context attribute="Normal Text" lineEndContext="#pop" name="ZshOneLine" fallthroughContext="Command"> 0852 <IncludeRules context="Start"/> 0853 </context> 0854 0855 <context attribute="Here Doc" lineEndContext="#stay" name="HereDocQ" dynamic="1" fallthroughContext="HereDocText"> 0856 <RegExpr attribute="Redirection" context="#pop#pop" String="^%1$" dynamic="1" column="0"/> 0857 </context> 0858 0859 <context attribute="Here Doc" lineEndContext="#stay" name="HereDocNQ" dynamic="1" fallthroughContext="HereDocSubstitutions"> 0860 <IncludeRules context="HereDocQ" /> 0861 </context> 0862 0863 <context attribute="Here Doc" lineEndContext="#stay" name="HereDocIQ" dynamic="1" fallthroughContext="HereDocText"> 0864 <RegExpr attribute="Redirection" context="#pop#pop" String="^\t*%1$" dynamic="1" column="0"/> 0865 </context> 0866 0867 <context attribute="Here Doc" lineEndContext="#stay" name="HereDocINQ" dynamic="1" fallthroughContext="HereDocSubstitutions"> 0868 <IncludeRules context="HereDocIQ" /> 0869 </context> 0870 0871 <context attribute="Here Doc" lineEndContext="#stay" name="HereDocCmd"> 0872 <!-- Only if the redirect is before the command, but as this is too complicated, 0873 check if the redirect is at the beginning of the line. --> 0874 <StringDetect attribute="Redirection" context="ZshOneLine" String="%1" dynamic="true" firstNonSpace="1"/> 0875 <StringDetect attribute="Redirection" context="HereDocRemainder" String="%1" dynamic="true"/> 0876 </context> 0877 0878 <context attribute="Here Doc" lineEndContext="#stay" name="HereDocQCmd" dynamic="1" fallthroughContext="HereDocText"> 0879 <IncludeRules context="HereDocCmd"/> 0880 <RegExpr attribute="Redirection" context="#pop#pop" String="^%2$" dynamic="1" column="0"/> 0881 </context> 0882 0883 <context attribute="Here Doc" lineEndContext="#stay" name="HereDocNQCmd" dynamic="1" fallthroughContext="HereDocSubstitutions"> 0884 <IncludeRules context="HereDocQCmd"/> 0885 </context> 0886 0887 <context attribute="Here Doc" lineEndContext="#stay" name="HereDocIQCmd" dynamic="1" fallthroughContext="HereDocText"> 0888 <IncludeRules context="HereDocCmd"/> 0889 <RegExpr attribute="Redirection" context="#pop#pop" String="^\t*%2$" dynamic="1" column="0"/> 0890 </context> 0891 0892 <context attribute="Here Doc" lineEndContext="#stay" name="HereDocINQCmd" dynamic="1" fallthroughContext="HereDocSubstitutions"> 0893 <IncludeRules context="HereDocIQCmd"/> 0894 </context> 0895 0896 <context attribute="Here Doc" lineEndContext="#pop" name="HereDocText"> 0897 </context> 0898 0899 <context attribute="Here Doc" lineEndContext="#pop" name="HereDocSubstitutions"> 0900 <DetectSpaces attribute="Here Doc"/> 0901 <DetectIdentifier attribute="Here Doc"/> 0902 <DetectChar context="HereDocVariables" char="$" lookAhead="1"/> 0903 <DetectChar attribute="Backquote" context="CommandBackq" char="`"/> 0904 <DetectChar context="AssumeEscape" char="\" lookAhead="1"/> 0905 </context> 0906 <context attribute="Here Doc" lineEndContext="#pop" name="HereDocVariables"> 0907 <IncludeRules context="DispatchSubstVariables"/> 0908 <IncludeRules context="DispatchVarNameVariables"/> 0909 <DetectChar attribute="Here Doc" context="#pop" char="$"/> 0910 </context> 0911 0912 <!-- VarName consumes spare variable names and assignments --> 0913 <context attribute="Normal Text" lineEndContext="#pop" name="VarName"> 0914 <StringDetect attribute="Builtin" context="#pop!BuiltinGetopts" String="getopts"/> 0915 <StringDetect attribute="Builtin" context="#pop!BuiltinLet" String="let"/> 0916 <DetectIdentifier attribute="Builtin" context="#pop!VarNameArgs"/> 0917 <AnyChar attribute="Builtin" context="#pop!VarNameArgs" String=".:-"/> 0918 </context> 0919 <context attribute="Normal Text" lineEndContext="#pop" name="VarNameArgs" fallthroughContext="#pop!CommandArgs"> 0920 <DetectSpaces attribute="Normal Text" context="VarNameArg"/> 0921 <LineContinue attribute="Escape" context="#stay"/> 0922 </context> 0923 <context attribute="Normal Text" lineEndContext="#pop#pop" name="VarNameArg" fallthroughContext="#pop!VarNameArg2"> 0924 <!-- In command arguments, do not allow comments after escaped characters. 0925 This avoids highlighting comments within paths or other text. Ex: pathtext\ #no\ comment --> 0926 <DetectChar context="#pop#pop" char="#" lookAhead="1"/> 0927 <AnyChar attribute="Option" context="#pop!ShortOption" String="-+"/> 0928 <DetectChar attribute="Keyword" context="#pop!VarNameArg2" char="="/> 0929 </context> 0930 <context attribute="Normal Text" lineEndContext="#pop" name="VarNameArg2" fallthroughContext="#pop!NormalOption"> 0931 <DetectChar attribute="Variable" context="Subscript" char="["/> 0932 <DetectChar attribute="Operator" context="Assign" char="="/> 0933 <DetectChar attribute="Variable" context="AssignArray" char="("/> 0934 <DetectIdentifier attribute="Variable" context="#stay"/> 0935 </context> 0936 <context attribute="Normal Text" lineEndContext="#pop" name="BuiltinGetopts" fallthroughContext="#pop!CommandArgs"> 0937 <DetectSpaces attribute="Normal Text" context="#pop!BuiltinGetoptsOpt"/> 0938 <LineContinue attribute="Escape" context="#stay"/> 0939 </context> 0940 <context attribute="Normal Text" lineEndContext="#pop#pop" name="BuiltinGetoptsOpt" fallthroughContext="#pop!BuiltinGetoptsOpt2"> 0941 <DetectChar context="#pop#pop" char="#" lookAhead="1"/> 0942 <DetectChar attribute="Keyword" context="#pop!NormalOption" char="="/> 0943 </context> 0944 <context attribute="Normal Text" lineEndContext="#pop" name="BuiltinGetoptsOpt2" fallthroughContext="#pop!NormalOption"> 0945 <DetectChar attribute="Operator" context="#stay" char=":"/> 0946 <DetectIdentifier attribute="Normal Text" context="#stay" /> 0947 <DetectSpaces attribute="Normal Text" context="#pop!BuiltinGetoptsVar"/> 0948 <AnyChar context="#pop" String="&wordseps_or_extglog;" lookAhead="1"/> 0949 <IncludeRules context="FindWord"/> 0950 <DetectChar context="NormalOptionMaybeBraceExpansion" char="{" lookAhead="1"/> 0951 <DetectChar context="NormalOptionMaybeGroupEnd" char="}" lookAhead="1"/> 0952 <AnyChar attribute="Normal Text" context="#stay" String="/%.0123456789"/> 0953 </context> 0954 <context attribute="Normal Text" lineEndContext="#pop" name="BuiltinGetoptsVar" fallthroughContext="#pop!CommandArgs"> 0955 <DetectIdentifier attribute="Variable" context="#pop!CommandArgs"/> 0956 </context> 0957 <context attribute="Normal Text" lineEndContext="#pop" name="BuiltinLet" fallthroughContext="#pop!CommandArgs"> 0958 <DetectSpaces attribute="Normal Text" context="#pop!BuiltinLetArgs"/> 0959 <LineContinue attribute="Escape" context="#stay"/> 0960 </context> 0961 <context attribute="Normal Text" lineEndContext="#pop" name="BuiltinLetArgs" fallthroughContext="BuiltinLetArg"> 0962 <AnyChar context="BuiltinLetArgsNumber" String="0123456789" lookAhead="1"/> 0963 <IncludeRules context="CommandArgs"/> 0964 </context> 0965 <context attribute="Normal Text" lineEndContext="#pop" name="BuiltinLetArgsNumber" fallthroughContext="#pop!BuiltinLetArg"> 0966 <IncludeRules context="FindRedirection"/> 0967 </context> 0968 <context attribute="Normal Text" lineEndContext="#pop#pop" name="BuiltinLetArg" fallthroughContext="#pop!BuiltinLetExpr"> 0969 <DetectChar context="#pop#pop" char="#" lookAhead="1"/> 0970 <DetectChar attribute="Keyword" context="#pop!NormalOption" char="="/> 0971 </context> 0972 <context attribute="Normal Text" lineEndContext="#pop" name="BuiltinLetExpr" fallthroughContext="#pop!NormalOption"> 0973 <DetectIdentifier attribute="Variable" context="#stay" /> 0974 <AnyChar context="#pop" String="&wordseps_or_extglog;" lookAhead="1"/> 0975 <AnyChar attribute="Operator" context="#stay" String="+-!%=^:"/> 0976 <AnyChar context="Number" String="0123456789." lookAhead="1"/> 0977 <DetectChar attribute="Parameter Expansion Operator" context="Subscript" char="["/> 0978 <IncludeRules context="FindWord"/> 0979 <Detect2Chars attribute="BaseN" context="NoPrefix" char="#" char1="#"/> 0980 <DetectChar attribute="Error" context="#stay" char="#"/> 0981 <DetectChar context="NormalOptionMaybeBraceExpansion" char="{" lookAhead="1"/> 0982 <DetectChar context="NormalOptionMaybeGroupEnd" char="}" lookAhead="1"/> 0983 </context> 0984 0985 <!-- ProcessSubst handles <(command) and >(command) --> 0986 <context attribute="Normal Text" lineEndContext="#stay" name="ProcessSubst" fallthroughContext="Command"> 0987 <DetectChar attribute="Redirection" context="#pop" char=")"/> 0988 <IncludeRules context="Start"/> 0989 </context> 0990 0991 <!-- StringSQ consumes anything till ' --> 0992 <context attribute="String SingleQ" lineEndContext="#stay" name="StringSQ"> 0993 <DetectSpaces attribute="String SingleQ"/> 0994 <DetectIdentifier attribute="String SingleQ"/> 0995 <DetectChar attribute="String SingleQ" context="#pop" char="'"/> 0996 </context> 0997 0998 <!-- StringDQ consumes anything till ", substitutes vars and expressions --> 0999 <context attribute="String DoubleQ" lineEndContext="#stay" name="StringDQ"> 1000 <DetectSpaces attribute="String DoubleQ"/> 1001 <DetectIdentifier attribute="String DoubleQ"/> 1002 <DetectChar attribute="String DoubleQ" context="#pop" char="""/> 1003 <DetectChar context="StringDQEscape" char="\" lookAhead="1"/> 1004 <DetectChar context="StringDQDispatchVariables" char="$" lookAhead="1"/> 1005 <DetectChar attribute="Backquote" context="RegularBackq" char="`"/> 1006 </context> 1007 <context attribute="String DoubleQ" lineEndContext="#stay" name="StringDQDispatchVariables"> 1008 <IncludeRules context="DispatchSubstVariables"/> 1009 <IncludeRules context="DispatchVarNameVariables"/> 1010 <DetectChar attribute="String DoubleQ" context="#pop" char="$"/> 1011 </context> 1012 <context attribute="String DoubleQ" lineEndContext="#pop" name="StringDQEscape"> 1013 <Detect2Chars attribute="String Escape" context="#pop" char="\" char1="""/> 1014 <Detect2Chars attribute="String Escape" context="#pop" char="\" char1="\"/> 1015 <Detect2Chars attribute="String Escape" context="#pop" char="\" char1="`"/> 1016 <Detect2Chars attribute="String Escape" context="#pop" char="\" char1="$"/> 1017 <LineContinue attribute="String Escape" context="#pop"/> 1018 <DetectChar attribute="String DoubleQ" context="#pop" char="\"/> 1019 </context> 1020 1021 <!-- RegularBackq consumes anything till ` --> 1022 <context attribute="Normal Text" lineEndContext="#stay" name="RegularBackq" fallthroughContext="Command"> 1023 <DetectChar attribute="Backquote" context="#pop" char="`"/> 1024 <DetectChar attribute="Comment" context="CommentBackq" char="#"/> 1025 <IncludeRules context="Start"/> 1026 </context> 1027 1028 <!-- StringEsc eats till ', but escaping many characters --> 1029 <context attribute="String SingleQ" lineEndContext="#stay" name="StringEsc"> 1030 <DetectSpaces attribute="String SingleQ"/> 1031 <DetectIdentifier attribute="String SingleQ"/> 1032 <DetectChar attribute="String SingleQ" context="#pop" char="'"/> 1033 <RegExpr attribute="String Escape" context="#stay" String="\\(?:[abefnrtv\\']|[0-7]{1,3}|x[A-Fa-f0-9]{1,2}|c.)"/> 1034 </context> 1035 1036 <context attribute="Normal Text" lineEndContext="#stay" name="FindWord"> 1037 <IncludeRules context="FindStrings"/> 1038 <DetectChar context="RegularVariable" char="$" lookAhead="1"/> 1039 <DetectChar attribute="Backquote" context="RegularBackq" char="`"/> 1040 <DetectChar context="AssumeEscape" char="\" lookAhead="1"/> 1041 </context> 1042 <context attribute="Normal Text" lineEndContext="#pop" name="RegularVariable"> 1043 <IncludeRules context="DispatchVariables"/> 1044 <DetectChar attribute="Normal Text" context="#pop" char="$"/> 1045 </context> 1046 1047 <context attribute="Normal Text" lineEndContext="#pop" name="FindStrings"> 1048 <DetectChar attribute="String SingleQ" context="StringSQ" char="'"/> 1049 <DetectChar attribute="String DoubleQ" context="StringDQ" char="""/> 1050 </context> 1051 1052 <!-- SubstCommand is called after a $( is encountered --> 1053 <context attribute="Normal Text" lineEndContext="#stay" name="SubstCommand" fallthroughContext="Command"> 1054 <DetectChar attribute="Parameter Expansion" context="#pop" char=")" endRegion="subshell"/> 1055 <IncludeRules context="Start"/> 1056 </context> 1057 1058 <!-- VarBraceStart is called as soon as ${ is encoutered --> 1059 <context attribute="Variable" lineEndContext="#pop" name="VarBraceStart" fallthroughContext="#pop!CheckVarAlt"> 1060 <DetectChar attribute="Parameter Expansion" context="#pop!VarFlags" char="("/> 1061 <IncludeRules context="VarFlagsVar"/> 1062 </context> 1063 <context attribute="Variable" lineEndContext="#stay" name="VarBraceStartRecursive" fallthroughContext="#pop#pop!CheckVarAlt"> 1064 <Detect2Chars attribute="Parameter Expansion" context="VarBraceStart" char="$" char1="{"/> 1065 <StringDetect context="#pop!ExprDblParenSubstOrSubstCommand" String="$((" lookAhead="1"/> 1066 <Detect2Chars attribute="Parameter Expansion" context="#pop!SubstCommand" char="$" char1="(" beginRegion="subshell"/> 1067 <DetectChar attribute="Error" context="#pop" char="$"/> 1068 </context> 1069 <context attribute="Error" lineEndContext="#stay" name="VarError"> 1070 <DetectChar attribute="Parameter Expansion" context="#pop" char="}"/> 1071 </context> 1072 <context attribute="Normal Text" lineEndContext="#stay" name="CheckVarAlt" fallthroughContext="#pop!VarError"> 1073 <DetectChar attribute="Parameter Expansion" context="#pop" char="}"/> 1074 <StringDetect attribute="Parameter Expansion Operator" context="#stay" String="[@]"/> 1075 <StringDetect attribute="Parameter Expansion Operator" context="#stay" String="[*]"/> 1076 <DetectChar attribute="Parameter Expansion Operator" context="Subscript" char="["/> 1077 <Detect2Chars attribute="Parameter Expansion Operator" context="#pop!AlternatePatternValue" char="%" char1="%"/> 1078 <Detect2Chars attribute="Parameter Expansion Operator" context="#pop!AlternatePatternValue" char="#" char1="#"/> 1079 <AnyChar attribute="Parameter Expansion Operator" context="#pop!AlternatePatternValue" String="#%"/> 1080 <AnyChar attribute="Parameter Expansion Operator" context="#pop!AlternateValue" String="-+=?"/> 1081 <DetectChar attribute="Parameter Expansion Operator" context="#pop!AlternateValuePrefix" char=":"/> 1082 <Detect2Chars attribute="Parameter Expansion Operator" context="#pop!VarBraceSubst" char="/" char1="/"/> 1083 <DetectChar attribute="Parameter Expansion Operator" context="#pop!VarBraceSubst" char="/"/> 1084 </context> 1085 <context attribute="Parameter Expansion" lineEndContext="#stay" name="AlternateValuePrefix" fallthroughContext="#pop!VarSub"> 1086 <Detect2Chars attribute="Parameter Expansion Operator" context="#pop!AlternateValue" char="^" char1="^"/> 1087 <DetectChar attribute="Parameter Expansion Operator" context="#pop!AlternatePatternValue" char="#"/> 1088 <AnyChar attribute="Parameter Expansion Operator" context="#pop!AlternateValue" String="-+=?|*^"/> 1089 <Detect2Chars attribute="Parameter Expansion Operator" context="#pop!AlternateValue" char=":" char1="="/> 1090 <DetectChar attribute="Parameter Expansion Operator" context="#pop!VarBraceSubst" char="/"/> 1091 1092 <!-- Modifiers --> 1093 <AnyChar attribute="Parameter Expansion" context="#pop!VarBraceModifiers" String="aAcehlpPqQrsg&tux" lookAhead="1"/> 1094 </context> 1095 1096 <!-- called as soon as ${xxx:y (with y a modifier) is encoutered --> 1097 <context attribute="Parameter Expansion" lineEndContext="#stay" name="VarBraceModifiers"> 1098 <DetectChar attribute="Parameter Expansion" context="#pop" char="}"/> 1099 <DetectChar attribute="Parameter Expansion Operator" context="#stay" char=":"/> 1100 <AnyChar attribute="Parameter Expansion" context="VarBraceModifier_h" String="ht"/> 1101 <DetectChar attribute="Parameter Expansion" context="VarBraceModifier_s" char="s"/> 1102 <Detect2Chars attribute="Parameter Expansion" context="VarBraceModifier_s" char="g" char1="s"/> 1103 </context> 1104 <context attribute="Parameter Expansion" lineEndContext="#stay" name="VarBraceModifier_h" fallthroughContext="#pop"> 1105 <AnyChar attribute="Number" context="#stay" String="0123456789"/> 1106 </context> 1107 1108 <!-- called as soon as ${xxx:s and ${xxx:gs is encoutered --> 1109 <context attribute="Parameter Expansion" lineEndContext="#stay" name="VarBraceModifier_s"> 1110 <DetectChar attribute="Error" context="#pop#pop" char="}"/> 1111 <DetectChar attribute="Parameter Expansion Operator" context="#pop!VarBraceModifier_s_Str" char="/"/> 1112 <DetectChar context="AssumeEscape" char="\" lookAhead="1"/> 1113 </context> 1114 <context attribute="String SingleQ" lineEndContext="#stay" name="VarBraceModifier_s_Str"> 1115 <DetectChar attribute="Parameter Expansion" context="#pop#pop" char="}"/> 1116 <DetectChar attribute="Parameter Expansion Operator" context="#pop!VarBraceModifier_s_Rep" char="/"/> 1117 <DetectChar context="AssumeEscape" char="\" lookAhead="1"/> 1118 <DetectChar attribute="String SingleQ" context="RecursiveVarBraceModifier_s" char="{"/> 1119 </context> 1120 <context attribute="String SingleQ" lineEndContext="#stay" name="RecursiveVarBraceModifier_s"> 1121 <DetectChar context="AssumeEscape" char="\" lookAhead="1"/> 1122 <DetectChar attribute="String SingleQ" context="#pop" char="}"/> 1123 </context> 1124 <context attribute="String SingleQ" lineEndContext="#stay" name="VarBraceModifier_s_Rep"> 1125 <DetectChar attribute="Parameter Expansion" context="#pop#pop" char="}"/> 1126 <DetectChar attribute="Parameter Expansion Operator" context="#pop" char="/"/> 1127 <DetectChar attribute="String SingleQ" context="RecursiveVarBraceModifier_s" char="{"/> 1128 </context> 1129 1130 <!-- called as soon as ${xxx: is encoutered --> 1131 <context attribute="Normal Text" lineEndContext="#stay" name="VarSub"> 1132 <DetectChar attribute="Parameter Expansion" context="#pop" char="}"/> 1133 <AnyChar context="VarOffset" String="0123456789" lookAhead="1"/> 1134 <AnyChar attribute="Operator" context="#stay" String="+-!~*/%<>=&^|"/> 1135 <DetectChar attribute="Parameter Expansion Operator" context="#stay" char=":"/> 1136 <DetectChar context="VarVariables" char="$" lookAhead="1"/> 1137 <IncludeRules context="FindStrings"/> 1138 <DetectChar attribute="Backquote" context="RegularBackq" char="`"/> 1139 <DetectChar context="AssumeEscape" char="\" lookAhead="1"/> 1140 </context> 1141 <context attribute="Command" lineEndContext="#pop" name="VarVariables"> 1142 <IncludeRules context="DispatchVariables"/> 1143 <DetectChar attribute="Error" context="#pop" char="$"/> 1144 </context> 1145 <context attribute="Number" lineEndContext="#pop" name="VarOffset" fallthroughContext="#pop"> 1146 <Detect2Chars attribute="Hex" context="#pop!Hex" char="0" char1="x"/> 1147 <Detect2Chars attribute="Hex" context="#pop!Hex" char="0" char1="X"/> 1148 <AnyChar attribute="Number" context="#stay" String="0123456789_"/> 1149 <DetectChar attribute="Base" context="#stay" char="#"/> 1150 </context> 1151 1152 <!-- called as soon as ${xxx:-, etc are encoutered --> 1153 <context attribute="String DoubleQ" lineEndContext="#stay" name="AlternateValue"> 1154 <DetectChar attribute="String DoubleQ" context="RecursiveAlternateValue" char="{"/> 1155 <DetectChar attribute="Parameter Expansion" context="#pop" char="}"/> 1156 <IncludeRules context="FindWord"/> 1157 <IncludeRules context="FindPathThenPopInAlternateValue"/> 1158 <DetectIdentifier attribute="String DoubleQ"/> 1159 </context> 1160 <context attribute="String DoubleQ" lineEndContext="#stay" name="RecursiveAlternateValue"> 1161 <DetectChar attribute="String DoubleQ" context="RecursiveAlternateValue" char="{"/> 1162 <DetectChar attribute="String DoubleQ" context="#pop" char="}"/> 1163 <IncludeRules context="FindWord"/> 1164 <IncludeRules context="FindPathThenPopInAlternateValue"/> 1165 <DetectIdentifier attribute="String DoubleQ"/> 1166 </context> 1167 1168 <!-- called as soon as ${xxx%, etc are encoutered --> 1169 <context attribute="String DoubleQ" lineEndContext="#stay" name="AlternatePatternValue"> 1170 <DetectChar attribute="String DoubleQ" context="RecursiveAlternatePatternValue" char="{"/> 1171 <DetectChar attribute="Parameter Expansion" context="#pop" char="}"/> 1172 <IncludeRules context="FindWord"/> 1173 <IncludeRules context="FindStringDQPattern"/> 1174 <DetectIdentifier attribute="String DoubleQ"/> 1175 </context> 1176 <context attribute="String DoubleQ" lineEndContext="#stay" name="RecursiveAlternatePatternValue"> 1177 <DetectChar attribute="String DoubleQ" context="RecursiveAlternateValue" char="{"/> 1178 <DetectChar attribute="String DoubleQ" context="#pop" char="}"/> 1179 <IncludeRules context="FindWord"/> 1180 <IncludeRules context="FindStringDQPattern"/> 1181 <DetectIdentifier attribute="String DoubleQ"/> 1182 </context> 1183 1184 <!-- called as soon as ${xxx/ ${xxx// ${xxx:/ are encoutered --> 1185 <context attribute="Normal Text" lineEndContext="#stay" name="VarBraceSubst" fallthroughContext="#pop!VarBraceSubstPat"> 1186 <Detect2Chars attribute="Parameter Expansion Operator" context="#pop!VarBraceSubstPat" char="#" char1="%"/> 1187 <AnyChar attribute="Parameter Expansion Operator" context="#pop!VarBraceSubstPat" String="#%"/> 1188 </context> 1189 <context attribute="Pattern" lineEndContext="#stay" name="VarBraceSubstPat"> 1190 <DetectChar attribute="Parameter Expansion Operator" context="#pop!AlternateValue" char="/"/> 1191 <DetectChar attribute="String DoubleQ" context="RecursiveAlternateValue" char="{"/> 1192 <DetectChar attribute="Parameter Expansion" context="#pop" char="}"/> 1193 <IncludeRules context="FindWord"/> 1194 <IncludeRules context="FindSubPattern"/> 1195 <DetectIdentifier attribute="Pattern"/> 1196 </context> 1197 1198 <!-- called as soon as ${( is encoutered --> 1199 <context attribute="Parameter Expansion" lineEndContext="#stay" name="VarFlags"> 1200 <AnyChar attribute="Parameter Expansion Operator" context="#stay" String="#%*q@AabcCDefFikLnoOPqQ+-tuUvVwWXz0~mSBEMNR"/> 1201 <AnyChar attribute="Parameter Expansion Operator" context="VarFlag_s" String="sjgZ_"/> 1202 <AnyChar attribute="Parameter Expansion Operator" context="VarFlag_l" String="lrI"/> 1203 <DetectChar attribute="Parameter Expansion Operator" context="#pop!VarFlagsSubs" char="p"/> 1204 1205 <DetectChar attribute="Parameter Expansion" context="#pop!VarFlagsVar" char=")"/> 1206 <DetectChar attribute="Error" context="#pop" char="}"/> 1207 </context> 1208 <context attribute="Parameter Expansion" lineEndContext="#stay" name="VarFlagsSubs"> 1209 <AnyChar attribute="Parameter Expansion Operator" context="#stay" String="#q@AabcCDefFikLnoOPqQ+-tuUvVwWXz0~mSBEMNRp"/> 1210 <AnyChar attribute="Parameter Expansion Operator" context="VarFlag_s" String="gZ"/> 1211 <AnyChar attribute="Parameter Expansion Operator" context="VarFlag_ps" String="sj_"/> 1212 <AnyChar attribute="Parameter Expansion Operator" context="VarFlag_pl" String="lrI"/> 1213 1214 <DetectChar attribute="Parameter Expansion" context="#pop!VarFlagsVar" char=")"/> 1215 <DetectChar attribute="Error" context="#pop" char="}"/> 1216 </context> 1217 <context attribute="Variable" lineEndContext="#stay" name="VarFlagsVar" fallthroughContext="#pop!CheckVarAlt"> 1218 <DetectChar context="VarBraceStartRecursive" char="$" lookAhead="1"/> 1219 <DetectChar attribute="Parameter Expansion" context="#pop" char="}"/> 1220 <DetectChar attribute="String DoubleQ" context="StringDQ" char="""/> 1221 <AnyChar attribute="Parameter Expansion Operator" context="#stay" String="#+^=~"/> 1222 <DetectIdentifier attribute="Variable" context="#pop!CheckVarAlt"/> 1223 <AnyChar attribute="Variable" context="#pop!CheckVarAlt" String="*@?$-"/> 1224 <Int attribute="Variable" context="#pop!CheckVarAlt" additionalDeliminator="#~=^+{}[]:-/$"/> 1225 <Detect2Chars context="#pop!VarSubShell" char="!" char1="}" lookAhead="1"/> 1226 <DetectChar attribute="Parameter Expansion Operator" context="#pop!AlternateValue" char="!"/> 1227 </context> 1228 1229 <context attribute="Parameter Expansion" lineEndContext="#stay" name="VarSubShell"> 1230 <DetectChar attribute="Variable" context="#pop!CheckVarAlt" char="!"/> 1231 </context> 1232 1233 <context attribute="Parameter Expansion" lineEndContext="#stay" name="VarFlag_s"> 1234 <DetectChar attribute="Parameter Expansion Operator" context="#pop!VarFlag_s[" char="["/> 1235 <DetectChar attribute="Parameter Expansion Operator" context="#pop!VarFlag_s<" char="<"/> 1236 <DetectChar attribute="Parameter Expansion Operator" context="#pop!VarFlag_s{" char="{"/> 1237 <DetectChar attribute="Parameter Expansion Operator" context="#pop!VarFlag_s(" char="("/> 1238 <RegExpr attribute="Parameter Expansion Operator" context="#pop!VarFlag_sx" String="(.)"/> 1239 </context> 1240 <context attribute="String SingleQ" lineEndContext="#stay" name="VarFlag_s["> 1241 <DetectChar attribute="Parameter Expansion Operator" context="#pop" char="]"/> 1242 </context> 1243 <context attribute="String SingleQ" lineEndContext="#stay" name="VarFlag_s<"> 1244 <DetectChar attribute="Parameter Expansion Operator" context="#pop" char=">"/> 1245 </context> 1246 <context attribute="String SingleQ" lineEndContext="#stay" name="VarFlag_s{"> 1247 <DetectChar attribute="Parameter Expansion Operator" context="#pop" char="}"/> 1248 </context> 1249 <context attribute="String SingleQ" lineEndContext="#stay" name="VarFlag_s("> 1250 <DetectChar attribute="Parameter Expansion Operator" context="#pop" char=")"/> 1251 </context> 1252 <context attribute="String SingleQ" lineEndContext="#stay" name="VarFlag_sx"> 1253 <DetectChar attribute="Parameter Expansion Operator" context="#pop" char="1" dynamic="1"/> 1254 </context> 1255 1256 <context attribute="Normal Text" lineEndContext="#stay" name="VarFlag_l"> 1257 <DetectChar attribute="Parameter Expansion Operator" context="#pop!VarFlag_l[" char="["/> 1258 <DetectChar attribute="Parameter Expansion Operator" context="#pop!VarFlag_l<" char="<"/> 1259 <DetectChar attribute="Parameter Expansion Operator" context="#pop!VarFlag_l{" char="{"/> 1260 <DetectChar attribute="Parameter Expansion Operator" context="#pop!VarFlag_l(" char="("/> 1261 <RegExpr attribute="Parameter Expansion Operator" context="#pop!VarFlag_lx" String="(.)"/> 1262 </context> 1263 <context attribute="Normal Text" lineEndContext="#stay" name="VarFlag_l["> 1264 <Detect2Chars attribute="Parameter Expansion Operator" context="#pop!VarFlag_l[s" char="]" char1="["/> 1265 <DetectChar attribute="Parameter Expansion Operator" context="#pop" char="]"/> 1266 <IncludeRules context="FindExprDblParen"/> 1267 </context> 1268 <context attribute="Normal Text" lineEndContext="#stay" name="VarFlag_l<"> 1269 <Detect2Chars attribute="Parameter Expansion Operator" context="#pop!VarFlag_l<s" char=">" char1="<"/> 1270 <DetectChar attribute="Parameter Expansion Operator" context="#pop" char=">"/> 1271 <IncludeRules context="FindExprDblParen"/> 1272 </context> 1273 <context attribute="Normal Text" lineEndContext="#stay" name="VarFlag_l{"> 1274 <Detect2Chars attribute="Parameter Expansion Operator" context="#pop!VarFlag_l{s" char="}" char1="{"/> 1275 <DetectChar attribute="Parameter Expansion Operator" context="#pop" char="}"/> 1276 <IncludeRules context="FindExprDblParen"/> 1277 </context> 1278 <context attribute="Normal Text" lineEndContext="#stay" name="VarFlag_l("> 1279 <Detect2Chars attribute="Parameter Expansion Operator" context="#pop!VarFlag_l(s" char=")" char1="("/> 1280 <DetectChar attribute="Parameter Expansion Operator" context="#pop" char=")"/> 1281 <IncludeRules context="FindExprDblParen"/> 1282 </context> 1283 <context attribute="Normal Text" lineEndContext="#stay" name="VarFlag_lx"> 1284 <RegExpr attribute="Parameter Expansion Operator" context="#pop!VarFlag_lxs" String="(%1)%1" dynamic="1"/> 1285 <DetectChar attribute="Parameter Expansion Operator" context="#pop" char="1" dynamic="1"/> 1286 <IncludeRules context="FindExprDblParen"/> 1287 </context> 1288 <context attribute="String SingleQ" lineEndContext="#stay" name="VarFlag_l[s"> 1289 <Detect2Chars attribute="Parameter Expansion Operator" context="#stay" char="]" char1="["/> 1290 <DetectChar attribute="Parameter Expansion Operator" context="#pop" char="]"/> 1291 </context> 1292 <context attribute="String SingleQ" lineEndContext="#stay" name="VarFlag_l<s"> 1293 <Detect2Chars attribute="Parameter Expansion Operator" context="#stay" char=">" char1="<"/> 1294 <DetectChar attribute="Parameter Expansion Operator" context="#pop" char=">"/> 1295 </context> 1296 <context attribute="String SingleQ" lineEndContext="#stay" name="VarFlag_l{s"> 1297 <Detect2Chars attribute="Parameter Expansion Operator" context="#stay" char="}" char1="{"/> 1298 <DetectChar attribute="Parameter Expansion Operator" context="#pop" char="}"/> 1299 </context> 1300 <context attribute="String SingleQ" lineEndContext="#stay" name="VarFlag_l(s"> 1301 <Detect2Chars attribute="Parameter Expansion Operator" context="#stay" char=")" char1="("/> 1302 <DetectChar attribute="Parameter Expansion Operator" context="#pop" char=")"/> 1303 </context> 1304 <context attribute="String SingleQ" lineEndContext="#stay" name="VarFlag_lxs"> 1305 <StringDetect attribute="Parameter Expansion Operator" context="#stay" String="%1%1" dynamic="1"/> 1306 <DetectChar attribute="Parameter Expansion Operator" context="#pop" char="1" dynamic="1"/> 1307 </context> 1308 1309 <context attribute="Parameter Expansion" lineEndContext="#stay" name="VarFlag_ps"> 1310 <DetectChar attribute="Parameter Expansion Operator" context="#pop!VarFlag_ps[" char="["/> 1311 <DetectChar attribute="Parameter Expansion Operator" context="#pop!VarFlag_ps<" char="<"/> 1312 <DetectChar attribute="Parameter Expansion Operator" context="#pop!VarFlag_ps{" char="{"/> 1313 <DetectChar attribute="Parameter Expansion Operator" context="#pop!VarFlag_ps(" char="("/> 1314 <RegExpr attribute="Parameter Expansion Operator" context="#pop!VarFlag_psx" String="(.)"/> 1315 </context> 1316 <context attribute="String SingleQ" lineEndContext="#stay" name="VarFlag_ps["> 1317 <DetectChar attribute="Parameter Expansion Operator" context="#pop" char="]"/> 1318 <RegExpr attribute="Variable" context="#stay" String="\$(&varname;|[0-9]+)(?=\])"/> 1319 </context> 1320 <context attribute="String SingleQ" lineEndContext="#stay" name="VarFlag_ps<"> 1321 <DetectChar attribute="Parameter Expansion Operator" context="#pop" char=">"/> 1322 <RegExpr attribute="Variable" context="#stay" String="\$(&varname;|[0-9]+)(?=>)"/> 1323 </context> 1324 <context attribute="String SingleQ" lineEndContext="#stay" name="VarFlag_ps{"> 1325 <DetectChar attribute="Parameter Expansion Operator" context="#pop" char="}"/> 1326 <RegExpr attribute="Variable" context="#stay" String="\$(&varname;|[0-9]+)(?=})"/> 1327 </context> 1328 <context attribute="String SingleQ" lineEndContext="#stay" name="VarFlag_ps("> 1329 <DetectChar attribute="Parameter Expansion Operator" context="#pop" char=")"/> 1330 <RegExpr attribute="Variable" context="#stay" String="\$(&varname;|[0-9]+)(?=\))"/> 1331 </context> 1332 <context attribute="String SingleQ" lineEndContext="#stay" name="VarFlag_psx"> 1333 <DetectChar attribute="Parameter Expansion Operator" context="#pop" char="1" dynamic="1"/> 1334 <RegExpr attribute="Variable" context="#stay" String="\$(?!%1)(?:[A-Za-z_](?:(?!%1)[A-Za-z0-9_])*+|(?:(?!%1)[0-9])++)(?=%1)" dynamic="1"/> 1335 <RegExpr attribute="String SingleQ" context="#stay" String="[^%1]+" dynamic="1"/> 1336 </context> 1337 1338 <context attribute="Normal Text" lineEndContext="#stay" name="VarFlag_pl"> 1339 <DetectChar attribute="Parameter Expansion Operator" context="#pop!VarFlag_pl[" char="["/> 1340 <DetectChar attribute="Parameter Expansion Operator" context="#pop!VarFlag_pl<" char="<"/> 1341 <DetectChar attribute="Parameter Expansion Operator" context="#pop!VarFlag_pl{" char="{"/> 1342 <DetectChar attribute="Parameter Expansion Operator" context="#pop!VarFlag_pl(" char="("/> 1343 <RegExpr attribute="Parameter Expansion Operator" context="#pop!VarFlag_plx" String="(.)"/> 1344 </context> 1345 <context attribute="Normal Text" lineEndContext="#stay" name="VarFlag_pl["> 1346 <Detect2Chars attribute="Parameter Expansion Operator" context="#pop!VarFlag_pl[s" char="]" char1="["/> 1347 <DetectChar attribute="Parameter Expansion Operator" context="#pop" char="]"/> 1348 <IncludeRules context="FindExprDblParen"/> 1349 </context> 1350 <context attribute="Normal Text" lineEndContext="#stay" name="VarFlag_pl<"> 1351 <Detect2Chars attribute="Parameter Expansion Operator" context="#pop!VarFlag_pl<s" char=">" char1="<"/> 1352 <DetectChar attribute="Parameter Expansion Operator" context="#pop" char=">"/> 1353 <IncludeRules context="FindExprDblParen"/> 1354 </context> 1355 <context attribute="Normal Text" lineEndContext="#stay" name="VarFlag_pl{"> 1356 <Detect2Chars attribute="Parameter Expansion Operator" context="#pop!VarFlag_pl{s" char="}" char1="{"/> 1357 <DetectChar attribute="Parameter Expansion Operator" context="#pop" char="}"/> 1358 <IncludeRules context="FindExprDblParen"/> 1359 </context> 1360 <context attribute="Normal Text" lineEndContext="#stay" name="VarFlag_pl("> 1361 <Detect2Chars attribute="Parameter Expansion Operator" context="#pop!VarFlag_pl(s" char=")" char1="("/> 1362 <DetectChar attribute="Parameter Expansion Operator" context="#pop" char=")"/> 1363 <IncludeRules context="FindExprDblParen"/> 1364 </context> 1365 <context attribute="Normal Text" lineEndContext="#stay" name="VarFlag_plx"> 1366 <RegExpr attribute="Parameter Expansion Operator" context="#pop!VarFlag_plxs" String="(%1)%1" dynamic="1"/> 1367 <DetectChar attribute="Parameter Expansion Operator" context="#pop" char="1" dynamic="1"/> 1368 <IncludeRules context="FindExprDblParen"/> 1369 </context> 1370 <context attribute="String SingleQ" lineEndContext="#stay" name="VarFlag_pl[s"> 1371 <Detect2Chars attribute="Parameter Expansion Operator" context="#stay" char="]" char1="["/> 1372 <IncludeRules context="VarFlag_ps["/> 1373 </context> 1374 <context attribute="String SingleQ" lineEndContext="#stay" name="VarFlag_pl<s"> 1375 <Detect2Chars attribute="Parameter Expansion Operator" context="#stay" char=">" char1="<"/> 1376 <IncludeRules context="VarFlag_ps<"/> 1377 </context> 1378 <context attribute="String SingleQ" lineEndContext="#stay" name="VarFlag_pl{s"> 1379 <Detect2Chars attribute="Parameter Expansion Operator" context="#stay" char="}" char1="{"/> 1380 <IncludeRules context="VarFlag_ps{"/> 1381 </context> 1382 <context attribute="String SingleQ" lineEndContext="#stay" name="VarFlag_pl(s"> 1383 <Detect2Chars attribute="Parameter Expansion Operator" context="#stay" char=")" char1="("/> 1384 <IncludeRules context="VarFlag_ps("/> 1385 </context> 1386 <context attribute="String SingleQ" lineEndContext="#stay" name="VarFlag_plxs"> 1387 <StringDetect attribute="Parameter Expansion Operator" context="#stay" String="%1%1" dynamic="1"/> 1388 <IncludeRules context="VarFlag_psx"/> 1389 </context> 1390 1391 <context attribute="Escape" lineEndContext="#pop" name="BraceExpansion"> 1392 <DetectChar attribute="Escape" context="#pop!BraceExpansion2" char="{"/> 1393 </context> 1394 <context attribute="Escape" lineEndContext="#pop" name="BraceExpansion2"> 1395 <DetectChar attribute="Operator" context="#stay" char=","/> 1396 <DetectChar attribute="Escape" context="#pop" char="}"/> 1397 <DetectChar context="EscapeMaybeBraceExpansion" char="{" lookAhead="1"/> 1398 <DetectChar context="AssumeEscape" char="\" lookAhead="1"/> 1399 <DetectChar attribute="Backquote" context="CommandBackq" char="`"/> 1400 <DetectChar context="BraceExpansionVariables" char="$" lookAhead="1"/> 1401 <IncludeRules context="FindStrings"/> 1402 <IncludeRules context="FindPattern"/> 1403 <DetectIdentifier attribute="Escape"/> 1404 </context> 1405 <context attribute="Escape" lineEndContext="#pop" name="EscapeMaybeBraceExpansion"> 1406 <IncludeRules context="DispatchBraceExpansion"/> 1407 <DetectChar attribute="Escape" context="#pop!BraceExpansion2" char="{"/> 1408 </context> 1409 <context attribute="Escape" lineEndContext="#pop" name="BraceExpansionVariables"> 1410 <IncludeRules context="DispatchVariables"/> 1411 <DetectChar attribute="Escape" context="#pop" char="$"/> 1412 </context> 1413 1414 <context attribute="Escape" lineEndContext="#pop" name="PathBraceExpansion"> 1415 <DetectChar attribute="Escape" context="#pop!PathBraceExpansion2" char="{"/> 1416 </context> 1417 <context attribute="Path" lineEndContext="#pop" name="PathBraceExpansion2"> 1418 <DetectChar attribute="Operator" context="#stay" char=","/> 1419 <DetectChar attribute="Escape" context="#pop" char="}"/> 1420 <DetectChar context="PathMaybeBraceExpansion" char="{" lookAhead="1"/> 1421 <IncludeRules context="FindWord"/> 1422 <IncludeRules context="FindPattern"/> 1423 <DetectIdentifier attribute="Path"/> 1424 </context> 1425 1426 <context attribute="Normal Text" lineEndContext="#pop" name="SequenceExpression"> 1427 <AnyChar attribute="Number" context="#stay" String="0123456789-"/> 1428 <IncludeRules context="FindWord"/> 1429 <Detect2Chars attribute="Escape" context="#stay" char="." char1="."/> 1430 <DetectChar attribute="Escape" context="#pop" char="}"/> 1431 </context> 1432 1433 <!-- ====== These are the contexts that can be branched to ======= --> 1434 1435 <context attribute="Normal Text" lineEndContext="#stay" name="ExprDblParenOrSubShell"> 1436 <RegExpr attribute="Keyword" context="#pop!SubShell" String="\((?=&arithmetic_as_subshell;)|" beginRegion="subshell"/> 1437 <Detect2Chars attribute="Keyword" context="#pop!ExprDblParen" char="(" char1="(" beginRegion="expression"/> 1438 </context> 1439 <!-- ExprDblParen consumes an expression started in command mode till )) --> 1440 <context attribute="Normal Text" lineEndContext="#stay" name="ExprDblParen"> 1441 <DetectSpaces attribute="Normal Text" context="#stay"/> 1442 <Detect2Chars attribute="Keyword" context="#pop" char=")" char1=")" endRegion="expression"/> 1443 <IncludeRules context="FindExprDblParen"/> 1444 <!-- ((cmd 1445 ) # jump to SubShell context --> 1446 <DetectChar attribute="Keyword" context="#pop!SubShell" char=")" endRegion="expression" beginRegion="subshell"/> 1447 </context> 1448 <context attribute="Normal Text" lineEndContext="#stay" name="FindExprDblParen"> 1449 <Detect2Chars attribute="Control" context="#stay" char="&" char1="&"/> 1450 <Detect2Chars attribute="Control" context="#stay" char="|" char1="|"/> 1451 <AnyChar attribute="Operator" context="#stay" String="+-!~*/%<>=&^|?:"/> 1452 <DetectChar attribute="Control" context="#stay" char=","/> 1453 <DetectChar attribute="Normal Text" context="ExprSubDblParen" char="("/> 1454 <AnyChar context="Number" String="0123456789." lookAhead="1"/> 1455 <DetectChar attribute="Parameter Expansion Operator" context="Subscript" char="["/> 1456 <IncludeRules context="FindWord"/> 1457 <DetectChar context="MaybeArithmeticBrace" char="{" lookAhead="1"/> 1458 <Detect2Chars attribute="BaseN" context="NoPrefix" char="#" char1="#"/> 1459 <DetectChar attribute="Error" context="#stay" char="#"/> 1460 <DetectIdentifier attribute="Variable" context="#stay"/> 1461 </context> 1462 <context attribute="Normal Text" lineEndContext="#stay" name="ExprSubDblParen"> 1463 <DetectSpaces attribute="Normal Text" context="#stay"/> 1464 <DetectChar attribute="Normal Text" context="#pop" char=")"/> 1465 <IncludeRules context="FindExprDblParen"/> 1466 </context> 1467 <context attribute="Error" lineEndContext="#pop" name="MaybeArithmeticBrace"> 1468 <IncludeRules context="DispatchBraceExpansion"/> 1469 <DetectChar attribute="Error" context="#pop" char="{"/> 1470 </context> 1471 <context attribute="Normal Text" lineEndContext="#pop" name="NoPrefix" fallthroughContext="#pop"> 1472 <DetectChar context="AssumeEscape" char="\"/> 1473 <RegExpr attribute="Number" context="#pop" String="[^][()]"/> 1474 </context> 1475 1476 <context attribute="Number" lineEndContext="#pop" name="Number"> 1477 <Detect2Chars attribute="Hex" context="#pop!Hex" char="0" char1="x"/> 1478 <Detect2Chars attribute="Hex" context="#pop!Hex" char="0" char1="X"/> 1479 <RegExpr attribute="Base" context="#pop!BaseN" String="[1-9][0-9_]*+#"/> 1480 <RegExpr attribute="Number" context="#pop" String="∫(\.(∫&exp;?+|&exp;)?|&exp;)?|\.∫&exp;?"/> 1481 <DetectChar attribute="Operator" context="#pop" char="."/> 1482 </context> 1483 <context attribute="Hex" lineEndContext="#pop" name="Hex" fallthroughContext="#pop"> 1484 <RegExpr attribute="Hex" context="#pop" String="[0-9a-fA-F_]+"/> 1485 </context> 1486 <context attribute="BaseN" lineEndContext="#pop" name="BaseN" fallthroughContext="#pop"> 1487 <RegExpr attribute="BaseN" context="#pop" String="[0-9a-zA-Z@_]+"/> 1488 </context> 1489 1490 <context attribute="Normal Text" lineEndContext="#stay" name="ExprDblParenSubstOrSubstCommand"> 1491 <RegExpr attribute="Parameter Expansion" context="#pop!SubstCommand" String="\$\((?=&arithmetic_as_subshell;)|" beginRegion="subshell"/> 1492 <StringDetect attribute="Parameter Expansion" context="#pop!ExprDblParenSubst" String="$((" beginRegion="expression"/> 1493 </context> 1494 <!-- ExprDblParenSubst like ExprDblParen but matches )) as Variable --> 1495 <context attribute="Normal Text" lineEndContext="#stay" name="ExprDblParenSubst"> 1496 <DetectSpaces attribute="Normal Text" context="#stay"/> 1497 <Detect2Chars attribute="Parameter Expansion" context="#pop" char=")" char1=")" endRegion="expression"/> 1498 <IncludeRules context="FindExprDblParen"/> 1499 <!-- $((cmd 1500 ) # jump to SubstCommand context --> 1501 <DetectChar attribute="Parameter Expansion" context="#pop!SubstCommand" char=")" endRegion="expression" beginRegion="subshell"/> 1502 </context> 1503 1504 <!-- ExprBracket consumes an expression till ] --> 1505 <context attribute="Normal Text" lineEndContext="#stay" name="ExprBracket" fallthroughContext="#pop!ExprBracketNot"> 1506 <DetectSpaces attribute="Normal Text" context="#stay"/> 1507 <IncludeRules context="FindExprBracketEnd"/> 1508 </context> 1509 1510 <context attribute="Normal Text" lineEndContext="#stay" name="ExprBracketNot" fallthroughContext="#pop!ExprBracketParam1"> 1511 <DetectSpaces attribute="Normal Text" context="#pop!ExprBracketParam1"/> 1512 <Detect2Chars attribute="Expression" context="ExprBracketTestMaybeNot" char="!" char1=" " lookAhead="1"/> 1513 <Detect2Chars attribute="Expression" context="ExprBracketTestMaybeNot" char="!" char1="&tab;" lookAhead="1"/> 1514 </context> 1515 <context attribute="Normal Text" lineEndContext="#pop" name="ExprBracketTestMaybeNot"> 1516 <DetectChar attribute="Expression" context="#pop" char="!"/> 1517 </context> 1518 1519 <context attribute="Normal Text" lineEndContext="#stay" name="ExprBracketParam1" fallthroughContext="ExprBracketValue"> 1520 <DetectSpaces attribute="Normal Text" context="#pop!ExprBracketParam2"/> 1521 <DetectChar context="TestMaybeUnary" char="-" lookAhead="1"/> 1522 <IncludeRules context="FindExprBracketEnd"/> 1523 </context> 1524 1525 <context attribute="Normal Text" lineEndContext="#pop" name="ExprBracketValue"> 1526 <AnyChar context="#pop" String=" &tab;" lookAhead="1"/> 1527 <AnyChar attribute="Error" context="#stay" String="&symbolseps;"/> 1528 <IncludeRules context="FindWord"/> 1529 <IncludeRules context="FindGlobAny"/> 1530 <IncludeRules context="FindPathThenPop"/> 1531 <DetectChar context="ExprBracketValueMaybeBraceExpansion" char="{" lookAhead="1"/> 1532 <DetectChar context="NormalOptionMaybeGroupEnd" char="}" lookAhead="1"/> 1533 <DetectIdentifier attribute="Normal Text"/> 1534 </context> 1535 <context attribute="Normal Text" lineEndContext="#pop" name="ExprBracketValueRecBrace"> 1536 <AnyChar context="#pop#pop" String=" &tab;" lookAhead="1"/> 1537 <AnyChar attribute="Error" context="#stay" String="&symbolseps;"/> 1538 <IncludeRules context="FindWord"/> 1539 <IncludeRules context="FindGlobAny"/> 1540 <DetectChar context="ExprBracketValueMaybeBraceExpansion" char="{" lookAhead="1"/> 1541 <DetectChar attribute="Normal Text" context="#pop" char="}"/> 1542 <DetectIdentifier attribute="Normal Text"/> 1543 </context> 1544 <context attribute="Normal Text" lineEndContext="#pop" name="ExprBracketValueMaybeBraceExpansion"> 1545 <IncludeRules context="DispatchBraceExpansion"/> 1546 <DetectChar attribute="Normal Text" context="#pop!ExprBracketValueRecBrace" char="{"/> 1547 </context> 1548 1549 <context attribute="Normal Text" lineEndContext="#stay" name="ExprBracketParam2" fallthroughContext="ExprBracketValue"> 1550 <DetectSpaces attribute="Normal Text" context="#pop!ExprBracketParam3"/> 1551 <AnyChar context="TestMaybeBinary" String="-=!" lookAhead="1"/> 1552 <IncludeRules context="FindExprBracketEnd"/> 1553 </context> 1554 1555 <context attribute="Normal Text" lineEndContext="ExprBracketFinal" name="ExprBracketParam3" fallthroughContext="ExprBracketValue"> 1556 <DetectSpaces attribute="Normal Text" context="#pop!ExprBracketFinal"/> 1557 <IncludeRules context="FindExprBracketEnd"/> 1558 </context> 1559 1560 <context attribute="Normal Text" lineEndContext="#stay" name="ExprBracketFinal" fallthroughContext="ExprBracketValue"> 1561 <DetectSpaces attribute="Normal Text" context="#stay"/> 1562 <IncludeRules context="FindExprBracketEnd"/> 1563 <RegExpr attribute="Expression" context="#pop!ExprBracket" String="-[ao]&eos;"/> 1564 <RegExpr attribute="Error" context="#pop" String="(?:[^] &tab;]++|\][^ &tab;])++" endRegion="expression"/> 1565 </context> 1566 1567 <context attribute="Normal Text" lineEndContext="#stay" name="FindExprBracketEnd"> 1568 <DetectChar context="AssumeEscape" char="\" lookAhead="1"/> 1569 <RegExpr attribute="Builtin" context="#pop" String="\](?=($|[ &tab;;|&<>)]))" endRegion="expression"/> 1570 </context> 1571 1572 <context attribute="Normal Text" lineEndContext="#pop" name="TestMaybeUnary" fallthroughContext="#pop!ExprBracketValue"> 1573 <RegExpr attribute="Expression" context="#pop#pop!ExprBracketParam2" String="&unary_operators;"/> 1574 </context> 1575 <context attribute="Normal Text" lineEndContext="#pop" name="TestMaybeBinary" fallthroughContext="#pop!ExprBracketValue"> 1576 <RegExpr attribute="Expression" context="#pop" String="&binary_operators;"/> 1577 </context> 1578 1579 1580 <!-- ExprDblBracket consumes an expression till ]] --> 1581 <context attribute="Normal Text" lineEndContext="#stay" name="ExprDblBracket" fallthroughContext="#pop!ExprDblBracketNot"> 1582 <DetectSpaces attribute="Normal Text" context="#stay"/> 1583 <IncludeRules context="FindExprDblBracketEnd"/> 1584 <DetectChar attribute="Comment" context="Comment" char="#"/> 1585 </context> 1586 1587 <context attribute="Normal Text" lineEndContext="#stay" name="ExprDblBracketNot" fallthroughContext="#pop!ExprDblBracketParam1"> 1588 <DetectChar context="ExprDblBracketTestMaybeNot" char="!" lookAhead="1"/> 1589 <DetectSpaces attribute="Normal Text" context="#stay"/> 1590 <DetectChar attribute="Comment" context="Comment" char="#"/> 1591 </context> 1592 <context attribute="Normal Text" lineEndContext="#pop" name="ExprDblBracketTestMaybeNot" fallthroughContext="#pop#pop!ExprDblBracketParam1"> 1593 <RegExpr attribute="Expression" context="#pop" String="!(?=$|[ &tab;(])"/> 1594 </context> 1595 1596 <context attribute="Normal Text" lineEndContext="#stay" name="ExprDblBracketParam1" fallthroughContext="#pop!ExprDblBracketParam1_2"> 1597 <DetectSpaces attribute="Normal Text" context="#stay"/> 1598 </context> 1599 <context attribute="Normal Text" lineEndContext="#stay" name="ExprDblBracketParam1_2" fallthroughContext="ExprDblBracketValueText"> 1600 <DetectSpaces attribute="Normal Text" context="#pop!ExprDblBracketParam2"/> 1601 <DetectChar context="TestMaybeUnary2" char="-" lookAhead="1"/> 1602 <DetectChar context="ExprDblBracketSubValue" char="(" lookAhead="1"/> 1603 <IncludeRules context="FindExprDblBracketEnd"/> 1604 </context> 1605 <context attribute="Normal Text" lineEndContext="#pop" name="TestMaybeUnary2" fallthroughContext="#pop!ExprDblBracketValueText"> 1606 <RegExpr attribute="Expression" context="#pop!ExprDblBracketUnary" String="&unary_operators;(?!\s+(?:=~|&binary_operators;))"/> 1607 </context> 1608 <context attribute="Normal Text" lineEndContext="#stay" name="ExprDblBracketUnary" fallthroughContext="#pop!ExprDblBracketValueText"> 1609 <DetectSpaces attribute="Normal Text"/> 1610 <DetectChar attribute="Comment" context="Comment" char="#"/> 1611 </context> 1612 <context attribute="Normal Text" lineEndContext="#pop" name="ExprDblBracketSubValue" fallthroughContext="#pop"> 1613 <DetectChar attribute="Operator" context="ExprDblBracketNot" char="("/> 1614 <DetectChar attribute="Operator" context="#pop" char=")"/> 1615 </context> 1616 1617 <context attribute="Normal Text" lineEndContext="#pop" name="ExprDblBracketValueText" fallthroughContext="#pop!ExprDblBracketValueText2"> 1618 <Detect2Chars context="#pop!ExprDblBracketValueTextMaybeEnd" char="]" char1="]" lookAhead="1"/> 1619 <IncludeRules context="FindExprDblBracketValueTextPath"/> 1620 </context> 1621 <context attribute="Normal Text" lineEndContext="#pop" name="FindExprDblBracketValueTextPath"> 1622 <RegExpr context="#pop!ExprDblBracketValueTextPath" String="&path_with_sep;|" lookAhead="1"/> 1623 </context> 1624 <context attribute="Normal Text" lineEndContext="#pop" name="ExprDblBracketValueTextMaybeEnd"> 1625 <RegExpr attribute="Keyword" context="#pop#pop" String="&dblbracket_close;" endRegion="expression"/> 1626 <IncludeRules context="FindExprDblBracketValueTextPath"/> 1627 <Detect2Chars context="#pop!ExprDblBracketValueText2" char="]" char1="]" lookAhead="1"/> 1628 </context> 1629 <context attribute="Normal Text" lineEndContext="#pop" name="ExprDblBracketValueText2"> 1630 <DetectIdentifier/> 1631 <AnyChar String="*?+@~^:%+-/,"/> 1632 <Detect2Chars attribute="Control" context="#pop#pop!ExprDblBracket" char="&" char1="&"/> 1633 <Detect2Chars attribute="Control" context="#pop#pop!ExprDblBracket" char="|" char1="|"/> 1634 <AnyChar context="#pop" String=" &tab;)" lookAhead="1"/> 1635 <IncludeRules context="FindWord"/> 1636 <IncludeRules context="FindGroupPattern"/> 1637 <AnyChar attribute="Error" context="#stay" String="&;|"/> 1638 <DetectChar context="ExprDblBracketValueTextMaybeRange" char="<" lookAhead="1"/> 1639 <DetectChar attribute="Expression" context="#pop!ExprDblBracketValuePattern" char=">"/> 1640 </context> 1641 <context attribute="Path" lineEndContext="#pop" name="ExprDblBracketValueTextPath"> 1642 <IncludeRules context="ExprDblBracketValueText2"/> 1643 </context> 1644 <context attribute="Normal Text" lineEndContext="#pop" name="ExprDblBracketValueTextMaybeRange"> 1645 <RegExpr context="#pop" String="&globrange;"/> 1646 <DetectChar attribute="Expression" context="#pop#pop!ExprDblBracketValuePattern" char="<"/> 1647 </context> 1648 1649 <context attribute="Normal Text" lineEndContext="#pop" name="ExprDblBracketValuePattern" fallthroughContext="#pop!ExprDblBracketValuePattern2"> 1650 <RegExpr context="ExprDblBracketValuePatternPath" String="&path_with_sep;|" lookAhead="1"/> 1651 </context> 1652 <context attribute="Normal Text" lineEndContext="#pop" name="ExprDblBracketValuePatternPath" fallthroughContext="#pop!PathThenPop"> 1653 <DetectChar attribute="Path" context="#pop!PathThenPop" char="~"/> 1654 </context> 1655 <context attribute="Normal Text" lineEndContext="#pop" name="ExprDblBracketValuePattern2"> 1656 <DetectIdentifier attribute="Normal Text"/> 1657 <Detect2Chars attribute="Control" context="#pop#pop!ExprDblBracket" char="&" char1="&"/> 1658 <Detect2Chars attribute="Control" context="#pop#pop!ExprDblBracket" char="|" char1="|"/> 1659 <AnyChar context="#pop" String=" &tab;)" lookAhead="1"/> 1660 <IncludeRules context="FindWord"/> 1661 <IncludeRules context="FindSingleGlob"/> 1662 <IncludeRules context="FindGlobAny"/> 1663 <IncludeRules context="FindGroupPattern"/> 1664 <DetectChar context="ExprDblBracketValueMaybeGlobRange" char="<" lookAhead="1"/> 1665 <AnyChar attribute="Error" context="#stay" String=">&|;"/> 1666 </context> 1667 <context attribute="Normal Text" lineEndContext="#stay" name="ExprDblBracketValueMaybeGlobRange"> 1668 <IncludeRules context="FindGlobRangeThenPop"/> 1669 <DetectChar attribute="Error" context="#pop" char="<"/> 1670 </context> 1671 1672 <context attribute="Normal Text" lineEndContext="#stay" name="ExprDblBracketParam2" fallthroughContext="#pop!ExprDblBracketParam2_2"> 1673 <DetectSpaces attribute="Normal Text" context="#stay"/> 1674 <DetectChar attribute="Comment" context="Comment" char="#"/> 1675 </context> 1676 <context attribute="Normal Text" lineEndContext="#stay" name="ExprDblBracketParam2_2" fallthroughContext="ExprDblBracketValuePattern"> 1677 <DetectSpaces attribute="Normal Text" context="#pop!ExprDblBracketParam3"/> 1678 <AnyChar context="TestMaybeBinary2" String="-=!" lookAhead="1"/> 1679 <AnyChar attribute="Expression" context="#pop!ExprDblBracketParam3Spe" String="<>"/> 1680 <IncludeRules context="FindExprDblBracketEnd"/> 1681 </context> 1682 <context attribute="Normal Text" lineEndContext="#pop" name="TestMaybeBinary2" fallthroughContext="#pop!ExprDblBracketValuePattern"> 1683 <IncludeRules context="TestMaybeBinary"/> 1684 <RegExpr attribute="Expression" context="#pop#pop!ExprDblBracketRegex" String="=~&eos;"/> 1685 </context> 1686 1687 <context attribute="Normal Text" lineEndContext="#stay" name="ExprDblBracketParam3Spe" fallthroughContext="#pop!ExprDblBracketParam3"> 1688 <DetectSpaces attribute="Normal Text" context="#pop!ExprDblBracketParam3"/> 1689 </context> 1690 1691 <context attribute="Normal Text" lineEndContext="#stay" name="ExprDblBracketParam3" fallthroughContext="#pop!ExprDblBracketParam3_2"> 1692 <DetectSpaces attribute="Normal Text" context="#stay"/> 1693 <DetectChar attribute="Comment" context="Comment" char="#"/> 1694 </context> 1695 <context attribute="Normal Text" lineEndContext="#pop!ExprDblBracketFinal" name="ExprDblBracketParam3_2" fallthroughContext="ExprDblBracketValuePattern"> 1696 <DetectSpaces attribute="Normal Text" context="#pop!ExprDblBracketFinal"/> 1697 <IncludeRules context="FindExprDblBracketEnd"/> 1698 </context> 1699 1700 <context attribute="Normal Text" lineEndContext="#stay" name="ExprDblBracketFinal" fallthroughContext="ExprDblBracketValuePattern"> 1701 <DetectSpaces attribute="Normal Text" context="#stay"/> 1702 <IncludeRules context="FindExprDblBracketEnd"/> 1703 <DetectChar attribute="Comment" context="Comment" char="#"/> 1704 <RegExpr attribute="Error" context="#pop" String="(?:[^] &tab;]++|\](?:[^]]|\][^ &tab;]))++" endRegion="expression"/> 1705 </context> 1706 1707 <context attribute="Normal Text" lineEndContext="#stay" name="FindExprDblBracketEnd"> 1708 <DetectChar context="AssumeEscape" char="\" lookAhead="1"/> 1709 <DetectChar context="#pop" char=")" lookAhead="1"/> 1710 <Detect2Chars attribute="Control" context="#pop!ExprDblBracket" char="&" char1="&"/> 1711 <Detect2Chars attribute="Control" context="#pop!ExprDblBracket" char="|" char1="|"/> 1712 <RegExpr attribute="Keyword" context="#pop" String="&dblbracket_close;" endRegion="expression"/> 1713 </context> 1714 1715 <context attribute="Normal Text" lineEndContext="#stay" name="ExprDblBracketRegex" fallthroughContext="#pop!Regex"> 1716 <DetectSpaces attribute="Normal Text" context="#stay"/> 1717 <DetectChar attribute="Comment" context="Comment" char="#"/> 1718 </context> 1719 <context attribute="Pattern" lineEndContext="#stay" name="Regex"> 1720 <DetectIdentifier attribute="Pattern"/> 1721 <DetectSpaces attribute="Normal Text" context="#pop!ExprDblBracketFinal"/> 1722 <DetectChar attribute="Operator" context="#pop" char=")"/> 1723 <Detect2Chars attribute="Operator" context="RegexChar" char="[" char1="^"/> 1724 <DetectChar attribute="Operator" context="RegexChar" char="["/> 1725 <IncludeRules context="FindRegex"/> 1726 </context> 1727 <context attribute="Pattern" lineEndContext="#stay" name="ExprDblBracketSubRegex"> 1728 <DetectIdentifier attribute="Pattern"/> 1729 <DetectSpaces attribute="Pattern" context="#stay"/> 1730 <DetectChar attribute="Operator" context="#pop" char=")"/> 1731 <Detect2Chars attribute="Operator" context="RegexSubChar" char="[" char1="^"/> 1732 <DetectChar attribute="Operator" context="RegexSubChar" char="["/> 1733 <IncludeRules context="FindRegex"/> 1734 </context> 1735 1736 <context attribute="Pattern" lineEndContext="#stay" name="FindRegex"> 1737 <DetectChar attribute="Operator" context="ExprDblBracketSubRegex" char="("/> 1738 <DetectChar attribute="Escape" context="RegexEscape" char="\"/> 1739 <DetectChar attribute="Parameter Expansion" context="RegexDup" char="{"/> 1740 <AnyChar attribute="Glob" context="#stay" String="^?+*.|"/> 1741 <IncludeRules context="FindStrings"/> 1742 <DetectChar context="RegexDispatchVariables" char="$" lookAhead="1"/> 1743 <DetectChar attribute="Backquote" context="RegularBackq" char="`"/> 1744 </context> 1745 <context attribute="Normal Text" lineEndContext="#stay" name="RegexDispatchVariables"> 1746 <IncludeRules context="DispatchVariables"/> 1747 <DetectChar attribute="Operator" context="#pop" char="$"/> 1748 </context> 1749 1750 <context attribute="Normal Text" lineEndContext="#pop" name="RegexEscape"> 1751 <RegExpr attribute="Escape" context="#pop" String="x[0-9a-fA-F]{1,2}|[0-7]{1,3}|."/> 1752 </context> 1753 1754 <context attribute="Normal Text" lineEndContext="#pop" name="RegexDup"> 1755 <Int attribute="Number"/> 1756 <DetectChar attribute="Parameter Expansion Operator" context="#stay" char=","/> 1757 <DetectChar attribute="Parameter Expansion" context="#pop" char="}"/> 1758 </context> 1759 1760 <context attribute="Pattern" lineEndContext="#pop" name="RegexSubChar" fallthroughContext="#pop!RegexSubInChar"> 1761 <AnyChar attribute="Pattern" context="#pop!RegexSubInChar" String="-]"/> 1762 </context> 1763 <context attribute="Pattern" lineEndContext="#pop" name="RegexSubInChar"> 1764 <DetectSpaces attribute="Pattern" context="#stay"/> 1765 <IncludeRules context="RegexInChar"/> 1766 </context> 1767 1768 <context attribute="Pattern" lineEndContext="#pop" name="RegexChar" fallthroughContext="#pop!RegexInChar"> 1769 <AnyChar attribute="Pattern" context="#pop!RegexInChar" String="-]"/> 1770 </context> 1771 <context attribute="Pattern" lineEndContext="#pop" name="RegexInChar"> 1772 <Detect2Chars context="RegexInCharEnd" char="-" char1="]" lookAhead="1"/> 1773 <DetectChar attribute="Operator" context="#stay" char="-"/> 1774 <DetectChar attribute="Escape" context="RegexEscape" char="\"/> 1775 <DetectChar context="RegexCharClassSelect" char="[" lookAhead="1"/> 1776 <DetectChar attribute="Operator" context="#pop" char="]"/> 1777 <AnyChar context="#pop" String="() &tab;" lookAhead="1"/> 1778 <IncludeRules context="FindStrings"/> 1779 </context> 1780 <context attribute="Operator" lineEndContext="#stay" name="RegexInCharEnd"> 1781 <DetectChar attribute="Pattern" context="#stay" char="-"/> 1782 <DetectChar attribute="Operator" context="#pop#pop" char="]"/> 1783 </context> 1784 <context attribute="Parameter Expansion" lineEndContext="#pop#pop#pop" name="RegexCharClassSelect"> 1785 <Detect2Chars attribute="Parameter Expansion Operator" context="#pop!RegexCharClass" char="[" char1=":"/> 1786 <Detect2Chars attribute="Parameter Expansion Operator" context="#pop!RegexCollatingSymbols" char="[" char1="."/> 1787 <Detect2Chars attribute="Parameter Expansion Operator" context="#pop!RegexEquivalenceClass" char="[" char1="="/> 1788 <DetectChar attribute="Pattern" context="#pop" char="["/> 1789 </context> 1790 1791 <context attribute="Parameter Expansion" lineEndContext="#pop#pop#pop" name="RegexCharClass"> 1792 <DetectIdentifier attribute="Parameter Expansion"/> 1793 <Detect2Chars attribute="Parameter Expansion Operator" context="#pop" char=":" char1="]"/> 1794 <DetectChar attribute="Error" context="#pop" char="]"/> 1795 </context> 1796 <context attribute="Parameter Expansion" lineEndContext="#pop#pop#pop" name="RegexCollatingSymbols"> 1797 <DetectIdentifier attribute="Parameter Expansion"/> 1798 <Detect2Chars attribute="Parameter Expansion Operator" context="#pop" char="." char1="]"/> 1799 <DetectChar attribute="Error" context="#pop" char="]"/> 1800 </context> 1801 <context attribute="Parameter Expansion" lineEndContext="#pop#pop#pop" name="RegexEquivalenceClass"> 1802 <DetectIdentifier attribute="Parameter Expansion"/> 1803 <Detect2Chars attribute="Parameter Expansion Operator" context="#pop" char="=" char1="]"/> 1804 <DetectChar attribute="Error" context="#pop" char="]"/> 1805 </context> 1806 1807 <!-- SubShell consumes shell input till ) --> 1808 <context attribute="Normal Text" lineEndContext="#stay" name="SubShell" fallthroughContext="Command"> 1809 <DetectChar attribute="Keyword" context="#pop" char=")" endRegion="subshell"/> 1810 <IncludeRules context="Start"/> 1811 </context> 1812 1813 <!-- Assign consumes an expression till EOL or whitespace --> 1814 <context attribute="Normal Text" lineEndContext="#pop" name="Assign" fallthroughContext="#pop!RegularAssign"> 1815 <DetectChar attribute="Variable" context="#pop!AssignArray" char="("/> 1816 </context> 1817 <context attribute="Normal Text" lineEndContext="#pop" name="RegularAssign" fallthroughContext="#pop"> 1818 <DetectChar attribute="Backquote" context="RegularBackq" char="`"/> 1819 <IncludeRules context="NormalOption"/> 1820 </context> 1821 1822 <!-- AssignArray consumes everything till ), marking assignments --> 1823 <context attribute="Normal Text" lineEndContext="#stay" name="AssignArray" fallthroughContext="NormalOption"> 1824 <DetectSpaces attribute="Normal Text" context="#stay"/> 1825 <DetectChar attribute="Comment" context="Comment" char="#"/> 1826 <DetectChar attribute="Variable" context="#pop" char=")"/> 1827 <DetectChar context="AssignArrayKey" char="[" lookAhead="1"/> 1828 <DetectChar attribute="Backquote" context="AssignArrayBackq" char="`"/> 1829 <AnyChar attribute="Error" context="#stay" String="&symbolseps;"/> 1830 </context> 1831 <context attribute="Normal Text" lineEndContext="#pop" name="AssignArrayKey" fallthroughContext="#pop"> 1832 <DetectChar attribute="Parameter Expansion Operator" context="Subscript" char="["/> 1833 <DetectChar attribute="Variable" context="#pop" char="="/> 1834 </context> 1835 <context attribute="Normal Text" lineEndContext="#stay" name="AssignArrayBackq" fallthroughContext="Command"> 1836 <DetectChar attribute="Backquote" context="#pop!NormalOption" char="`"/> 1837 <DetectChar attribute="Comment" context="CommentBackq" char="#"/> 1838 <IncludeRules context="Start"/> 1839 </context> 1840 1841 <!-- Subscript consumes anything till ], marks as Variable --> 1842 <context attribute="Normal Text" lineEndContext="#stay" name="Subscript" fallthroughContext="Subscript2"> 1843 <DetectChar attribute="Parameter Expansion Operator" context="#pop" char="]"/> 1844 <AnyChar attribute="Number" context="#stay" String="0123456789-"/> 1845 </context> 1846 <context attribute="Normal Text" lineEndContext="#stay" name="Subscript2"> 1847 <DetectIdentifier attribute="Normal Text"/> 1848 <DetectChar attribute="Parameter Expansion Operator" context="#pop#pop" char="]"/> 1849 <DetectChar attribute="Parameter Expansion Operator" context="#pop" char=","/> 1850 <IncludeRules context="FindGroupPattern"/> 1851 <IncludeRules context="FindStrings"/> 1852 <DetectChar context="VariableOrSubscriptPos" char="$" lookAhead="1"/> 1853 <DetectChar attribute="Backquote" context="RegularBackq" char="`"/> 1854 <DetectChar context="AssumeEscape" char="\" lookAhead="1"/> 1855 <AnyChar attribute="Operator" context="#pop" String="@+-!~*/%<>=&^|?:"/> 1856 </context> 1857 <context attribute="Normal Text" lineEndContext="#pop" name="VariableOrSubscriptPos"> 1858 <IncludeRules context="DispatchVariables"/> 1859 <DetectChar attribute="Number" context="#pop" char="$"/> 1860 </context> 1861 1862 <!-- FunctionDef consumes a name, possibly with (), marks as Function --> 1863 <context attribute="Function" lineEndContext="#pop" name="FunctionDef" fallthroughContext="#pop"> 1864 <Detect2Chars attribute="Operator" context="#pop" char="(" char1=")"/> 1865 <DetectSpaces attribute="Normal Text" context="FunctionNameStart"/> 1866 </context> 1867 <context attribute="Function" lineEndContext="#pop" name="FunctionNameStart" fallthroughContext="#pop!FunctionName"> 1868 <AnyChar context="#pop#pop" String="&symbolseps;#" lookAhead="1"/> 1869 <DetectChar context="FunctionNameStartMaybeBraceExpansion" char="{" lookAhead="1"/> 1870 </context> 1871 <context attribute="Function" lineEndContext="#pop" name="FunctionName"> 1872 <AnyChar context="#pop" String=" &tab;(" lookAhead="1"/> 1873 <IncludeRules context="FindWord"/> 1874 <DetectChar context="FunctionNameMaybeBraceExpansion" char="{" lookAhead="1"/> 1875 <DetectChar context="NormalOptionMaybeGroupEnd" char="}" lookAhead="1"/> 1876 <DetectIdentifier attribute="Function"/> 1877 </context> 1878 <context attribute="Function" lineEndContext="#pop" name="FunctionNameRecBrace" fallthroughContext="#pop"> 1879 <IncludeRules context="FindWord"/> 1880 <DetectChar context="FunctionNameMaybeBraceExpansion" char="{" lookAhead="1"/> 1881 <DetectChar attribute="Function" context="#pop" char="}"/> 1882 <DetectIdentifier attribute="Function"/> 1883 </context> 1884 <context attribute="Function" lineEndContext="#pop" name="FunctionNameStartMaybeBraceExpansion"> 1885 <IncludeRules context="DispatchBraceExpansion"/> 1886 <DetectChar attribute="Keyword" context="#pop#pop#pop!Group" char="{" beginRegion="group"/> 1887 </context> 1888 <context attribute="Function" lineEndContext="#pop" name="FunctionNameMaybeBraceExpansion"> 1889 <IncludeRules context="DispatchBraceExpansion"/> 1890 <DetectChar attribute="Function" context="#pop!FunctionNameRecBrace" char="{" beginRegion="group"/> 1891 </context> 1892 1893 <!-- Case is called after the case keyword is encoutered. We handle this because of 1894 the lonely closing parentheses that would otherwise disturb the expr matching --> 1895 <context attribute="Normal Text" lineEndContext="#stay" name="Case"> 1896 <DetectSpaces attribute="Normal Text" context="#stay"/> 1897 <DetectChar attribute="Keyword" context="#pop!CaseAlt" char="{"/> 1898 <WordDetect attribute="Keyword" context="#pop!CaseIn" String="in"/> 1899 <IncludeRules context="FindWord"/> 1900 <DetectIdentifier attribute="Normal Text" context="#stay"/> 1901 </context> 1902 1903 <!-- CaseIn is called when the construct 'case ... in' has been found. --> 1904 <context attribute="Normal Text" lineEndContext="#stay" name="CaseIn" fallthroughContext="CasePattern"> 1905 <DetectSpaces attribute="Normal Text" context="#stay"/> 1906 <DetectChar attribute="Keyword" context="CaseClosedPattern" char="("/> 1907 <DetectChar attribute="Comment" context="Comment" char="#"/> 1908 </context> 1909 <context attribute="Pattern" lineEndContext="#stay" name="CasePattern"> 1910 <WordDetect attribute="Control Flow" context="#pop#pop" String="esac" endRegion="case"/> 1911 <IncludeRules context="CaseClosedPattern"/> 1912 </context> 1913 <context attribute="Pattern" lineEndContext="#stay" name="CaseClosedPattern"> 1914 <DetectSpaces attribute="Normal Text" context="#stay"/> 1915 <DetectChar attribute="Keyword" context="#pop!CaseExpr" char=")" beginRegion="caseexpr"/> 1916 <DetectChar context="AssumeEscape" char="\" lookAhead="1"/> 1917 <DetectChar attribute="Keyword" context="#stay" char="|"/> 1918 <IncludeRules context="FindWord"/> 1919 <IncludeRules context="FindPattern"/> 1920 <DetectIdentifier attribute="Pattern" context="#stay"/> 1921 </context> 1922 1923 <context attribute="Normal Text" lineEndContext="#stay" name="CaseAlt" fallthroughContext="CasePattern"> 1924 <DetectSpaces attribute="Normal Text" context="#stay"/> 1925 <DetectChar attribute="Keyword" context="CasePattern" char="("/> 1926 <DetectChar attribute="Keyword" context="#pop!CaseAltEnd" char="}" endRegion="caseexpr" lookAhead="1"/> 1927 </context> 1928 <context attribute="Normal Text" lineEndContext="#stay" name="CaseAltEnd"> 1929 <DetectChar attribute="Keyword" context="#pop" char="}" endRegion="case"/> 1930 </context> 1931 1932 <!-- CaseExpr eats shell input till ;; / ;& / ;| --> 1933 <context attribute="Normal Text" lineEndContext="#stay" name="CaseExpr" fallthroughContext="Command"> 1934 <Detect2Chars attribute="Control Flow" context="#pop" char=";" char1="|" endRegion="caseexpr"/> 1935 <Detect2Chars attribute="Control Flow" context="#pop" char=";" char1=";" endRegion="caseexpr"/> 1936 <Detect2Chars attribute="Control Flow" context="#pop" char=";" char1="&" endRegion="caseexpr"/> 1937 <WordDetect context="#pop" String="esac" endRegion="caseexpr" lookAhead="1"/> 1938 <DetectChar context="#pop" char="}" lookAhead="1"/> 1939 <IncludeRules context="Start"/> 1940 </context> 1941 1942 <!-- ExprGlobParen is called after a ( is encountered in a argument --> 1943 <context attribute="Glob Flag" lineEndContext="#pop" name="ExprGlobParen" fallthroughContext="#pop"> 1944 <Detect2Chars attribute="Glob Flag" context="#pop!GlobPatFlag" char="(" char1="#"/> 1945 <RegExpr attribute="Glob" context="#pop!ExtGlobPattern" String="\((?=&ispattern;)"/> 1946 <DetectChar attribute="Glob Flag" context="#pop!GlobQualifier" char="("/> 1947 </context> 1948 <context attribute="Glob Flag" lineEndContext="#pop" name="ExprGlobParenThenPath" fallthroughContext="#pop"> 1949 <Detect2Chars attribute="Glob Flag" context="#pop!GlobPatFlagThenPath" char="(" char1="#"/> 1950 <RegExpr attribute="Glob" context="#pop!ExtGlobPatternThenPath" String="\((?=&ispattern;)"/> 1951 <DetectChar attribute="Glob Flag" context="#pop!GlobQualifier" char="("/> 1952 </context> 1953 <context attribute="Glob Flag" lineEndContext="#pop" name="GlobQualifier"> 1954 <AnyChar attribute="Glob Flag" context="#stay" String="/F.@=p*%bcrwxAIERWXsStUG^-MTNDn"/> 1955 <AnyChar attribute="Glob Flag" context="GlobQualifier_e" String="eP"/> 1956 <AnyChar attribute="Glob Flag" context="GlobQualifier_u" String="ug"/> 1957 <AnyChar attribute="Glob Flag" context="GlobQualifier_a" String="amc"/> 1958 <AnyChar attribute="Glob Flag" context="GlobQualifier_o" String="oO"/> 1959 <DetectChar attribute="Glob Flag" context="GlobQualifier_f" char="f"/> 1960 <DetectChar attribute="Glob Flag" context="GlobQualifier_+" char="+"/> 1961 <DetectChar attribute="Glob Flag" context="GlobQualifier_d" char="d"/> 1962 <DetectChar attribute="Glob Flag" context="GlobQualifier_L" char="L"/> 1963 <DetectChar attribute="Glob Flag" context="GlobQualifier_Y" char="Y"/> 1964 <DetectChar attribute="Parameter Expansion Operator" context="Subscript" char="["/> 1965 1966 <DetectChar attribute="Operator" context="#stay" char=","/> 1967 <DetectChar attribute="Parameter Expansion Operator" context="#pop!GlobModifier" char=":"/> 1968 <DetectChar attribute="Glob Flag" context="#pop" char=")"/> 1969 <IncludeRules context="FindWord"/> 1970 </context> 1971 1972 <context attribute="Normal Text" lineEndContext="#pop" name="GlobQualifier_o" fallthroughContext="#pop"> 1973 <AnyChar attribute="Normal Text" context="#stay" String="nLlamcdN"/> 1974 </context> 1975 1976 <context attribute="Number" lineEndContext="#pop" name="GlobQualifier_Y" fallthroughContext="#pop"> 1977 <AnyChar attribute="Number" context="#stay" String="0123456789"/> 1978 </context> 1979 1980 <context attribute="Glob Flag" lineEndContext="#pop" name="GlobQualifier_L" fallthroughContext="#pop"> 1981 <AnyChar attribute="Normal Text" context="#stay" String="kKmMpPgGtT"/> 1982 <AnyChar attribute="Number" context="#pop!GlobQualifier_Y" String="-+0123456789"/> 1983 </context> 1984 1985 <context attribute="Glob Flag" lineEndContext="#pop" name="GlobQualifier_a" fallthroughContext="#pop"> 1986 <AnyChar attribute="Normal Text" context="#stay" String="Mwhmsd"/> 1987 <AnyChar attribute="Number" context="#pop!GlobQualifier_Y" String="-+0123456789"/> 1988 </context> 1989 1990 <context attribute="Glob Flag" lineEndContext="#pop" name="GlobQualifier_+" fallthroughContext="#pop"> 1991 <RegExpr attribute="Function" context="#pop" String="[^&_fragpathseps;=,\[]+"/> 1992 </context> 1993 1994 <context attribute="Path" lineEndContext="#pop" name="GlobQualifier_d"> 1995 <AnyChar context="#pop" String=")," lookAhead="1"/> 1996 </context> 1997 1998 <context attribute="Glob Flag" lineEndContext="#pop" name="GlobQualifier_u"> 1999 <AnyChar attribute="Number" context="#pop!GlobQualifier_Y" String="0123456789"/> 2000 <IncludeRules context="GlobQualifier_e"/> 2001 </context> 2002 2003 <context attribute="Glob Flag" lineEndContext="#pop" name="GlobQualifier_f" fallthroughContext="#pop"> 2004 <AnyChar attribute="Number" context="#pop!GlobQualifier_fo" String="0123456789=+-"/> 2005 <DetectChar attribute="Glob" context="#pop!GlobQualifier_fo" char="?"/> 2006 <DetectChar attribute="Glob Flag" context="#pop!GlobQualifier_f[" char="["/> 2007 <DetectChar attribute="Glob Flag" context="#pop!GlobQualifier_f<" char="<"/> 2008 <DetectChar attribute="Glob Flag" context="#pop!GlobQualifier_f{" char="{"/> 2009 <RegExpr attribute="Glob Flag" context="#pop!GlobQualifier_fx" String="(.)"/> 2010 </context> 2011 <context attribute="Number" lineEndContext="#pop" name="GlobQualifier_fo" fallthroughContext="#pop"> 2012 <AnyChar attribute="Number" context="#stay" String="0123456789"/> 2013 <DetectChar attribute="Glob" context="#stay" char="?"/> 2014 </context> 2015 <context attribute="Normal Text" lineEndContext="#stay" name="GlobQualifier_f["> 2016 <DetectChar attribute="Operator" context="#stay" char=","/> 2017 <DetectChar attribute="Glob Flag" context="#pop" char="]"/> 2018 </context> 2019 <context attribute="Normal Text" lineEndContext="#stay" name="GlobQualifier_f<"> 2020 <DetectChar attribute="Operator" context="#stay" char=","/> 2021 <DetectChar attribute="Glob Flag" context="#pop" char=">"/> 2022 </context> 2023 <context attribute="Normal Text" lineEndContext="#stay" name="GlobQualifier_f{"> 2024 <DetectChar attribute="Operator" context="#stay" char=","/> 2025 <DetectChar attribute="Glob Flag" context="#pop" char="}"/> 2026 </context> 2027 <context attribute="Normal Text" lineEndContext="#stay" name="GlobQualifier_fx"> 2028 <DetectChar attribute="Operator" context="#stay" char=","/> 2029 <DetectChar attribute="Glob Flag" context="#pop" char="1" dynamic="1"/> 2030 </context> 2031 2032 <context attribute="Glob Flag" lineEndContext="#pop" name="GlobQualifier_e" fallthroughContext="#pop"> 2033 <DetectChar attribute="Glob Flag" context="#pop!GlobQualifier_e[" char="["/> 2034 <DetectChar attribute="Glob Flag" context="#pop!GlobQualifier_e<" char="<"/> 2035 <DetectChar attribute="Glob Flag" context="#pop!GlobQualifier_e{" char="{"/> 2036 <RegExpr attribute="Glob Flag" context="#pop!GlobQualifier_ex" String="(.)"/> 2037 </context> 2038 <context attribute="Normal Text" lineEndContext="#stay" name="IncGlobQualifier_e"> 2039 <IncludeRules context="FindStrings"/> 2040 <DetectChar context="RegularVariable" char="$" lookAhead="1"/> 2041 <DetectChar attribute="Backquote" context="RegularBackq" char="`"/> 2042 </context> 2043 <context attribute="Normal Text" lineEndContext="#stay" name="GlobQualifier_e["> 2044 <DetectChar attribute="Glob Flag" context="#pop" char="]"/> 2045 <IncludeRules context="IncGlobQualifier_e"/> 2046 </context> 2047 <context attribute="Normal Text" lineEndContext="#stay" name="GlobQualifier_e<"> 2048 <DetectChar attribute="Glob Flag" context="#pop" char=">"/> 2049 <IncludeRules context="IncGlobQualifier_e"/> 2050 </context> 2051 <context attribute="Normal Text" lineEndContext="#stay" name="GlobQualifier_e{"> 2052 <DetectChar attribute="Glob Flag" context="#pop" char="}"/> 2053 <IncludeRules context="IncGlobQualifier_e"/> 2054 </context> 2055 <context attribute="Normal Text" lineEndContext="#stay" name="GlobQualifier_ex"> 2056 <DetectChar attribute="Glob Flag" context="#pop" char="1" dynamic="1"/> 2057 <IncludeRules context="IncGlobQualifier_e"/> 2058 </context> 2059 2060 <!-- GlobPatFlag is called after a (# is encountered --> 2061 <context attribute="Glob Flag" lineEndContext="#pop" name="GlobPatFlag" fallthroughContext="#pop"> 2062 <IncludeRules context="IncGlobPatFlag"/> 2063 <DetectChar attribute="Glob Flag" context="#pop" char=")"/> 2064 </context> 2065 <context attribute="Glob Flag" lineEndContext="#pop" name="GlobPatFlagThenPath" fallthroughContext="#pop"> 2066 <IncludeRules context="IncGlobPatFlag"/> 2067 <DetectChar attribute="Glob Flag" context="#pop!PathThenPop" char=")"/> 2068 </context> 2069 <context attribute="Glob Flag" lineEndContext="#pop" name="IncGlobPatFlag" fallthroughContext="#pop"> 2070 <AnyChar attribute="Glob Flag" context="#stay" String="ilIbBcmMaseuU,"/> 2071 <AnyChar attribute="Number" context="#stay" String="0123456789"/> 2072 <DetectChar attribute="Glob Flag" context="#pop!GlobQualifier" char="q"/> 2073 </context> 2074 2075 <!-- GlobModifier is called after a : is encountered in a GlobQualifier --> 2076 <context attribute="Parameter Expansion" lineEndContext="#pop" name="GlobModifier"> 2077 <DetectChar attribute="Parameter Expansion Operator" context="#stay" char=":"/> 2078 <AnyChar attribute="Parameter Expansion" context="VarBraceModifier_h" String="ht"/> 2079 <DetectChar attribute="Parameter Expansion" context="GlobModifier_s" char="s"/> 2080 <Detect2Chars attribute="Parameter Expansion" context="GlobModifier_s" char="g" char1="s"/> 2081 <DetectChar attribute="Glob Flag" context="#pop" char=")"/> 2082 </context> 2083 <context attribute="Parameter Expansion" lineEndContext="#stay" name="GlobModifier_s" fallthroughContext="#pop"> 2084 <DetectChar attribute="Error" context="#pop#pop" char=")"/> 2085 <DetectChar attribute="Parameter Expansion Operator" context="#pop!GlobModifier_s_PatPrefix" char="/"/> 2086 </context> 2087 <context attribute="Pattern" lineEndContext="#stay" name="GlobModifier_s_PatPrefix" fallthroughContext="#pop!GlobModifier_s_Pat"> 2088 <Detect2Chars attribute="Parameter Expansion Operator" context="#pop!GlobModifier_s_Pat" char="#" char1="%"/> 2089 <AnyChar attribute="Parameter Expansion Operator" context="#pop!GlobModifier_s_Pat" String="#%"/> 2090 </context> 2091 <context attribute="Pattern" lineEndContext="#stay" name="GlobModifier_s_Pat"> 2092 <DetectChar attribute="Parameter Expansion Operator" context="#pop!GlobModifier_s_Rep" char="/"/> 2093 <IncludeRules context="FindWord"/> 2094 <IncludeRules context="FindSubPattern"/> 2095 <DetectChar attribute="Error" context="#pop#pop" char=")"/> 2096 <DetectIdentifier attribute="Pattern"/> 2097 </context> 2098 <context attribute="String DoubleQ" lineEndContext="#stay" name="GlobModifier_s_Rep"> 2099 <DetectChar attribute="Glob Flag" context="#pop#pop" char=")"/> 2100 <DetectChar attribute="Parameter Expansion Operator" context="#pop" char="/"/> 2101 <DetectChar attribute="String DoubleQ" context="GlobModifier_s_RecursiveRep" char="("/> 2102 <IncludeRules context="FindWord"/> 2103 <DetectIdentifier attribute="String DoubleQ"/> 2104 </context> 2105 <context attribute="String DoubleQ" lineEndContext="#stay" name="GlobModifier_s_RecursiveRep"> 2106 <DetectChar attribute="String DoubleQ" context="#pop" char=")"/> 2107 <DetectChar attribute="String DoubleQ" context="GlobModifier_s_RecursiveRep" char="("/> 2108 <IncludeRules context="FindWord"/> 2109 <DetectIdentifier attribute="String DoubleQ"/> 2110 </context> 2111 2112 </contexts> 2113 2114 <itemDatas> 2115 <itemData name="Normal Text" defStyleNum="dsNormal"/> 2116 <itemData name="Comment" defStyleNum="dsComment"/> 2117 <itemData name="Keyword" defStyleNum="dsKeyword" spellChecking="false"/> 2118 <itemData name="Control" defStyleNum="dsKeyword" spellChecking="false"/> 2119 <itemData name="Control Flow" defStyleNum="dsControlFlow" spellChecking="false"/> 2120 <itemData name="Builtin" defStyleNum="dsBuiltIn" spellChecking="false"/> 2121 <itemData name="Command" defStyleNum="dsFunction" spellChecking="false"/> 2122 <itemData name="OtherCommand" defStyleNum="dsExtension" spellChecking="false"/> 2123 <itemData name="Redirection" defStyleNum="dsOperator" spellChecking="false"/> 2124 <itemData name="Escape" defStyleNum="dsDataType" spellChecking="false"/> 2125 <itemData name="String SingleQ" defStyleNum="dsString"/> 2126 <itemData name="String DoubleQ" defStyleNum="dsString"/> 2127 <itemData name="Here Doc" defStyleNum="dsString"/> 2128 <itemData name="Backquote" defStyleNum="dsKeyword" spellChecking="false"/> 2129 <itemData name="String Transl." defStyleNum="dsString"/> 2130 <itemData name="String Escape" defStyleNum="dsDataType"/> 2131 <itemData name="Variable" defStyleNum="dsVariable" spellChecking="false"/> 2132 <itemData name="Dollar Prefix" defStyleNum="dsVariable" spellChecking="false"/> 2133 <itemData name="Expression" defStyleNum="dsOthers" spellChecking="false"/> 2134 <itemData name="Function" defStyleNum="dsFunction" spellChecking="false"/> 2135 <itemData name="Pattern" defStyleNum="dsSpecialString" spellChecking="false"/> 2136 <itemData name="Path" defStyleNum="dsNormal" spellChecking="false"/> 2137 <itemData name="Glob" defStyleNum="dsPreprocessor" spellChecking="false"/> 2138 <itemData name="Glob Flag" defStyleNum="dsOperator" spellChecking="false"/> 2139 <itemData name="Option" defStyleNum="dsAttribute" spellChecking="false"/> 2140 <itemData name="Hex" defStyleNum="dsBaseN" spellChecking="false"/> 2141 <itemData name="Number" defStyleNum="dsDecVal" spellChecking="false"/> 2142 <itemData name="Base" defStyleNum="dsDataType" spellChecking="false"/> 2143 <itemData name="BaseN" defStyleNum="dsBaseN" spellChecking="false"/> 2144 <itemData name="File Descriptor" defStyleNum="dsDecVal" spellChecking="false"/> 2145 <itemData name="Parameter Expansion" defStyleNum="dsVariable" spellChecking="false"/> 2146 <itemData name="Parameter Expansion Operator" defStyleNum="dsOperator" spellChecking="false"/> 2147 <itemData name="Operator" defStyleNum="dsOperator" spellChecking="false"/> 2148 <itemData name="Error" defStyleNum="dsError" spellChecking="false"/> 2149 </itemDatas> 2150 </highlighting> 2151 <general> 2152 <comments> 2153 <comment name="singleLine" start="#"/> 2154 </comments> 2155 <keywords casesensitive="1" weakDeliminator="^%#[]$._:-/" additionalDeliminator="`"/> 2156 </general> 2157 </language> 2158 <!-- kate: replace-tabs on; indent-width 2; -->