Warning, /frameworks/syntax-highlighting/data/syntax/puppet.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 BareWord  "[a-z][a-zA-Z0-9-_]*">
0005   <!ENTITY CapWord   "[A-Z][a-zA-Z0-9-_]*">
0006   <!ENTITY namespace "[a-z][a-z0-9_]*">
0007 ]>
0008 
0009 <!--
0010   Puppet syntax highlighting file:
0011 
0012   Copyright (C) 2014  by Michal Humpula (michal.humpula@seznam.cz)
0013 
0014   This library is free software; you can redistribute it and/or
0015   modify it under the terms of the GNU Library General Public
0016   License as published by the Free Software Foundation; either
0017   version 2 of the License, or (at your option) any later version.
0018 
0019   This library is distributed in the hope that it will be useful,
0020   but WITHOUT ANY WARRANTY; without even the implied warranty of
0021   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
0022   Library General Public License for more details.
0023 
0024   You should have received a copy of the GNU Library General Public
0025   License along with this library; if not, write to the
0026   Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
0027   Boston, MA  02110-1301, USA.
0028 -->
0029 
0030 <language name="Puppet" section="Scripts" version="12" kateversion="5.0" extensions="*.pp" priority="10" mimetype="application/x-puppet" style="puppet" indenter="cstyle" author="Michal Humpula (michal.humpula@seznam.cz)" license="LGPLv2+">
0031   <highlighting>
0032     <list name="keywords">
0033       <item>import</item>
0034       <item>false</item>
0035       <item>true</item>
0036       <item>undef</item>
0037     </list>
0038 
0039     <list name="operators">
0040       <item>in</item>
0041       <item>and</item>
0042       <item>or</item>
0043     </list>
0044 
0045     <list name="collector operators">
0046       <item>and</item>
0047       <item>or</item>
0048     </list>
0049 
0050     <contexts>
0051       <context name="Start" attribute="Normal Text" lineEndContext="#stay">
0052         <IncludeRules context="common" />
0053       </context>
0054 
0055       <context name="common" attribute="Normal Text" lineEndContext="#stay">
0056         <DetectSpaces/>
0057         <IncludeRules context="FindComment"/>
0058         <IncludeRules context="FindString"/>
0059         <IncludeRules context="FindOperator"/>
0060         <Int attribute="Number" context="#stay" />
0061         <IncludeRules context="FindUnless"/>
0062         <IncludeRules context="FindIf"/>
0063         <IncludeRules context="FindCase"/>
0064         <keyword attribute="Keyword" String="keywords" context="#stay"/>
0065         <IncludeRules context="FindVariable"/>
0066 
0067         <IncludeRules context="FindClass"/>
0068         <IncludeRules context="FindNode"/>
0069 
0070         <IncludeRules context="FindCollector"/>
0071         <IncludeRules context="FindExportedCollector"/>
0072 
0073         <IncludeRules context="FindResource"/>
0074         <IncludeRules context="FindResourceReference"/>
0075         <IncludeRules context="FindResourceDefaults"/>
0076         <IncludeRules context="FindDefine"/>
0077 
0078         <IncludeRules context="FindArray"/>
0079         <IncludeRules context="FindHash"/>
0080 
0081         <IncludeRules context="FindFunction"/>
0082         <IncludeRules context="FindStatement"/>
0083 
0084         <IncludeRules context="FindBareWord"/>
0085       </context>
0086 
0087       <!-- BEGIN Finders -->
0088       <context name="FindString" attribute="Normal Text" lineEndContext="#stay">
0089         <DetectChar attribute="String" char="'" context="string single"/>
0090         <DetectChar attribute="String" char="&quot;" context="string double"/>
0091       </context>
0092 
0093       <context name="FindComment" attribute="Comment" lineEndContext="#stay">
0094         <StringDetect attribute="Region Marker" String="#BEGIN" beginRegion="region marker" firstNonSpace="true" context="region marker"/>
0095         <StringDetect attribute="Region Marker" String="#END" endRegion="region marker" firstNonSpace="true" context="region marker"/>
0096         <DetectChar attribute="Comment" char="#" context="comment"/>
0097         <Detect2Chars attribute="Comment" char="/" char1="*" beginRegion="comment" context="multiline comment"/>
0098       </context>
0099 
0100       <context name="FindVariable" attribute="Variable" lineEndContext="#pop">
0101         <RegExpr String="\$(::)?(&namespace;::)*[a-z]" lookAhead="true" context="variable"/>
0102       </context>
0103 
0104       <context name="FindStatement" attribute="Normal Text" lineEndContext="#pop">
0105         <RegExpr attribute="Function" String="&BareWord;" context="statement" firstNonSpace="true"/>
0106       </context>
0107 
0108       <context name="FindFunction" attribute="Normal Text" lineEndContext="#pop">
0109         <RegExpr String="&BareWord;\s*\(" lookAhead="true" context="function"/>
0110       </context>
0111 
0112       <context name="FindResource" attribute="Normal Text" lineEndContext="#pop">
0113         <RegExpr String="@?@?(::)?(&BareWord;::)*&BareWord;\s*\{" lookAhead="true" context="resource"/>
0114       </context>
0115 
0116       <context name="FindResourceReference" attribute="Normal Text" lineEndContext="#pop">
0117         <RegExpr String="(::)?(&CapWord;::)*&CapWord;\s*\[" lookAhead="true" context="res_ref"/>
0118       </context>
0119 
0120       <context name="FindResourceDefaults" attribute="Normal Text" lineEndContext="#pop">
0121         <RegExpr String="(::)?(&CapWord;::)*&CapWord;\s*\{" lookAhead="true" context="res_defaults"/>
0122       </context>
0123 
0124       <context name="FindOperator" attribute="Operator" lineEndContext="#pop" >
0125         <keyword attribute="Operator" String="operators" context="#stay"/>
0126         <Detect2Chars attribute="Operator" char="!" char1="=" context="#stay"/>
0127         <Detect2Chars attribute="Operator" char="+" char1="=" context="#stay"/>
0128         <Detect2Chars attribute="Operator" char="&lt;" char1="&lt;" context="#stay"/>
0129         <Detect2Chars attribute="Operator" char="&gt;" char1="&gt;" context="#stay"/>
0130         <Detect2Chars attribute="Operator" char="=" char1="=" context="#stay"/>
0131         <Detect2Chars attribute="Operator" char="&gt;" char1="=" context="#stay"/>
0132         <Detect2Chars attribute="Operator" char="&lt;" char1="=" context="#stay"/>
0133         <Detect2Chars attribute="Operator" char="=" char1="~" context="regexp operators"/>
0134         <Detect2Chars attribute="Operator" char="!" char1="~" context="regexp operators"/>
0135         <Detect2Chars attribute="Operator" char="-" char1="&gt;" context="#stay"/>
0136         <Detect2Chars attribute="Operator" char="~" char1="&gt;" context="#stay"/>
0137         <AnyChar attribute="Operator" String="!*/-+&gt;&lt;" context="#stay"/>
0138         <DetectChar attribute="Operator" char="?" context="selector"/>
0139       </context>
0140 
0141       <context name="FindResourcePath" attribute="Normal Text" lineEndContext="#pop">
0142         <RegExpr String="(&BareWord;)?::[a-z]" lookAhead="true" context="resource path"/>
0143       </context>
0144 
0145       <context name="FindBareWord" attribute="Normal Text" lineEndContext="#pop">
0146         <RegExpr attribute="String" String="&BareWord;" context="#stay"/>
0147       </context>
0148 
0149       <context name="FindArray" attribute="Normal Text" lineEndContext="#stay">
0150         <DetectChar char="[" context="array"/>
0151       </context>
0152 
0153       <context name="FindHash" attribute="Normal Text" lineEndContext="#stay">
0154         <DetectChar char="{" lookAhead="true" context="hash"/>
0155       </context>
0156 
0157       <context name="FindClass" attribute="Normal Text" lineEndContext="#stay">
0158         <WordDetect attribute="Keyword" String="class" context="class def"/>
0159       </context>
0160 
0161       <context name="FindNode" attribute="Normal Text" lineEndContext="#stay">
0162         <WordDetect attribute="Keyword" String="node" context="node def"/>
0163       </context>
0164 
0165       <context name="FindDefine" attribute="Normal Text" lineEndContext="#stay">
0166         <WordDetect attribute="Keyword" String="define" context="resource definition"/>
0167       </context>
0168 
0169       <context name="FindCollector" attribute="Normal Text" lineEndContext="#stay">
0170         <RegExpr String="(::)?(&CapWord;::)*&CapWord;\s*&lt;\|" lookAhead="true" context="collector"/>
0171       </context>
0172 
0173       <context name="FindExportedCollector" attribute="Normal Text" lineEndContext="#stay">
0174         <RegExpr String="(::)?(&CapWord;::)*&CapWord;\s*&lt;&lt;\|" lookAhead="true" context="exported collector"/>
0175       </context>
0176 
0177       <context name="FindUnless" attribute="Normal Text" lineEndContext="#stay">
0178         <WordDetect attribute="Keyword" String="unless" context="unless"/>
0179       </context>
0180 
0181       <context name="FindIf" attribute="Normal Text" lineEndContext="#stay">
0182         <WordDetect attribute="Keyword" String="if" context="if"/>
0183       </context>
0184 
0185       <context name="FindCase" attribute="Normal Text" lineEndContext="#stay">
0186         <WordDetect attribute="Keyword" String="case" context="case"/>
0187       </context>
0188 
0189       <context name="FindRegExp" attribute="Normal Text" lineEndContext="#pop">
0190         <RegExpr attribute="RegExp" String="/[^/]*[^\\/]/" context="#stay"/>
0191       </context>
0192       <!-- END Finders -->
0193 
0194       <!-- BEGIN Strings -->
0195       <context name="string single" attribute="String" lineEndContext="#stay">
0196         <DetectChar attribute="String" char="'" context="#pop"/>
0197       </context>
0198 
0199       <context name="string double" attribute="String" lineEndContext="#stay">
0200         <DetectChar attribute="Escape" char="\" context="escapes"/>
0201         <Detect2Chars char="$" char1="{" lookAhead="true" context="string code block"/>
0202         <RegExpr attribute="Variable" String="\$&BareWord;" context="#stay"/>
0203         <DetectChar attribute="String" char="&quot;" context="#pop"/>
0204       </context>
0205 
0206       <context name="string code block" attribute="Variable" fallthrough="true" fallthroughContext="#pop" lineEndContext="#stay">
0207         <Detect2Chars attribute="Variable" char="$" char1="{" context="#stay"/>
0208         <RegExpr attribute="Variable" String="&namespace;" context="#stay"/>
0209         <Detect2Chars attribute="Normal Text" char=":" char1=":" context="#stay"/>
0210         <RegExpr attribute="Variable" String="&BareWord;" context="#stay"/>
0211         <DetectChar attribute="Variable" char="}" context="#pop"/>
0212       </context>
0213 
0214       <context name="escapes" attribute="Escape" fallthrough="true" fallthroughContext="#pop" lineEndContext="#pop">
0215         <AnyChar attribute="Escape" String="$&quot;'\nrts" context="#pop"/>
0216       </context>
0217       <!-- END Strings -->
0218 
0219       <!-- BEGIN RegExp -->
0220       <context name="regexp operators" attribute="RegExp" lineEndContext="#pop">
0221         <DetectSpaces/>
0222         <RegExpr attribute="RegExp" String="/[^/]*[^\\/]/" context="#pop"/>
0223       </context>
0224       <!-- END RegExp -->
0225 
0226       <!-- BEGIN Comments -->
0227       <context name="comment" attribute="Comment" lineEndContext="#pop">
0228         <DetectSpaces />
0229         <IncludeRules context="##Comments"/>
0230       </context>
0231 
0232       <context name="multiline comment" attribute="Comment" lineEndContext="#stay">
0233         <DetectSpaces/>
0234         <Detect2Chars attribute="Comment" char="*" char1="/" endRegion="comment" context="#pop"/>
0235         <IncludeRules context="##Comments"/>
0236       </context>
0237 
0238       <context name="region marker" attribute="Region Marker" lineEndContext="#pop">
0239       </context>
0240       <!-- END Comments -->
0241 
0242       <!-- BEGIN Function -->
0243       <context name="statement" attribute="Normal Text" lineEndContext="#pop">
0244         <DetectSpaces/>
0245         <LineContinue attribute="Normal Text" char="," context="#stay"/>
0246         <IncludeRules context="parameter values"/>
0247         <DetectChar attribute="String" char="," context="#stay"/>
0248       </context>
0249 
0250       <context name="function" attribute="Normal Text" lineEndContext="#stay">
0251         <DetectSpaces/>
0252         <RegExpr attribute="Function" String="&BareWord;" context="#stay"/>
0253         <DetectChar attribute="Normal Text" char="(" context="function_in"/>
0254         <DetectChar attribute="Normal Text" char=")" context="#pop"/>
0255       </context>
0256 
0257       <context name="function_in" attribute="Normal Text" lineEndContext="#stay">
0258         <DetectSpaces/>
0259         <DetectChar char="," context="#stay"/>
0260         <IncludeRules context="parameter values"/>
0261         <DetectChar char=")" lookAhead="true" context="#pop"/>
0262       </context>
0263       <!-- END Function -->
0264 
0265       <!-- BEGIN conditions -->
0266       <context name="unless" attribute="Normal Text" lineEndContext="#stay">
0267         <DetectSpaces/>
0268         <IncludeRules context="condition"/>
0269         <DetectChar attribute="Normal Text" char="{" beginRegion="code" context="code block"/>
0270         <DetectChar attribute="Normal Text" char="}" endRegion="code" context="#pop"/>
0271       </context>
0272 
0273       <context name="if" attribute="Normal Text" lineEndContext="#stay">
0274         <DetectSpaces/>
0275         <IncludeRules context="condition"/>
0276         <DetectChar attribute="Normal Text" char="{" beginRegion="code" context="code block"/>
0277         <DetectChar attribute="Normal Text" char="}" endRegion="code"  context="if continues?"/>
0278       </context>
0279 
0280       <context name="if continues?" attribute="Normal Text" fallthrough="true" fallthroughContext="#pop#pop" lineEndContext="#stay">
0281         <DetectSpaces/>
0282         <WordDetect attribute="Keyword" String="else" context="else"/>
0283         <WordDetect attribute="Keyword" String="elsif" context="elsif"/>
0284       </context>
0285 
0286       <context name="elsif" attribute="Normal Text" lineEndContext="#stay">
0287         <DetectSpaces/>
0288         <IncludeRules context="condition"/>
0289         <DetectChar attribute="Normal Text" char="{" beginRegion="code" context="code block"/>
0290         <DetectChar attribute="Normal Text" char="}" endRegion="dode" context="#pop"/>
0291       </context>
0292 
0293       <context name="else" attribute="Normal Text" lineEndContext="#stay">
0294         <DetectSpaces/>
0295         <DetectChar attribute="Normal Text" char="{" beginRegion="code" context="code block"/>
0296         <DetectChar attribute="Normal Text" char="}" endRegion="code" context="#pop#pop#pop"/>
0297       </context>
0298 
0299       <context name="case" attribute="Normal Text" lineEndContext="#stay">
0300         <DetectSpaces/>
0301         <IncludeRules context="FindVariable"/>
0302         <DetectChar attribute="Normal Text" char="{" beginRegion="case" context="case block"/>
0303         <DetectChar attribute="Normal Text" char="}" endRegion="case" context="#pop"/>
0304       </context>
0305 
0306       <context name="case block" attribute="Normal Text" lineEndContext="#stay">
0307         <DetectSpaces/>
0308         <DetectChar attribute="Normal Text" char="," context="#stay"/>
0309         <DetectChar attribute="Operator" char=":" context="case value"/>
0310         <Int attribute="Number" context="#stay" />
0311         <WordDetect attribute="Keyword" String="default" context="#stay"/>
0312         <IncludeRules context="FindString"/>
0313         <IncludeRules context="FindComment"/>
0314         <IncludeRules context="FindRegExp"/>
0315         <IncludeRules context="FindFunction"/>
0316         <IncludeRules context="FindBareWord"/>
0317         <DetectChar char="}" lookAhead="true" context="#pop"/>
0318       </context>
0319 
0320       <context name="case value" attribute="Normal Text" lineEndContext="#stay">
0321         <DetectSpaces/>
0322         <DetectChar attribute="Normal Text" char="{" beginRegion="code" context="code block"/>
0323         <DetectChar attribute="Normal Text" char="}" endRegion="code" context="#pop"/>
0324       </context>
0325 
0326       <context name="selector" attribute="Normal Text" lineEndContext="#stay">
0327         <DetectSpaces/>
0328         <DetectChar attribute="Normal Text" char="{" beginRegion="selector" context="selector block"/>
0329         <DetectChar attribute="Normal Text" char="}" endRegion="selector" context="#pop"/>
0330       </context>
0331 
0332       <context name="selector block" attribute="Normal Text" lineEndContext="#stay">
0333         <DetectSpaces/>
0334         <Detect2Chars attribute="Operator" char="=" char1="&gt;" context="selector value"/>
0335         <Int attribute="Number" context="#stay" />
0336         <WordDetect attribute="Keyword" String="default" context="#stay"/>
0337         <IncludeRules context="FindString"/>
0338         <IncludeRules context="FindComment"/>
0339         <IncludeRules context="FindRegExp"/>
0340         <IncludeRules context="FindFunction"/>
0341         <IncludeRules context="FindBareWord"/>
0342         <DetectChar char="}" lookAhead="true" context="#pop"/>
0343       </context>
0344 
0345       <context name="selector value" attribute="Normal Text" lineEndContext="#pop">
0346         <IncludeRules context="parameter values"/>
0347         <DetectChar attribute="Normal Text" char="," context="#pop"/>
0348         <DetectChar char="}" lookAhead="true" context="#pop"/>
0349       </context>
0350 
0351       <context name="code block" attribute="Normal Text" lineEndContext="#stay">
0352         <IncludeRules context="common"/>
0353         <DetectChar char="}" lookAhead="true" context="#pop"/>
0354       </context>
0355       <!-- END conditions -->
0356 
0357       <context name="variable" attribute="Normal Text" fallthrough="true" fallthroughContext="#pop" lineEndContext="#pop">
0358         <DetectChar attribute="Variable" char="$" context="#stay"/>
0359         <RegExpr attribute="Variable" String="&namespace;" context="#stay"/>
0360         <Detect2Chars attribute="Normal Text" char=":" char1=":" context="#stay"/>
0361         <RegExpr attribute="Variable" String="&BareWord;" context="#pop"/>
0362       </context>
0363 
0364       <context name="array" attribute="Normal Text" lineEndContext="#stay">
0365         <IncludeRules context="list content"/>
0366         <DetectChar attribute="Normal Text" char="]" context="#pop"/>
0367       </context>
0368 
0369       <!-- BEGIN Hash -->
0370       <context name="hash" attribute="Normal Text" lineEndContext="#stay">
0371         <DetectChar attribute="Normal Text" char="{" beginRegion="hash" context="hash list"/>
0372         <DetectChar attribute="Normal Text" char="}" endRegion="hash" context="#pop"/>
0373       </context>
0374 
0375       <context name="hash list" attribute="Normal Text" lineEndContext="#stay">
0376         <Detect2Chars attribute="AttributeOp" char="=" char1="&gt;" context="#stay"/>
0377         <DetectChar attribute="Normal Text" char="," context="#stay"/>
0378         <IncludeRules context="hash keys"/>
0379         <IncludeRules context="parameter values"/>
0380         <DetectChar char="}" lookAhead="true" context="#pop"/>
0381       </context>
0382       <!-- END Hash -->
0383 
0384       <!-- BEGIN Node -->
0385       <context name="node def" attribute="Normal Text" lineEndContext="#stay">
0386         <!-- TODO: need a regular expresion here, order is random and seems that Class is not allowed in node(?) -->
0387         <DetectSpaces/>
0388         <IncludeRules context="FindString"/>
0389         <IncludeRules context="FindRegExp"/>
0390         <StringDetect attribute="Keyword" String="inherits" context="#stay"/>
0391         <StringDetect attribute="Keyword" String="default" context="#stay"/>
0392         <RegExpr attribute="Node" String="&namespace;" context="#stay"/>
0393         <DetectChar char="{" lookAhead="true" context="node in open"/>
0394       </context>
0395 
0396       <context name="node in open" attribute="Normal Text" lineEndContext="#stay">
0397         <DetectChar attribute="Normal Text" char="{" beginRegion="node" context="node in"/>
0398         <DetectChar attribute="Normal Text" char="}" endRegion="node" context="#pop#pop"/>
0399       </context>
0400 
0401       <context name="node in" attribute="Normal Text" lineEndContext="#stay">
0402         <IncludeRules context="common"/>
0403         <DetectChar char="}" lookAhead="true" context="#pop"/>
0404       </context>
0405       <!-- END Node -->
0406 
0407       <!-- BEGIN Class -->
0408       <context name="class def" attribute="Normal Text" lineEndContext="#stay">
0409         <!-- TODO: be more strict here -->
0410         <DetectSpaces/>
0411         <StringDetect attribute="Keyword" String="inherits" context="#stay"/>
0412         <RegExpr attribute="Class" String="&namespace;" context="#stay"/>
0413         <Detect2Chars attribute="Normal Text" char=":" char1=":" context="#stay"/>
0414         <DetectChar char="(" context="class params"/>
0415         <DetectChar attribute="Normal Text" char="{" beginRegion="class" context="class in"/>
0416         <DetectChar attribute="Normal Text" char="}" endRegion="class" context="#pop"/>
0417       </context>
0418 
0419       <context name="class params" attribute="Normal Text" lineEndContext="#stay">
0420         <!-- TODO: be more strict here -->
0421         <DetectSpaces/>
0422         <AnyChar String="=," context="#stay"/>
0423         <IncludeRules context="FindVariable"/>
0424         <IncludeRules context="parameter values"/>
0425         <DetectChar char=")" context="#pop"/>
0426       </context>
0427 
0428       <context name="class in" attribute="Normal Text" lineEndContext="#stay">
0429         <IncludeRules context="common"/>
0430         <DetectChar char="}" lookAhead="true" context="#pop"/>
0431       </context>
0432       <!-- END Class -->
0433 
0434       <!-- BEGIN Resource -->
0435       <context name="resource" attribute="Normal Text" lineEndContext="#stay">
0436         <DetectSpaces/>
0437         <DetectChar attribute="Resource" char="@" context="#stay"/>
0438         <RegExpr attribute="Resource" String="&BareWord;" context="#stay"/>
0439         <Detect2Chars attribute="Normal Text" char=":" char1=":" context="#stay"/>
0440         <DetectChar attribute="Normal Text" char="{" beginRegion="resource" context="resource_in"/>
0441         <DetectChar attribute="Normal Text" char="}" endRegion="resource" context="#pop"/>
0442       </context>
0443 
0444       <context name="resource_in" attribute="Normal Text" lineEndContext="#stay">
0445         <DetectSpaces/>
0446         <IncludeRules context="FindString"/>
0447         <IncludeRules context="FindVariable"/>
0448         <IncludeRules context="FindComment"/>
0449         <IncludeRules context="FindArray"/>
0450         <IncludeRules context="FindBareWord"/>
0451         <DetectChar attribute="Operator" char=":" context="resource_attrs"/>
0452         <DetectChar char="}" lookAhead="true" context="#pop"/>
0453       </context>
0454 
0455       <context name="resource_attrs" attribute="Normal Text" lineEndContext="#stay">
0456         <DetectSpaces/>
0457         <RegExpr attribute="Attribute Name" String="&BareWord;" context="resource_attr"/>
0458         <IncludeRules context="FindComment"/>
0459         <DetectChar char="}" lookAhead="true" context="#pop"/>
0460       </context>
0461 
0462       <context name="resource_attr" attribute="Normal Text" lineEndContext="#stay">
0463         <DetectSpaces/>
0464         <IncludeRules context="FindComment"/>
0465         <Detect2Chars attribute="AttributeOp" char="=" char1="&gt;" context="resource_attr_val"/>
0466         <DetectChar char="}" lookAhead="true" context="#pop"/>
0467       </context>
0468 
0469       <context name="resource_attr_val" attribute="Normal Text" lineEndContext="#stay">
0470         <IncludeRules context="parameter values"/>
0471         <DetectChar attribute="Normal Text" char="," context="#pop#pop"/>
0472         <DetectChar attribute="Normal Text" char=";" context="#pop#pop#pop"/>
0473         <DetectChar char="}" lookAhead="true" context="#pop"/>
0474       </context>
0475       <!-- END Resource -->
0476 
0477       <!-- BEGIN Resource Reference -->
0478       <context name="res_ref" attribute="Normal Text" lineEndContext="#stay">
0479         <DetectSpaces/>
0480         <RegExpr attribute="ResourceReference" String="&CapWord;" context="#stay"/>
0481         <Detect2Chars attribute="Normal Text" char=":" char1=":" context="#stay"/>
0482         <DetectChar attribute="Normal Text" char="[" context="res_ref_titles"/>
0483       </context>
0484 
0485       <context name="res_ref_titles" attribute="Normal Text" lineEndContext="#stay">
0486         <IncludeRules context="list content"/>
0487         <DetectChar attribute="Normal Text" char="]" context="res_ref_params_opt"/>
0488       </context>
0489 
0490       <context name="res_ref_params_opt" attribute="Normal Text" fallthrough="true" fallthroughContext="#pop#pop#pop" lineEndContext="#stay">
0491         <DetectSpaces/>
0492         <DetectChar attribute="Normal Text" char="{" beginRegion="res ref" context="res_ref_params"/>
0493       </context>
0494 
0495       <context name="res_ref_params" attribute="Normal Text" lineEndContext="#stay">
0496         <DetectSpaces/>
0497         <RegExpr attribute="Attribute Name" String="&BareWord;" context="res_ref_param"/>
0498         <IncludeRules context="FindComment"/>
0499         <DetectChar attribute="Normal Text" char="}" endRegion="res ref" context="#pop#pop#pop#pop"/>
0500       </context>
0501 
0502       <context name="res_ref_param" attribute="Normal Text" lineEndContext="#stay">
0503         <DetectSpaces/>
0504         <IncludeRules context="FindComment"/>
0505         <Detect2Chars attribute="AttributeOp" char="=" char1="&gt;" context="res_ref_param_val"/>
0506         <Detect2Chars attribute="AttributeOp" char="+" char1="&gt;" context="res_ref_param_val"/>
0507         <DetectChar char="}" lookAhead="true" context="#pop"/>
0508       </context>
0509 
0510       <context name="res_ref_param_val" attribute="Normal Text" lineEndContext="#stay">
0511         <IncludeRules context="parameter values"/>
0512         <DetectChar attribute="Normal Text" char="," context="#pop#pop"/>
0513         <DetectChar char="}" lookAhead="true" context="#pop"/>
0514       </context>
0515       <!-- END Resource Reference -->
0516 
0517       <!-- BEGIN Resource Defaults -->
0518       <context name="res_defaults" attribute="Normal Text" lineEndContext="#stay">
0519         <DetectSpaces/>
0520         <RegExpr attribute="ResourceReference" String="&CapWord;" context="#stay"/>
0521         <Detect2Chars attribute="Normal Text" char=":" char1=":" context="#stay"/>
0522         <DetectChar attribute="Normal Text" char="{" beginRegion="res defs" context="res_defaults_params"/>
0523         <DetectChar attribute="Normal Text" char="}" endRegion="res defs" context="#pop"/>
0524       </context>
0525 
0526       <context name="res_defaults_params" attribute="Normal Text" lineEndContext="#stay">
0527         <DetectSpaces/>
0528         <IncludeRules context="FindComment"/>
0529         <RegExpr attribute="Attribute Name" String="&BareWord;" context="res_defaults_param"/>
0530         <DetectChar char="}" lookAhead="true" context="#pop"/>
0531       </context>
0532 
0533       <context name="res_defaults_param" attribute="Normal Text" lineEndContext="#stay">
0534         <DetectSpaces/>
0535         <IncludeRules context="FindComment"/>
0536         <Detect2Chars attribute="AttributeOp" char="=" char1="&gt;" context="res_defaults_param_val"/>
0537         <DetectChar char="}" lookAhead="true" context="#pop"/>
0538       </context>
0539 
0540       <context name="res_defaults_param_val" attribute="Normal Text" lineEndContext="#stay">
0541         <IncludeRules context="parameter values"/>
0542         <DetectChar attribute="Normal Text" char="," context="#pop#pop"/>
0543         <DetectChar char="}" lookAhead="true" context="#pop"/>
0544       </context>
0545       <!-- END Resource Defaults -->
0546 
0547       <!-- BEGIN Collector -->
0548       <context name="collector" attribute="Normal Text" lineEndContext="#stay">
0549         <DetectSpaces/>
0550         <RegExpr attribute="Collector" String="&CapWord;" context="#stay"/>
0551         <Detect2Chars attribute="Normal Text" char=":" char1=":" context="#stay"/>
0552         <Detect2Chars attribute="Normal Text" char="&lt;" char1="|" context="collector in"/>
0553         <Detect2Chars attribute="Normal Text" char="|" char1="&gt;" context="#pop"/>
0554       </context>
0555 
0556       <context name="collector in" attribute="Normal Text" lineEndContext="#stay">
0557         <IncludeRules context="collector content"/>
0558         <Detect2Chars char="|" char1="&gt;" lookAhead="true" context="#pop"/>
0559       </context>
0560       <!-- END Collector -->
0561 
0562       <!-- BEGIN Exported Collector -->
0563       <context name="exported collector" attribute="Normal Text" lineEndContext="#stay">
0564         <DetectSpaces/>
0565         <RegExpr attribute="Collector" String="&CapWord;" context="#stay"/>
0566         <Detect2Chars attribute="Normal Text" char=":" char1=":" context="#stay"/>
0567         <StringDetect attribute="Normal Text" String="&lt;&lt;|" context="exported collector in"/>
0568         <StringDetect attribute="Normal Text" String="|&gt;&gt;" context="#pop"/>
0569       </context>
0570 
0571       <context name="exported collector in" attribute="Normal Text" lineEndContext="#stay">
0572         <IncludeRules context="collector content"/>
0573         <StringDetect String="|&gt;&gt;" lookAhead="true" context="#pop"/>
0574       </context>
0575       <!-- END Exported Collector -->
0576 
0577       <context name="resource path" attribute="Normal Text" fallthrough="true" fallthroughContext="#pop" lineEndContext="#pop">
0578         <DetectSpaces/>
0579         <RegExpr attribute="Resource" String="&BareWord;" context="#stay"/>
0580         <Detect2Chars attribute="Normal Text" char=":" char1=":" context="#stay"/>
0581       </context>
0582 
0583       <!-- BEGIN define -->
0584       <context name="resource definition" attribute="Normal Text" lineEndContext="#stay">
0585         <!-- TODO: be more strict here -->
0586         <DetectSpaces/>
0587         <StringDetect attribute="Keyword" String="inherits" context="#stay"/>
0588         <RegExpr attribute="Class" String="&namespace;" context="#stay"/>
0589         <Detect2Chars attribute="Normal Text" char=":" char1=":" context="#stay"/>
0590         <DetectChar char="(" context="define params"/>
0591         <DetectChar attribute="Normal Text" char="{" beginRegion="define" context="define in"/>
0592         <DetectChar attribute="Normal Text" char="}" endRegion="define" context="#pop"/>
0593       </context>
0594 
0595       <context name="define params" attribute="Normal Text" lineEndContext="#stay">
0596         <DetectSpaces/>
0597         <AnyChar String="=," context="#stay"/>
0598         <IncludeRules context="FindVariable"/>
0599         <IncludeRules context="parameter values"/>
0600         <DetectChar char=")" context="#pop"/>
0601       </context>
0602 
0603       <context name="define in" attribute="Normal Text" lineEndContext="#stay">
0604         <IncludeRules context="common"/>
0605         <DetectChar char="}" lookAhead="true" context="#pop"/>
0606       </context>
0607       <!-- END define -->
0608 
0609       <!-- BEGIN Contents -->
0610       <context name="list content" attribute="Normal Text" lineEndContext="#stay">
0611         <DetectSpaces/>
0612         <IncludeRules context="FindString"/>
0613         <IncludeRules context="FindVariable"/>
0614         <IncludeRules context="FindOperator"/>
0615         <Int attribute="Number" context="#stay"/>
0616         <IncludeRules context="FindResourceReference"/>
0617         <IncludeRules context="FindFunction"/>
0618         <IncludeRules context="FindBareWord"/>
0619         <DetectChar char="," context="#stay"/>
0620       </context>
0621 
0622       <context name="parameter values" attribute="Normal Text" lineEndContext="#stay">
0623         <DetectSpaces/>
0624         <IncludeRules context="FindString"/>
0625         <IncludeRules context="FindComment"/>
0626         <IncludeRules context="FindOperator"/>
0627         <keyword attribute="Keyword" String="keywords" context="#stay"/>
0628         <Int attribute="Number" context="#stay"/>
0629         <IncludeRules context="FindVariable"/>
0630         <IncludeRules context="FindResourceReference"/>
0631         <IncludeRules context="FindArray"/>
0632         <IncludeRules context="FindFunction"/>
0633         <IncludeRules context="FindResourcePath"/>
0634         <IncludeRules context="FindBareWord"/>
0635       </context>
0636 
0637       <context name="hash keys" attribute="Normal Text" lineEndContext="#stay">
0638         <DetectSpaces/>
0639         <IncludeRules context="FindString"/>
0640         <IncludeRules context="FindComment"/>
0641         <Int attribute="Number" context="#stay"/>
0642         <IncludeRules context="FindBareWord"/>
0643       </context>
0644 
0645       <context name="collector content" attribute="Normal Text" lineEndContext="#stay">
0646         <DetectSpaces/>
0647         <keyword attribute="Operator" String="collector operators" context="#stay"/>
0648         <Detect2Chars attribute="Operator" char="=" char1="=" context="#stay"/>
0649         <Detect2Chars attribute="Operator" char="!" char1="=" context="#stay"/>
0650         <IncludeRules context="FindString"/>
0651         <Int attribute="Number" context="#stay"/>
0652         <IncludeRules context="FindComment"/>
0653         <IncludeRules context="FindBareWord"/>
0654       </context>
0655 
0656       <context name="condition" attribute="Normal Text" lineEndContext="#stay">
0657         <IncludeRules context="FindComment"/>
0658         <IncludeRules context="FindString"/>
0659         <IncludeRules context="FindOperator"/>
0660         <Int attribute="Number" context="#stay" />
0661         <keyword attribute="Keyword" String="keywords" context="#stay"/>
0662         <IncludeRules context="FindVariable"/>
0663         <IncludeRules context="FindResourceReference"/>
0664         <IncludeRules context="FindArray"/>
0665         <IncludeRules context="FindFunction"/>
0666         <IncludeRules context="FindBareWord"/>
0667       </context>
0668 
0669       <!-- END Contents -->
0670     </contexts>
0671     <itemDatas>
0672       <itemData name="Normal Text" defStyleNum="dsNormal" spellChecking="false"/>
0673       <itemData name="Comment" defStyleNum="dsComment"/>
0674       <itemData name="String" defStyleNum="dsString"/>
0675       <itemData name="Escape" defStyleNum="dsFloat"/>
0676       <itemData name="RegExp" defStyleNum="dsOthers" />
0677       <itemData name="Keyword" defStyleNum="dsKeyword" spellChecking="false"/>
0678       <itemData name="Variable" defStyleNum="dsChar" spellChecking="false"/>
0679       <itemData name="Number" defStyleNum="dsDecVal" spellChecking="false"/>
0680       <itemData name="Function" defStyleNum="dsFunction" spellChecking="false"/>
0681       <itemData name="Operator" defStyleNum="dsOthers" spellChecking="false"/>
0682 
0683       <itemData name="Attribute Name" defStyleNum="dsKeyword" italic="true" bold="false" spellChecking="false"/>
0684       <itemData name="AttributeOp" defStyleNum="dsOthers" spellChecking="false"/>
0685 
0686       <itemData name="Node" defStyleNum="dsDataType" spellChecking="false"/>
0687       <itemData name="Class" defStyleNum="dsOthers" spellChecking="false"/>
0688       <itemData name="Resource" defStyleNum="dsDataType" spellChecking="false"/>
0689       <itemData name="ResourceReference" defStyleNum="dsOthers" spellChecking="false"/>
0690       <itemData name="Collector" defStyleNum="dsOthers" spellChecking="false"/>
0691       <itemData name="Region Marker" defStyleNum="dsRegionMarker" spellChecking="false"/>
0692     </itemDatas>
0693   </highlighting>
0694   <general>
0695     <comments>
0696       <comment name="singleLine" start="#"/>
0697       <comment name="multiLine" start="/*" end="*/" region="comment"/>
0698     </comments>
0699     <keywords casesensitive="1" />
0700   </general>
0701 </language>
0702 <!-- kate: replace-tabs on; tab-width 2; indent-width 2; -->