Warning, /frameworks/syntax-highlighting/data/syntax/jam.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 ident "([^\t $&quot;\\]+|\$(?!\()|\\.)+">
0005 ]>
0006 <!--
0007   Documentation:
0008   https://www.bfgroup.xyz/b2/manual/release/index.html
0009 -->
0010 
0011 <!--
0012 Copyright (C) 2006 Mildred <silkensedai@online.fr>.
0013 
0014 Permission is hereby granted, free of charge, to any person obtaining a copy
0015 of this software and associated documentation files (the "Software"), to
0016 deal in the Software without restriction, including without limitation the
0017 rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
0018 sell copies of the Software, and to permit persons to whom the Software is
0019 furnished to do so, subject to the following conditions:
0020 
0021 The above copyright notice and this permission notice shall be included in
0022 all copies or substantial portions of the Software.
0023 
0024 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
0025 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
0026 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
0027 AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
0028 LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
0029 FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
0030 IN THE SOFTWARE.
0031 -->
0032 <language name="Jam" version="13" kateversion="5.79" section="Other" extensions="Jam*;*.jam" mimetype="text/x-jam;text/x-Jamfile;text/x-Jamrules;text/x-Jambase" author="Mildred (silkensedai@online.fr)" license="MIT">
0033   <!--
0034   Changelog
0035     0.2
0036       * now tokens like [ ] { } ( ) : ; are not detected if there is no whitespace before and after
0037       * Jam* files are handled (example Jamrules or Jambase)
0038       * different colors
0039       * Subvariables are handled (example : $(varname[$(v)])
0040       * Include bash highlighting inside actions blocks
0041       * rules names are found in rules definitions
0042       * highlight the variable reference in rule definitions after 'bind'
0043     0.3
0044       * because weakDelimiter isn't supported, it is not possible to just have some locals delimiters for the tokens and globals delimiters as default. So it's not possible to have our usual double click to select.
0045       * 'actions action_name bind var' instead of 'actions bind var action_name'
0046       * bun in syntax 'rule Rulename : param param ...' ':' is not recognized. fixed
0047       * fixed some bugs found when looking at Jambase (peacemeal -> piecemeal, ...)
0048       * variables recognized in strings
0049       * named parameters for rules ... the syntax has changed : 'rule rulename param : param : param {'
0050       * changed section from Scripts to Other
0051   Feature request to Kate dev.
0052     * returnContext attribute
0053     * ability to enter a new context after a #pop
0054     * when you include rules from foreign contexts (here Bash), having the ability to prepend some rules to all foreign contexts for example to terminate the included context before it naturally ends.
0055 
0056     0.4
0057       * fix `x=`: is a rule named `x=`, not a variable
0058       * fix `exe onxxxxx`: is a rule call, not a variable
0059       * fix `ifxxx`, `rulexxx`, etc: not keywords
0060       * fix `variable default = xxx ;`
0061       * fix keywords and operators in a condition: they must be separated by spaces
0062       * fix `on target`
0063       * fix `switch`
0064       * fix `class` and `module`
0065       * fix `for local x`
0066       * new styles: Feature and FeatureOperator for `<xxx>`, `-<xxx>`, `<xxx>abc:<yyy>abc`, `<xxx>abc/<yyy>abc`, `<xxx>abc&&def`
0067       * don't use black color in Rule
0068 
0069     v5
0070       * fix `local x ;`, `x` is a variable not a rule
0071       * highlight subrule: `exe x : [ glob *.cpp ]`
0072   -->
0073   <highlighting>
0074     <list name="keywords">
0075       <item>break</item>
0076       <item>continue</item>
0077       <item>else</item>
0078     </list>
0079     <list name="keywordIf">
0080       <item>if</item>
0081       <item>while</item>
0082     </list>
0083     <list name="keywordAcceptRule">
0084       <item>include</item>
0085       <item>return</item>
0086     </list>
0087     <list name="keywordClass"><item>class</item></list>
0088     <list name="keywordModule"><item>module</item></list>
0089     <list name="keywordSwitch"><item>switch</item></list>
0090     <list name="keywordActions"><item>actions</item></list>
0091     <list name="keywordRule"><item>rule</item></list>
0092     <list name="keywordFor"><item>for</item></list>
0093     <list name="keywordOn"><item>on</item></list>
0094     <list name="keywordReturn"><item>return</item></list>
0095     <list name="keywordIn"><item>in</item></list>
0096     <list name="keywordCase"><item>case</item></list>
0097     <list name="keywordLocal"><item>local</item></list>
0098 
0099     <list name="actionAttribute">
0100       <item>existing</item>
0101       <item>ignore</item>
0102       <item>piecemeal</item>
0103       <item>quietly</item>
0104       <item>together</item>
0105       <item>updated</item>
0106     </list>
0107     <list name="actionAttributeBind">
0108       <item>bind</item>
0109     </list>
0110 
0111     <list name="onTarget"><item>target</item></list>
0112 
0113     <list name="features">
0114       <item>&lt;address-model&gt;</item>
0115       <item>&lt;address-sanitizer&gt;</item>
0116       <item>&lt;allow-system-cflags&gt;</item>
0117       <item>&lt;allow-system-libs&gt;</item>
0118       <item>&lt;architecture&gt;</item>
0119       <item>&lt;archiver&gt;</item>
0120       <item>&lt;asciidoctor-attribute&gt;</item>
0121       <item>&lt;asciidoctor-backend&gt;</item>
0122       <item>&lt;asciidoctor-doctype&gt;</item>
0123       <item>&lt;assembler&gt;</item>
0124       <item>&lt;boostbook&gt;</item>
0125       <item>&lt;build&gt;</item>
0126       <item>&lt;build-name&gt;</item>
0127       <item>&lt;c++-template-depth&gt;</item>
0128       <item>&lt;catalog&gt;</item>
0129       <item>&lt;cflags&gt;</item>
0130       <item>&lt;compileflags&gt;</item>
0131       <item>&lt;compiler&gt;</item>
0132       <item>&lt;compiler-filter&gt;</item>
0133       <item>&lt;cxxflags&gt;</item>
0134       <item>&lt;debug-symbols&gt;</item>
0135       <item>&lt;def-file&gt;</item>
0136       <item>&lt;define&gt;</item>
0137       <item>&lt;dll-path&gt;</item>
0138       <item>&lt;doxygen:param&gt;</item>
0139       <item>&lt;doxygen:xml-imagedir&gt;</item>
0140       <item>&lt;embed-manifest&gt;</item>
0141       <item>&lt;embed-manifest-file&gt;</item>
0142       <item>&lt;file&gt;</item>
0143       <item>&lt;format&gt;</item>
0144       <item>&lt;hardcode-dll-paths&gt;</item>
0145       <item>&lt;idl-compiler&gt;</item>
0146       <item>&lt;implicit-dependency&gt;</item>
0147       <item>&lt;import&gt;</item>
0148       <item>&lt;include&gt;</item>
0149       <item>&lt;includes&gt;</item>
0150       <item>&lt;inlining&gt;</item>
0151       <item>&lt;install-dependencies&gt;</item>
0152       <item>&lt;install-source-root&gt;</item>
0153       <item>&lt;install-type&gt;</item>
0154       <item>&lt;instruction-set&gt;</item>
0155       <item>&lt;libdir&gt;</item>
0156       <item>&lt;library&gt;</item>
0157       <item>&lt;link&gt;</item>
0158       <item>&lt;linker&gt;</item>
0159       <item>&lt;linkflags&gt;</item>
0160       <item>&lt;local-visibility&gt;</item>
0161       <item>&lt;location&gt;</item>
0162       <item>&lt;location-prefix&gt;</item>
0163       <item>&lt;mc-compiler&gt;</item>
0164       <item>&lt;name&gt;</item>
0165       <item>&lt;optimization&gt;</item>
0166       <item>&lt;parallelism&gt;</item>
0167       <item>&lt;path&gt;</item>
0168       <item>&lt;pkg-config&gt;</item>
0169       <item>&lt;pkg-config-define&gt;</item>
0170       <item>&lt;prefix&gt;</item>
0171       <item>&lt;profiling&gt;</item>
0172       <item>&lt;ranlib&gt;</item>
0173       <item>&lt;rc&gt;</item>
0174       <item>&lt;rc-type&gt;</item>
0175       <item>&lt;reftitle&gt;</item>
0176       <item>&lt;relevant&gt;</item>
0177       <item>&lt;resource-compiler&gt;</item>
0178       <item>&lt;root&gt;</item>
0179       <item>&lt;runtime-debugging&gt;</item>
0180       <item>&lt;runtime-link&gt;</item>
0181       <item>&lt;sass-line-numbers&gt;</item>
0182       <item>&lt;sass-style&gt;</item>
0183       <item>&lt;search&gt;</item>
0184       <item>&lt;setup&gt;</item>
0185       <item>&lt;setup-amd64&gt;</item>
0186       <item>&lt;setup-i386&gt;</item>
0187       <item>&lt;setup-ia64&gt;</item>
0188       <item>&lt;source&gt;</item>
0189       <item>&lt;sysroot&gt;</item>
0190       <item>&lt;target-os&gt;</item>
0191       <item>&lt;testing.arg&gt;</item>
0192       <item>&lt;testing.launcher&gt;</item>
0193       <item>&lt;thread-sanitizer&gt;</item>
0194       <item>&lt;threading&gt;</item>
0195       <item>&lt;toolset&gt;</item>
0196       <item>&lt;undefined-sanitizer&gt;</item>
0197       <item>&lt;use&gt;</item>
0198       <item>&lt;variable&gt;</item>
0199       <item>&lt;variant&gt;</item>
0200       <item>&lt;verbatim-options&gt;</item>
0201       <item>&lt;version&gt;</item>
0202       <item>&lt;visibility&gt;</item>
0203       <item>&lt;warnings&gt;</item>
0204       <item>&lt;warnings-as-errors&gt;</item>
0205       <item>&lt;xsl:param&gt;</item>
0206       <item>&lt;xsl:path&gt;</item>
0207       <item>&lt;xslt&gt;</item>
0208       <item>&lt;xslt-dir&gt;</item>
0209     </list>
0210 
0211     <contexts>
0212 
0213       <context attribute="Normal" lineEndContext="#stay" name="Normal">
0214         <IncludeRules context="Preprocess"/>
0215         <WordDetect attribute="Error" context="#stay" String="}" endRegion="block"/>
0216         <IncludeRules context="Statement"/>
0217       </context>
0218 
0219       <context attribute="Normal" lineEndContext="#stay" name="Block">
0220         <IncludeRules context="Preprocess"/>
0221         <WordDetect attribute="Operator" context="#pop" String="}" endRegion="block"/>
0222         <IncludeRules context="Statement"/>
0223       </context>
0224 
0225       <context attribute="Normal" lineEndContext="#stay" name="Statement">
0226         <IncludeRules context="Preprocess"/>
0227         <keyword attribute="Keyword" context="ActionDefinition" String="keywordActions"/>
0228         <keyword attribute="Keyword" context="RuleDefinition" String="keywordRule"/>
0229         <keyword attribute="Keyword" context="ForStatement" String="keywordFor"/>
0230         <keyword attribute="Keyword" context="IfStatement" String="keywordIf"/>
0231         <keyword attribute="Keyword" context="Rule" String="keywordAcceptRule"/>
0232         <keyword attribute="Keyword" context="OnPreStment" String="keywordOn"/>
0233         <keyword attribute="Keyword" context="SwitchStatement" String="keywordSwitch"/>
0234         <keyword attribute="Keyword" context="ClassStatement" String="keywordClass"/>
0235         <keyword attribute="Keyword" context="ModuleStatement" String="keywordModule"/>
0236         <keyword attribute="Keyword" context="#stay" String="keywords"/>
0237         <keyword attribute="Keyword" context="Local" String="keywordLocal"/>
0238         <WordDetect attribute="Operator" context="Block" String="{" beginRegion="block"/>
0239         <RegExpr attribute="VarAssign" context="Assignment" String="[^\t ]+[\t ]+(?=([+?]?=|on|default)([\t ]|$))" />
0240         <RegExpr attribute="Rule" context="Rule" String="([^\t ][^\t ]+|[^{}\t ])"/>
0241       </context>
0242 
0243       <context attribute="Normal" lineEndContext="#stay" name="FindBlank">
0244         <DetectSpaces attribute="Normal"/>
0245         <Detect2Chars attribute="CommentTitle" context="CommentTitle" char="#" char1="#"/>
0246         <Detect2Chars attribute="Comment" context="CommentBlock" char="#" char1="|"/>
0247         <DetectChar attribute="Comment" context="Comment" char="#"/>
0248       </context>
0249 
0250       <!-- General instructions -->
0251 
0252       <context attribute="Normal" lineEndContext="#stay" name="Rule">
0253         <IncludeRules context="Preprocess"/>
0254         <WordDetect attribute="Operator" context="#stay" String=":"/>
0255         <WordDetect attribute="Operator" context="#pop" String=";"/>
0256         <IncludeRules context="ValueIdentifier"/>
0257       </context>
0258 
0259       <context attribute="Normal" lineEndContext="#stay" name="ValueIdentifier">
0260         <DetectChar attribute="Feature" context="Feature" char="&lt;"/>
0261         <RegExpr attribute="FeatureOperator" context="#stay" String="-(?=&lt;)"/>
0262         <RegExpr attribute="Normal" context="#stay" String="([^\t $&amp;&quot;\\]+|\$(?!\()|&amp;(?!&amp;)|\\.)+"/>
0263         <!-- auto-completion only -->
0264         <keyword attribute="Feature" context="#stay" String="features"/>
0265       </context>
0266 
0267       <context attribute="Normal" lineEndContext="#pop" name="Feature" fallthroughContext="#pop">
0268         <AnyChar attribute="Error" context="#pop" String="&#9; " />
0269         <DetectChar attribute="Feature" context="#pop!Property" char=">"/>
0270         <Detect2Chars attribute="VariableDelimiter" context="Variable" char="$" char1="("/>
0271         <DetectChar attribute="String" context="String" char="&quot;"/>
0272         <RegExpr attribute="Feature" context="#stay" String="([^\t $>&quot;#\\]+|\$(?!\()|\\.)+"/>
0273       </context>
0274 
0275       <context attribute="Normal" lineEndContext="#pop" name="Property" fallthroughContext="#pop">
0276         <AnyChar attribute="Normal" context="#pop" String="&#9; " />
0277         <Detect2Chars attribute="FeatureOperator" context="#pop" char="&amp;" char1="&amp;"/>
0278         <Detect2Chars attribute="VariableDelimiter" context="Variable" char="$" char1="("/>
0279         <DetectChar attribute="String" context="String" char="&quot;"/>
0280         <RegExpr attribute="FeatureOperator" context="#pop!PropertyFeature" String="[:/,](?=[&lt;\t ]|$)"/>
0281         <RegExpr attribute="Normal" context="#stay" String="([^\t $:&amp;&quot;:/,#\\]+|\$(?!\()|&amp;(?!&amp;)|[:/,](?!&lt;)|\\.)+"/>
0282       </context>
0283 
0284       <context attribute="Normal" lineEndContext="#pop" name="PropertyFeature" fallthroughContext="#pop">
0285         <DetectChar attribute="Feature" context="#pop!Feature" char="&lt;"/>
0286       </context>
0287 
0288       <context attribute="Normal" lineEndContext="#stay" name="OnPreStment" fallthroughContext="#pop">
0289         <DetectSpaces/>
0290         <keyword attribute="Keyword" context="OnTargetPreStment" String="onTarget"/>
0291       </context>
0292 
0293       <context attribute="Normal" lineEndContext="#stay" name="OnTargetPreStment" fallthroughContext="#pop">
0294         <IncludeRules context="Preprocess"/>
0295         <WordDetect attribute="Operator" context="#stay" String=":"/>
0296         <WordDetect attribute="Operator" context="#pop#pop" String=";"/>
0297         <RegExpr attribute="Normal" context="#stay" String="&ident;"/>
0298       </context>
0299 
0300       <context attribute="Normal" lineEndContext="#stay" name="ClassStatement">
0301         <IncludeRules context="Preprocess"/>
0302         <WordDetect attribute="Operator" context="#pop!ClassStatement2" String="{" beginRegion="block"/>
0303         <WordDetect attribute="Operator" context="#stay" String=":"/>
0304         <RegExpr attribute="Normal" context="#stay" String="&ident;"/>
0305       </context>
0306 
0307       <context attribute="Normal" lineEndContext="#stay" name="ModuleStatement">
0308         <DetectSpaces/>
0309         <RegExpr attribute="Normal" context="#pop" String="&ident;"/>
0310       </context>
0311 
0312       <context attribute="Normal" lineEndContext="#stay" name="ClassStatement2">
0313         <IncludeRules context="FindBlank"/>
0314         <WordDetect attribute="Operator" context="#pop" String="}" endRegion="block"/>
0315         <keyword attribute="Keyword" context="MethodDefinition" String="keywordRule"/>
0316         <RegExpr attribute="Error" context="#stay" String="&ident;"/>
0317       </context>
0318 
0319       <context attribute="Normal" lineEndContext="#stay" name="MethodDefinition">
0320         <IncludeRules context="Preprocess"/>
0321         <WordDetect attribute="Error" context="#stay" String=":"/>
0322         <WordDetect attribute="Operator" context="MethodDefinition2" String="{" beginRegion="block"/>
0323         <RegExpr attribute="Rule" context="VarnameList" String="&ident;"/>
0324       </context>
0325 
0326       <context attribute="Normal" lineEndContext="#stay" name="MethodDefinition2">
0327         <DetectSpaces/>
0328         <WordDetect attribute="Operator" context="#pop#pop" String="}" endRegion="block"/>
0329         <IncludeRules context="Statement"/>
0330       </context>
0331 
0332       <!-- Assignment -->
0333 
0334       <context attribute="Normal" lineEndContext="#stay" name="Assignment">
0335         <DetectChar attribute="Operator" context="Assignment2" char="="/>
0336         <Detect2Chars attribute="Operator" context="Assignment2" char="+" char1="="/>
0337         <Detect2Chars attribute="Operator" context="Assignment2" char="?" char1="="/>
0338         <Detect2Chars attribute="Operator" context="AssignmentOn" char="o" char1="n"/>
0339         <StringDetect attribute="Keyword" context="AssignmentDefault" String="default"/>
0340       </context>
0341 
0342       <context attribute="Normal" lineEndContext="#stay" name="Assignment2">
0343         <IncludeRules context="Preprocess"/>
0344         <WordDetect attribute="Operator" context="#pop#pop" String=";"/>
0345         <IncludeRules context="ValueIdentifier"/>
0346       </context>
0347 
0348       <context attribute="Normal" lineEndContext="#stay" name="AssignmentOn">
0349         <IncludeRules context="Preprocess"/>
0350         <DetectChar attribute="Operator" context="#pop!Assignment2" char="="/>
0351         <Detect2Chars attribute="Operator" context="#pop!Assignment2" char="+" char1="="/>
0352         <Detect2Chars attribute="Operator" context="#pop!Assignment2" char="?" char1="="/>
0353         <RegExpr attribute="Normal" context="#stay" String="&ident;"/>
0354       </context>
0355 
0356       <context attribute="Error" lineEndContext="#stay" name="AssignmentDefault">
0357         <DetectSpaces attribute="Normal"/>
0358         <DetectChar attribute="Operator" context="#pop!Assignment2" char="="/>
0359       </context>
0360 
0361       <!-- Sub statements -->
0362 
0363       <context attribute="Normal" lineEndContext="#stay" name="SubStatement" fallthroughContext="SubRule">
0364         <DetectSpaces/>
0365         <Detect2Chars attribute="Keyword" context="OnSubStatement" char="o" char1="n"/>
0366       </context>
0367 
0368       <context attribute="Normal" lineEndContext="#stay" name="OnSubStatement" fallthroughContext="OnSubStatement2">
0369         <DetectSpaces/>
0370         <keyword attribute="Keyword" context="#pop!SubRule" String="onTarget"/>
0371       </context>
0372 
0373       <context attribute="Normal" lineEndContext="#stay" name="OnSubStatement2">
0374         <IncludeRules context="Preprocess"/>
0375         <keyword attribute="Keyword" context="#stay" String="keywordReturn"/>
0376         <WordDetect attribute="Operator" context="#stay" String=":"/>
0377         <WordDetect attribute="Operator" context="#pop#pop#pop" String="]"/>
0378         <RegExpr attribute="Normal" context="#stay" String="&ident;"/>
0379       </context>
0380 
0381       <context attribute="Normal" lineEndContext="#stay" name="SubRule" fallthroughContext="#pop!SubRuleParam">
0382         <DetectSpaces/>
0383         <RegExpr attribute="Rule" context="#pop!SubRuleParam" String="&ident;"/>
0384       </context>
0385 
0386       <context attribute="Normal" lineEndContext="#stay" name="SubRuleParam">
0387         <IncludeRules context="Preprocess"/>
0388         <WordDetect attribute="Operator" context="#stay" String=":"/>
0389         <WordDetect attribute="Operator" context="#pop#pop" String="]"/>
0390         <RegExpr attribute="Feature" context="Property" String="&lt;[^\t >]+>"/>
0391         <RegExpr attribute="Normal" context="#stay" String="&ident;"/>
0392         <!-- auto-completion only -->
0393         <keyword attribute="Feature" context="#stay" String="features"/>
0394       </context>
0395 
0396       <!-- Actions, Rules definitions -->
0397 
0398       <context attribute="Normal" lineEndContext="#stay" name="ActionDefinition">
0399         <IncludeRules context="Preprocess"/>
0400         <keyword attribute="Error" context="#stay" String="actionAttributeBind"/>
0401         <keyword attribute="actionAttribute" context="#stay" String="actionAttribute"/>
0402         <WordDetect attribute="Operator" context="ActionBody" String="{" beginRegion="block"/>
0403         <RegExpr attribute="Action" context="ActionDefinitionFull" String="&ident;"/>
0404       </context>
0405 
0406       <context attribute="Error" lineEndContext="#stay" name="ActionDefinitionFull">
0407         <IncludeRules context="Preprocess"/>
0408         <WordDetect attribute="Operator" context="#pop" String="{" lookAhead="true"/>
0409         <keyword attribute="actionAttribute" context="ActionDefinitionBind" String="actionAttributeBind"/>
0410       </context>
0411 
0412       <context attribute="Normal" lineEndContext="#stay" name="ActionDefinitionBind">
0413         <IncludeRules context="Preprocess"/>
0414         <WordDetect attribute="Operator" context="#pop" String="{" lookAhead="true"/>
0415         <RegExpr attribute="Varname" context="#stay" String="&ident;"/>
0416       </context>
0417 
0418       <context attribute="Normal" lineEndContext="#stay" name="ActionBody" fallthroughContext="Command##Bash">
0419         <WordDetect attribute="Operator" context="#pop#pop" String="}" endRegion="block"/>
0420         <IncludeRules context="##Bash"/>
0421       </context>
0422 
0423       <context attribute="Normal" lineEndContext="#stay" name="RuleDefinition">
0424         <IncludeRules context="Preprocess"/>
0425         <WordDetect attribute="Error" context="#stay" String=":"/>
0426         <WordDetect attribute="Operator" context="#pop" String="{" lookAhead="true"/>
0427         <RegExpr attribute="Rule" context="VarnameList" String="&ident;"/>
0428       </context>
0429 
0430       <context attribute="Normal" lineEndContext="#stay" name="VarnameList">
0431         <IncludeRules context="Preprocess"/>
0432         <WordDetect attribute="Operator" context="VarnameList" String=":"/>
0433         <WordDetect attribute="Operator" context="#pop" String="{" lookAhead="true"/>
0434         <AnyChar attribute="VariableAttribute" context="#stay" String="?+*"/>
0435         <RegExpr attribute="Varname" context="#stay" String="&ident;"/>
0436       </context>
0437 
0438       <!-- for, while, if, switch -->
0439 
0440       <context attribute="Normal" lineEndContext="#stay" name="ForStatement" fallthroughContext="#pop!ForStatement2">
0441         <DetectSpaces/>
0442         <keyword attribute="Keyword" context="#pop!ForStatement2" String="keywordLocal"/>
0443       </context>
0444 
0445       <context attribute="Normal" lineEndContext="#stay" name="ForStatement2">
0446         <IncludeRules context="Preprocess"/>
0447         <keyword attribute="Operator" context="ForList" String="keywordIn"/>
0448         <RegExpr attribute="Varname" context="#stay" String="&ident;"/>
0449       </context>
0450 
0451       <context attribute="Normal" lineEndContext="#stay" name="ForList">
0452         <IncludeRules context="Preprocess"/>
0453         <WordDetect attribute="Operator" context="#pop#pop" String="{" lookAhead="true"/>
0454         <RegExpr attribute="Normal" context="#stay" String="&ident;"/>
0455       </context>
0456 
0457       <context attribute="Normal" lineEndContext="#stay" name="IfStatement">
0458         <IncludeRules context="Preprocess"/>
0459         <RegExpr attribute="Operator" context="#stay" String="([=&lt;>!]?=|[&lt;>!()]|&amp;&amp;|\|\||in)(?=[ \t]|$)"/>
0460         <WordDetect attribute="Operator" context="#pop" String="{" lookAhead="true"/>
0461         <RegExpr attribute="Feature" context="Property" String="&lt;[^\t >]+>"/>
0462         <RegExpr attribute="Normal" context="#stay" String="&ident;"/>
0463         <!-- auto-completion only -->
0464         <keyword attribute="Feature" context="#stay" String="features"/>
0465       </context>
0466 
0467       <context attribute="Normal" lineEndContext="#stay" name="SwitchStatement">
0468         <IncludeRules context="Preprocess"/>
0469         <WordDetect attribute="Operator" context="#pop!SwitchStatement2" String="{" beginRegion="block"/>
0470         <RegExpr attribute="Normal" context="#stay" String="&ident;"/>
0471       </context>
0472 
0473       <context attribute="Normal" lineEndContext="#stay" name="SwitchStatement2">
0474         <IncludeRules context="FindBlank"/>
0475         <WordDetect attribute="Operator" context="#pop" String="}" endRegion="block"/>
0476         <keyword attribute="Operator" context="CaseCond" String="keywordCase"/>
0477         <RegExpr attribute="Error" context="#stay" String="&ident;"/>
0478       </context>
0479 
0480       <context attribute="Normal" lineEndContext="#stay" name="CaseCond">
0481         <IncludeRules context="FindBlank"/>
0482         <WordDetect attribute="Operator" context="#pop!CaseStatement" String=":"/>
0483         <WordDetect attribute="Error" context="#pop" String=";"/>
0484         <RegExpr attribute="Normal" context="#stay" String="&ident;"/>
0485       </context>
0486 
0487       <context attribute="Normal" lineEndContext="#stay" name="CaseStatement">
0488         <IncludeRules context="Preprocess"/>
0489         <WordDetect attribute="Operator" context="#stay" String=":"/>
0490         <WordDetect attribute="Operator" context="#pop" String=";"/>
0491         <IncludeRules context="ValueIdentifier"/>
0492       </context>
0493 
0494       <!-- local -->
0495 
0496       <context attribute="Variable" lineEndContext="#stay" name="Local">
0497         <DetectSpaces attribute="Normal"/>
0498         <keyword attribute="Keyword" context="#pop!RuleDefinition" String="keywordRule"/>
0499         <RegExpr attribute="VarAssign" context="#pop!LocalInit" String="&ident;"/>
0500         <WordDetect attribute="Operator" context="#pop" String=";"/>
0501       </context>
0502 
0503       <context attribute="Normal" lineEndContext="#stay" name="LocalInit" fallthroughContext="#pop">
0504         <DetectSpaces attribute="Normal"/>
0505         <DetectChar attribute="Operator" context="Assignment2" char="="/>
0506         <WordDetect attribute="Operator" context="#pop" String=";"/>
0507       </context>
0508 
0509       <!-- Variables, Strings, Comments -->
0510 
0511       <context attribute="Normal" lineEndContext="#stay" name="Preprocess">
0512         <IncludeRules context="FindBlank"/>
0513         <Detect2Chars attribute="VariableDelimiter" context="Variable" char="$" char1="("/>
0514         <DetectChar attribute="String" context="String" char="&quot;"/>
0515         <WordDetect attribute="Operator" context="SubStatement" String="["/>
0516       </context>
0517 
0518       <context attribute="Variable" lineEndContext="Error" name="Variable">
0519         <Detect2Chars attribute="VariableDelimiter" context="Variable" char="$" char1="("/>
0520         <DetectChar attribute="VariableDelimiter" context="#pop" char=")"/>
0521         <DetectChar attribute="VariableAttribute" context="VariableRange" char="["/>
0522         <DetectChar attribute="VariableAttribute" context="VariableAttribute" char=":"/>
0523       </context>
0524 
0525       <context attribute="VariableAttribute" lineEndContext="Error" name="VariableRange">
0526         <Detect2Chars attribute="VariableDelimiter" context="Variable" char="$" char1="("/>
0527         <DetectChar attribute="VariableAttribute" context="#pop" char="]"/>
0528       </context>
0529 
0530       <context attribute="VariableAttribute" lineEndContext="Error" name="VariableAttribute">
0531         <Detect2Chars attribute="VariableDelimiter" context="Variable" char="$" char1="("/>
0532         <DetectChar attribute="Variable" context="#pop" char=")" lookAhead="true"/>
0533       </context>
0534 
0535       <context attribute="Comment" lineEndContext="#pop" name="Comment">
0536         <DetectSpaces/>
0537         <IncludeRules context="##Comments" />
0538         <DetectIdentifier/>
0539       </context>
0540 
0541       <context attribute="Comment" lineEndContext="#stay" name="CommentBlock">
0542         <Detect2Chars attribute="Comment" context="#pop" char="|" char1="#"/>
0543         <IncludeRules context="Comment"/>
0544       </context>
0545 
0546       <context attribute="CommentTitle" lineEndContext="#pop" name="CommentTitle">
0547         <IncludeRules context="Comment"/>
0548       </context>
0549 
0550       <context attribute="String" lineEndContext="#stay" name="String">
0551         <Detect2Chars attribute="VariableDelimiter" context="Variable" char="$" char1="("/>
0552         <Detect2Chars attribute="EscapeSeq" context="#stay" char="\" char1="&quot;"/>
0553         <DetectChar attribute="EscapeSeq" context="#stay" char="\"/>
0554         <DetectChar attribute="String" context="#pop" char="&quot;"/>
0555       </context>
0556 
0557       <!-- Error -->
0558 
0559       <context attribute="Error" lineEndContext="#stay" name="Error"/>
0560 
0561     </contexts>
0562     <itemDatas>
0563       <!-- action definition (shell script) -->
0564       <itemData name="actionAttribute" defStyleNum="dsAttribute"/>
0565       <!-- rule / action call -->
0566       <itemData name="Rule" defStyleNum="dsFunction"/>
0567       <itemData name="Action" defStyleNum="dsNormal"/>
0568       <!-- variables with attributes -->
0569       <itemData name="Variable" defStyleNum="dsVariable"/>
0570       <itemData name="VariableDelimiter" defStyleNum="dsOperator"/>
0571       <itemData name="VariableAttribute" defStyleNum="dsAttribute"/>
0572       <itemData name="VarAssign" defStyleNum="dsVariable"/>
0573       <itemData name="Varname" defStyleNum="dsVariable"/>
0574       <!-- common -->
0575       <itemData name="Normal" defStyleNum="dsNormal"/>
0576       <itemData name="Feature" defStyleNum="dsBuiltIn"/>
0577       <itemData name="FeatureOperator" defStyleNum="dsOperator" bold="1"/>
0578       <itemData name="Operator" defStyleNum="dsOperator" bold="1"/>
0579       <itemData name="Keyword" defStyleNum="dsKeyword"/>
0580       <itemData name="Comment" defStyleNum="dsComment"/>
0581       <itemData name="CommentTitle" defStyleNum="dsComment" bold="1"/>
0582       <itemData name="String" defStyleNum="dsString"/>
0583       <itemData name="EscapeSeq" defStyleNum="dsSpecialChar"/>
0584       <itemData name="Error" defStyleNum="dsError"/>
0585     </itemDatas>
0586   </highlighting>
0587   <general>
0588     <comments>
0589       <comment name="singleLine" start="#"/>
0590     </comments>
0591     <keywords weakDeliminator=":;{}()[].!+,-&lt;=&gt;%&amp;/?^|~\*,"/>
0592   </general>
0593 </language>
0594 <!-- kate: space-indent on; indent-width 2; replace-tabs on; -->