Warning, /frameworks/syntax-highlighting/data/syntax/selinux-cil.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 symbol         "\w\[\]\.@\=/\*\-&#036;&#037;\+&#033;\|&amp;\^&#058;&#126;&#096;#\{\}&#039;&lt;&gt;\?,\\"> <!-- [].@=/*-_$%+!|&^:~`#{}'<>?,\ -->
0005         <!ENTITY identifier     "[a-zA-Z][\w\-]*">
0006         <!ENTITY statementchar  "[a-z_\-]">
0007 
0008         <!ENTITY fullIdentifier "[a-zA-Z][\w\-]*(?:\.?[\w\-])*">
0009         <!ENTITY mlsLevel       "&fullIdentifier;(?:\:&fullIdentifier;(?:\s*,\s*&fullIdentifier;)*)?">
0010 ]>
0011 
0012 <!--
0013    SELinux CIL (Common Interface Language) Policy Syntax Highlighting Definition
0014   ===============================================================================
0015 
0016    This file is part of the KDE's KSyntaxHighlighting framework.
0017 
0018    SPDX-FileCopyrightText: 2018-2020 Nibaldo González S. <nibgonz@gmail.com>
0019 
0020    SPDX-License-Identifier: MIT
0021 
0022   ===============================================================================
0023 
0024   Based on the Scheme syntax highlighting file (scheme.xml),
0025   created by Dominik Haumann (dhaumann@kde.org).
0026 
0027   Last update: secilc 3.0
0028   More details about CIL:
0029     https://github.com/SELinuxProject/selinux/tree/master/secilc/docs
0030 
0031   Change log:
0032    * Version 7 [30-Sep-2020]: Use include-keywods and other minor changes.
0033    * Version 6 [25-Aug-2020]: Update colors in brackets.
0034    * Version 5 [10-Dec-2019]: Add "glblub" keyword (defaultrange).
0035    * Version 4 [03-Oct-2019]: Replace unnecessary WordDetect rules.
0036    * Version 3 [02-Apr-2019]: Remove one indentation.
0037    * Version 2 [28-Aug-2018]:
0038       - Implement "selinux.xml": some rules and keywords are moved there. Improve RegExp
0039         highlighting, add Android permissions and BPF permissions, improve IPv6
0040         detection and others improvements.
0041       - Fix permissions list in "ioctl" kind and "call" statements.
0042       - Add "sctp" protocol keyword and policy capabilities keywords.
0043    * Version 1 [26-Jan-2018, by Nibaldo González]:
0044       - Initial version.
0045 -->
0046 
0047 <language name="SELinux CIL Policy"
0048           version="10"
0049           kateversion="5.53"
0050           section="Sources"
0051           extensions="*.cil"
0052           priority="9"
0053           mimetype=""
0054           author="Nibaldo González (nibgonz@gmail.com)"
0055           license="MIT">
0056 
0057 <highlighting>
0058 
0059         <list name="expr_keys">
0060                 <item>and</item>
0061                 <item>or</item>
0062                 <item>xor</item>
0063                 <item>not</item>
0064                 <item>all</item>
0065                 <item>eq</item>
0066                 <item>ne</item>
0067                 <item>neq</item>
0068                 <item>dom</item>
0069                 <item>domby</item>
0070                 <item>incomp</item>
0071                 <item>range</item>
0072         </list>
0073 
0074         <!-- Access Vector Rules -->
0075         <list name="access">
0076                 <item>allow</item>
0077                 <item>auditallow</item>
0078                 <item>dontaudit</item>
0079                 <item>neverallow</item>
0080                 <item>auditdeny</item>
0081                 <item>allowx</item>
0082                 <item>auditallowx</item>
0083                 <item>dontauditx</item>
0084                 <item>neverallowx</item>
0085         </list>
0086 
0087         <list name="booleans">
0088                 <item>true</item>
0089                 <item>false</item>
0090         </list>
0091 
0092         <list name="file_types">
0093                 <item>file</item>
0094                 <item>dir</item>
0095                 <item>char</item>
0096                 <item>block</item>
0097                 <item>socket</item>
0098                 <item>pipe</item>
0099                 <item>symlink</item>
0100                 <item>any</item>
0101         </list>
0102         <list name="fs_types">
0103                 <item>task</item>
0104                 <item>trans</item>
0105                 <item>xattr</item>
0106         </list>
0107         <list name="protocols">
0108                 <item>tcp</item>
0109                 <item>udp</item>
0110                 <item>dccp</item>
0111                 <item>sctp</item>
0112         </list>
0113 
0114         <list name="special_keys">
0115                 <item>self</item>
0116         </list>
0117         <list name="classorder_keys">
0118                 <item>unordered</item>
0119         </list>
0120         <list name="handleunknown_keys">
0121                 <item>allow</item>
0122                 <item>deny</item>
0123                 <item>reject</item>
0124         </list>
0125 
0126         <list name="type_statements">
0127                 <item>block</item>
0128                 <item>optional</item>
0129                 <item>common</item>
0130                 <item>class</item>
0131                 <item>classmap</item>
0132                 <item>classmapping</item>
0133                 <item>sid</item>
0134                 <item>user</item>
0135                 <item>role</item>
0136                 <item>roleattribute</item>
0137                 <item>type</item>
0138                 <item>classpermission</item>
0139                 <item>typeattribute</item>
0140                 <item>typealias</item>
0141                 <item>tunable</item>
0142                 <item>sensitivity</item>
0143                 <item>sensitivityalias</item>
0144                 <item>category</item>
0145                 <item>categoryalias</item>
0146                 <item>categoryset</item>
0147                 <item>level</item>
0148                 <item>levelrange</item>
0149                 <item>context</item>
0150                 <item>ipaddr</item>
0151                 <item>macro</item>
0152                 <item>boolean</item>
0153                 <!-- policycap, classpermissionset -->
0154         </list>
0155         <list name="policy_config_statements">
0156                 <item>policycap</item>
0157                 <item>mls</item>
0158                 <item>handleunknown</item>
0159         </list>
0160         <list name="statements">
0161                 <!-- Container Statements.
0162                      Also: block, optional, macro -->
0163                 <item>blockabstract</item>
0164                 <item>blockinherit</item>
0165                 <item>in</item>
0166                 <item>call</item>
0167 
0168                 <!-- Default Object Statements -->
0169                 <item>defaultuser</item>
0170                 <item>defaultrole</item>
0171                 <item>defaulttype</item>
0172                 <item>defaultrange</item>
0173 
0174                 <!-- User Statements.
0175                      Also: user -->
0176                 <item>userrole</item>
0177                 <item>userattribute</item>
0178                 <item>userattributeset</item>
0179                 <item>userlevel</item>
0180                 <item>userrange</item>
0181                 <item>userbounds</item>
0182                 <item>userprefix</item>
0183                 <item>selinuxuser</item>
0184                 <item>selinuxuserdefault</item>
0185 
0186                 <!-- Role Statements.
0187                      Also: role, roleattribute -->
0188                 <item>roletype</item>
0189                 <item>roleattributeset</item>
0190                 <item>roleallow</item>
0191                 <item>roletransition</item>
0192                 <item>rolebounds</item>
0193 
0194                 <!-- Type Statements.
0195                      Also: type, typeattribute, typealias -->
0196                 <item>typealiasactual</item>
0197                 <item>typeattributeset</item>
0198                 <item>typebounds</item>
0199                 <item>typechange</item>
0200                 <item>typemember</item>
0201                 <item>typetransition</item>
0202                 <item>typepermissive</item>
0203                 <item>attributetype</item>
0204 
0205                 <item>expandtypeattribute</item>
0206                 <item>nametypetransition</item>
0207 
0208                 <!-- Class and Permission Statements.
0209                      Also: common, class, classmap, classmapping, classpermission -->
0210                 <item>classcommon</item>
0211                 <item>classorder</item>
0212                 <item>permission</item>
0213                 <item>permissionset</item>
0214                 <item>classpermissionset</item>
0215                 <item>permissionx</item>
0216 
0217                 <!-- Conditional Statements.
0218                      Also: tunable, boolean -->
0219                 <item>booleanif</item>
0220                 <item>tunableif</item>
0221 
0222                 <!-- Constraint Statements -->
0223                 <item>constrain</item>
0224                 <item>validatetrans</item>
0225                 <item>mlsconstrain</item>
0226                 <item>mlsvalidatetrans</item>
0227 
0228                 <!-- Multi-Level Security Labeling Statements.
0229                      Also: sensitivity, sensitivityalias, category, categoryalias, categoryset, level, levelrange -->
0230                 <item>sensitivityaliasactual</item>
0231                 <item>sensitivityorder</item>
0232                 <item>categoryaliasactual</item>
0233                 <item>categoryorder</item>
0234                 <item>sensitivitycategory</item>
0235                 <item>rangetransition</item>
0236                 <item>categoryrange</item>
0237 
0238                 <!-- Context Statement: context -->
0239                 <!-- SID Statements.
0240                      Also: sid -->
0241                 <item>sidorder</item>
0242                 <item>sidcontext</item>
0243 
0244                 <!-- File Labeling Statements -->
0245                 <item>filecon</item>
0246                 <item>fsuse</item>
0247                 <item>genfscon</item>
0248                 <item>fscon</item>
0249                 <item>fsusexattr</item>
0250                 <item>fsusetask</item>
0251                 <item>fsusetrans</item>
0252 
0253                 <!-- Network Labeling Statements.
0254                      Also: ipaddr -->
0255                 <item>netifcon</item>
0256                 <item>nodecon</item>
0257                 <item>portcon</item>
0258                 <!-- ipv4_addr, ipv6_addr -->
0259 
0260                 <!-- Xen Statements -->
0261                 <item>iomemcon</item>
0262                 <item>ioportcon</item>
0263                 <item>pcidevicecon</item>
0264                 <item>pirqcon</item>
0265                 <item>devicetreecon</item>
0266 
0267                 <!-- Infiniband Statements -->
0268                 <item>ibpkeycon</item>
0269                 <item>ibendportcon</item>
0270 
0271                 <!-- Others -->
0272                 <item>dominance</item>
0273                 <item>allowxperm</item>
0274                 <item>auditallowxperm</item>
0275                 <item>dontauditxperm</item>
0276                 <item>neverallowxperm</item>
0277         </list>
0278 
0279         <list name="type_name">
0280                 <item>string</item>
0281                 <item>name</item>
0282                 <item>ioctl</item> <!-- permissionx -->
0283         </list>
0284 
0285         <list name="other_keywords">
0286                 <item>source</item>
0287                 <item>target</item>
0288                 <item>glblub</item> <!-- defaultrange -->
0289                 <item>low</item>
0290                 <item>high</item>
0291                 <item>low-high</item>
0292 
0293                 <item>perm</item>
0294                 <item>object_r</item>
0295                 <item>t1</item>
0296                 <item>t2</item>
0297                 <item>t3</item>
0298                 <item>r1</item>
0299                 <item>r2</item>
0300                 <item>r3</item>
0301                 <item>u1</item>
0302                 <item>u2</item>
0303                 <item>u3</item>
0304                 <item>l1</item>
0305                 <item>l2</item>
0306                 <item>h1</item>
0307                 <item>h2</item>
0308         </list>
0309         <list name="policy_capabilities">
0310                 <include>policy_capabilities##SELinux Policy</include>
0311         </list>
0312         <list name="filesystem">
0313                 <include>filesystem##SELinux Policy</include>
0314         </list>
0315 
0316         <contexts>
0317 
0318                 <context name="_normal" attribute="Normal Text" lineEndContext="#stay">
0319                         <DetectChar context="_rule_bracket_level1" attribute="Brackets Level 1" char="("/>
0320                         <DetectChar context="#stay" attribute="Error"  char=")"/>
0321                         <IncludeRules context="_common"/>
0322                         <IncludeRules context="_identifiers"/>
0323                 </context>
0324                 <context name="_common" attribute="Normal Text" lineEndContext="#stay">
0325                         <DetectChar context="_comment" attribute="Comment" char=";"/>
0326                         <DetectChar context="_quoted" attribute="Text Quoted" char="&quot;"/>
0327                         <DetectChar context="_path_content" attribute="Path" char="/"/>
0328 
0329                         <!-- IP Address -->
0330                         <IncludeRules context="_ip_addr##SELinux Policy"/>
0331                         <!-- Special Characters -->
0332                         <DetectChar context="#stay" attribute="Special Char" char="*"/>
0333 
0334                         <!-- File Contexts: user_u:role_r:type_t:s0:c0 -->
0335                         <RegExpr context="_file_contexts" attribute="File Contexts" String="\b&fullIdentifier;(?:\:&fullIdentifier;){2}(?:\:&mlsLevel;(?:\s*\-\s*&mlsLevel;)?)?(?:[^&symbol;:]|\s|$)" lookAhead="true"/>
0336                         <!-- Global Namespace (this avoids highlighting keywords) -->
0337                         <RegExpr context="#stay" String="(?:\b&identifier;)?(?:\.&identifier;)+(?=\s|[^&symbol;]|$)"/>
0338 
0339                         <!-- Numbers -->
0340                         <HlCHex context="#stay" attribute="Hexadecimal"/>
0341                         <Float context="#stay" attribute="Number"/>
0342                         <Int context="#stay" attribute="Number"/>
0343                 </context>
0344                 <context name="_identifiers" attribute="Normal Text" lineEndContext="#stay">
0345                         <!-- Avoid highlighting numbers in identifiers.
0346                              IMPORTANT: Do not put this rule before the keywords! -->
0347                         <RegExpr context="#stay" String="&identifier;"/>
0348                 </context>
0349 
0350                 <context name="_comment" attribute="Comment" lineEndContext="#pop">
0351                         <DetectSpaces />
0352                         <LineContinue context="#pop" attribute="Comment"/>
0353                         <IncludeRules context="##Comments"/>
0354                         <IncludeRules context="_default_comment##SELinux Policy"/>
0355                 </context>
0356 
0357                 <context name="_quoted" attribute="Text Quoted" lineEndContext="#pop">
0358                         <DetectChar context="#pop" attribute="Text Quoted" char="&quot;"/>
0359                         <IncludeRules context="_regex_quoted##SELinux Policy"/> <!-- This does not support line breaks and line cont. escape -->
0360                         <RegExpr context="#stay" attribute="Text Quoted Open" String="[^\s&quot;\[\(\\](?=\s*$)"/>
0361                 </context>
0362 
0363                 <context name="_path_content" attribute="Path" lineEndContext="#pop">
0364                         <DetectSpaces context="#pop" attribute="Normal Text" lookAhead="true"/>
0365                         <RegExpr context="#pop" attribute="Normal Text" String="[^&symbol;]" lookAhead="true"/>
0366 
0367                         <IncludeRules context="_default_regex##SELinux Policy"/>
0368                         <DetectChar context="_square_brackets_cil_path" attribute="RegExp Brackets (Paths)" char="["/>
0369                 </context>
0370                 <context name="_square_brackets_cil_path" attribute="RegExp Brackets (Paths)"
0371                          lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop!_square_brackets_cil_path_content">
0372                         <RegExpr context="#pop!_square_brackets_cil_path_content" attribute="Special Char of Brackets (Paths)" String="\^(?=[&symbol;])"/>
0373                 </context>
0374                 <context name="_square_brackets_cil_path_content" attribute="RegExp Brackets (Paths)" lineEndContext="#pop">
0375                         <DetectChar context="#pop" attribute="RegExp Brackets (Paths)" char="]"/>
0376                         <RegExpr context="#pop" String="[^&symbol;]" lookAhead="true"/>
0377                         <RegExpr context="#stay" attribute="Open RegExp Brackets (Paths)" String="[^\s\[\]\\](?![&symbol;])"/>
0378                         <DetectChar context="#stay" attribute="Error" char="["/>
0379                         <IncludeRules context="_special_chars##SELinux Policy"/>
0380                 </context>
0381 
0382                 <!-- RULES -->
0383 
0384                 <!-- Highlighting specific keywords in some rules -->
0385                 <context name="_filecon_statement" attribute="Normal Text" lineEndContext="#stay">
0386                         <IncludeRules context="_default_end"/>
0387                         <keyword context="#pop" attribute="Types" String="file_types"/>
0388                         <IncludeRules context="_default_rule"/>
0389                 </context>
0390                 <context name="_portcon_statement" attribute="Normal Text" lineEndContext="#stay">
0391                         <IncludeRules context="_default_end"/>
0392                         <keyword context="#pop" attribute="Types" String="protocols"/>
0393                         <IncludeRules context="_default_rule"/>
0394                 </context>
0395                 <context name="_fsuse_statement" attribute="Normal Text" lineEndContext="#stay">
0396                         <IncludeRules context="_default_end"/>
0397                         <keyword context="#pop" attribute="Types" String="fs_types"/>
0398                         <IncludeRules context="_default_rule"/>
0399                 </context>
0400                 <context name="_handleunknown_statement" attribute="Normal Text" lineEndContext="#stay">
0401                         <IncludeRules context="_default_end"/>
0402                         <keyword context="#pop" attribute="Access Keys" String="handleunknown_keys"/>
0403                         <IncludeRules context="_default_rule"/>
0404                 </context>
0405                 <context name="_policycap_statement" attribute="Normal Text" lineEndContext="#stay">
0406                         <IncludeRules context="_default_end"/>
0407                         <keyword context="#stay" attribute="Policy Capability" String="policy_capabilities"/>
0408                         <IncludeRules context="_common"/>
0409                         <IncludeRules context="_identifiers"/>
0410                 </context>
0411                 <context name="_av_permissions_statement" attribute="Normal Text" lineEndContext="#stay">
0412                         <IncludeRules context="_default_end"/>
0413                         <IncludeRules context="_av_permissions##SELinux Policy"/>
0414                         <IncludeRules context="_default_rule"/>
0415                 </context>
0416                 <context name="_default_end" attribute="Normal Text" lineEndContext="#stay">
0417                         <AnyChar context="#pop" attribute="Normal Text" String=")(" lookAhead="true"/>
0418                 </context>
0419 
0420                 <context name="_find_ioctl_kind" attribute="Normal Text"
0421                          lineEndContext="#pop!_av_permissions_statement" fallthrough="true" fallthroughContext="#pop!_av_permissions_statement">
0422                         <!-- ioctl is a kind in permissionx/accessx statement:
0423                              (permissionx permissionx_id (ioctl class_id (permission ... | expr ...))) -->
0424                         <RegExpr context="#pop" attribute="Type Name Statements" String="ioctl(?=\s+[&symbol;]+\s*\()"/>
0425                         <!-- ioctl can be a kind of permissionx or AV permission -->
0426                         <RegExpr context="#pop!_av_permissions_statement" attribute="Type Name Statements" String="ioctl(?=\s+[&symbol;]+\s+\d|(?:\s+[&symbol;]+)?\s*(?:$|;))"/>
0427                 </context>
0428 
0429                 <context name="_default_statement" attribute="Normal Text" lineEndContext="#stay">
0430                         <WordDetect context="_handleunknown_statement" attribute="Policy Config. Statements" String="handleunknown"/>
0431                         <WordDetect context="_policycap_statement" attribute="Policy Config. Statements" String="policycap"/>
0432                         <WordDetect context="_filecon_statement" attribute="Statements" String="filecon"/>
0433                         <WordDetect context="_fsuse_statement" attribute="Statements" String="fsuse"/>
0434                         <WordDetect context="_portcon_statement" attribute="Statements" String="portcon"/>
0435                         <!-- Fix permissions list if the keywords "ioctl" or "call" are not statements,
0436                              but a permissions (see "av_permissions" keyword list of "selinux.xml"). -->
0437                         <RegExpr context="_av_permissions_statement" String="\b(?:call|ioctl)\s*\)" lookAhead="true"/>
0438                         <WordDetect context="_find_ioctl_kind" String="ioctl" lookAhead="true"/>
0439                         <WordDetect context="_av_permissions_statement" attribute="Statements" String="call"/>
0440 
0441                         <keyword context="#stay" attribute="Policy Config. Statements" String="policy_config_statements"/>
0442                         <keyword context="#stay" attribute="Type Statements" String="type_statements"/>
0443                         <keyword context="#stay" attribute="Statements" String="statements"/>
0444                         <keyword context="#stay" attribute="Expression Keys" String="expr_keys"/>
0445                         <keyword context="#stay" attribute="Access Keys" String="access"/>
0446 
0447                         <keyword context="#stay" attribute="Booleans" String="booleans"/>
0448                         <keyword context="#stay" attribute="Type Name Statements" String="classorder_keys"/>
0449                         <keyword context="#stay" attribute="Type Name Statements" String="type_name"/>
0450                 </context>
0451                 <context name="_default_rule" attribute="Normal Text" lineEndContext="#stay">
0452                         <IncludeRules context="_common"/>
0453                         <keyword context="#stay" attribute="Booleans" String="booleans"/>
0454                         <keyword context="#stay" attribute="Special Keys" String="special_keys"/>
0455 
0456                         <StringDetect context="#stay" attribute="Other Keywords" String="&lt;root&gt;"/>
0457                         <StringDetect context="#stay" attribute="Other Keywords" String="&lt;node&gt;"/>
0458                         <StringDetect context="#stay" attribute="Other Keywords" String="&lt;src_info&gt;"/>
0459                         <StringDetect context="#stay" attribute="Other Keywords" String="&lt;src_cil&gt;"/>
0460                         <StringDetect context="#stay" attribute="Other Keywords" String="&lt;src_hll&gt;"/>
0461                         <keyword context="#stay" attribute="Other Keywords" String="other_keywords"/>
0462                         <keyword context="#stay" attribute="Filesystem" String="filesystem"/>
0463 
0464                         <IncludeRules context="_identifiers"/>
0465                 </context>
0466                 <context name="_default_rule_without_statement" attribute="Normal Text" lineEndContext="#stay">
0467                         <IncludeRules context="_av_permissions##SELinux Policy"/>
0468                 </context>
0469                 <context name="_default_rule_bracket" attribute="Normal Text" lineEndContext="#stay">
0470                         <DetectSpaces context="#stay" attribute="Normal Text"/>
0471                         <DetectChar context="_comment" attribute="Comment" char=";"/>
0472                 </context>
0473 
0474                 <!-- Levels of rule brackets.
0475                      Only the first word of a rule can be highlighted as a statement keyword. -->
0476                 <context name="_rule_bracket_level1" attribute="Normal Text" fallthrough="true" fallthroughContext="#pop!_rule_without_statement_level1" lineEndContext="#stay">
0477                         <IncludeRules context="_default_rule_bracket"/> <!-- Detect spaces & comments -->
0478                         <!-- Detect first word -->
0479                         <RegExpr context="#pop!_statement_level1" attribute="Normal Text" String="&statementchar;" lookAhead="true"/>
0480                 </context>
0481                 <context name="_statement_level1" attribute="Normal Text" fallthrough="true" fallthroughContext="#pop!_rule_level1" lineEndContext="#pop!_rule_level1">
0482                         <!-- When writing a statement and then a delimiter (like a space), go to the context "_rule_level1" -->
0483                         <IncludeRules context="_default_statement"/>
0484                         <RegExpr context="#pop!_rule_without_statement_level1" attribute="Normal Text" String="&statementchar;" lookAhead="true"/>
0485                 </context>
0486                 <context name="_rule_level1" attribute="Normal Text" lineEndContext="#stay"> <!-- Rule content -->
0487                         <DetectChar attribute="Brackets Level 2" context="_rule_bracket_level2" char="("/>
0488                         <DetectChar attribute="Brackets Level 1" context="#pop" char=")" />
0489                         <IncludeRules context="_default_rule"/>
0490                 </context>
0491                 <context name="_rule_without_statement_level1" attribute="Normal Text" lineEndContext="#stay">
0492                         <IncludeRules context="_default_rule_without_statement"/>
0493                         <IncludeRules context="_rule_level1"/>
0494                 </context>
0495 
0496                 <context name="_rule_bracket_level2" attribute="Normal Text" fallthrough="true" fallthroughContext="#pop!_rule_without_statement_level2" lineEndContext="#stay">
0497                         <IncludeRules context="_default_rule_bracket"/>
0498                         <RegExpr context="#pop!_statement_level2" attribute="Normal Text" String="&statementchar;" lookAhead="true"/>
0499                 </context>
0500                 <context name="_statement_level2" attribute="Normal Text" fallthrough="true" fallthroughContext="#pop!_rule_level2" lineEndContext="#pop!_rule_level2">
0501                         <IncludeRules context="_default_statement"/>
0502                         <RegExpr context="#pop!_rule_without_statement_level2" attribute="Normal Text" String="&statementchar;" lookAhead="true"/>
0503                 </context>
0504                 <context name="_rule_level2" attribute="Normal Text" lineEndContext="#stay">
0505                         <DetectChar attribute="Brackets Level 3" context="_rule_bracket_level3" char="("/>
0506                         <DetectChar attribute="Brackets Level 2" context="#pop" char=")" />
0507                         <IncludeRules context="_default_rule"/>
0508                 </context>
0509                 <context name="_rule_without_statement_level2" attribute="Normal Text" lineEndContext="#stay">
0510                         <IncludeRules context="_default_rule_without_statement"/>
0511                         <IncludeRules context="_rule_level2"/>
0512                 </context>
0513 
0514                 <context name="_rule_bracket_level3" attribute="Normal Text" fallthrough="true" fallthroughContext="#pop!_rule_without_statement_level3" lineEndContext="#stay">
0515                         <IncludeRules context="_default_rule_bracket"/>
0516                         <RegExpr context="#pop!_statement_level3" attribute="Normal Text" String="&statementchar;" lookAhead="true"/>
0517                 </context>
0518                 <context name="_statement_level3" attribute="Normal Text" fallthrough="true" fallthroughContext="#pop!_rule_level3" lineEndContext="#pop!_rule_level3">
0519                         <IncludeRules context="_default_statement"/>
0520                         <RegExpr context="#pop!_rule_without_statement_level3" attribute="Normal Text" String="&statementchar;" lookAhead="true"/>
0521                 </context>
0522                 <context name="_rule_level3" attribute="Normal Text" lineEndContext="#stay">
0523                         <DetectChar attribute="Brackets Level 4" context="_rule_bracket_level4" char="("/>
0524                         <DetectChar attribute="Brackets Level 3" context="#pop" char=")" />
0525                         <IncludeRules context="_default_rule"/>
0526                 </context>
0527                 <context name="_rule_without_statement_level3" attribute="Normal Text" lineEndContext="#stay">
0528                         <IncludeRules context="_default_rule_without_statement"/>
0529                         <IncludeRules context="_rule_level3"/>
0530                 </context>
0531 
0532                 <context name="_rule_bracket_level4" attribute="Normal Text" fallthrough="true" fallthroughContext="#pop!_rule_without_statement_level4" lineEndContext="#stay">
0533                         <IncludeRules context="_default_rule_bracket"/>
0534                         <RegExpr context="#pop!_statement_level4" attribute="Normal Text" String="&statementchar;" lookAhead="true"/>
0535                 </context>
0536                 <context name="_statement_level4" attribute="Normal Text" fallthrough="true" fallthroughContext="#pop!_rule_level4" lineEndContext="#pop!_rule_level4">
0537                         <IncludeRules context="_default_statement"/>
0538                         <RegExpr context="#pop!_rule_without_statement_level4" attribute="Normal Text" String="&statementchar;" lookAhead="true"/>
0539                 </context>
0540                 <context name="_rule_level4" attribute="Normal Text" lineEndContext="#stay">
0541                         <DetectChar attribute="Brackets Level 5" context="_rule_bracket_level5" char="("/>
0542                         <DetectChar attribute="Brackets Level 4" context="#pop" char=")" />
0543                         <IncludeRules context="_default_rule"/>
0544                 </context>
0545                 <context name="_rule_without_statement_level4" attribute="Normal Text" lineEndContext="#stay">
0546                         <IncludeRules context="_default_rule_without_statement"/>
0547                         <IncludeRules context="_rule_level4"/>
0548                 </context>
0549 
0550                 <context name="_rule_bracket_level5" attribute="Normal Text" fallthrough="true" fallthroughContext="#pop!_rule_without_statement_level5" lineEndContext="#stay">
0551                         <IncludeRules context="_default_rule_bracket"/>
0552                         <RegExpr context="#pop!_statement_level5" attribute="Normal Text" String="&statementchar;" lookAhead="true"/>
0553                 </context>
0554                 <context name="_statement_level5" attribute="Normal Text" fallthrough="true" fallthroughContext="#pop!_rule_level5" lineEndContext="#pop!_rule_level5">
0555                         <IncludeRules context="_default_statement"/>
0556                         <RegExpr context="#pop!_rule_without_statement_level5" attribute="Normal Text" String="&statementchar;" lookAhead="true"/>
0557                 </context>
0558                 <context name="_rule_level5" attribute="Normal Text" lineEndContext="#stay">
0559                         <DetectChar attribute="Brackets Level 6" context="_rule_bracket_level6" char="("/>
0560                         <DetectChar attribute="Brackets Level 5" context="#pop" char=")" />
0561                         <IncludeRules context="_default_rule"/>
0562                 </context>
0563                 <context name="_rule_without_statement_level5" attribute="Normal Text" lineEndContext="#stay">
0564                         <IncludeRules context="_default_rule_without_statement"/>
0565                         <IncludeRules context="_rule_level5"/>
0566                 </context>
0567 
0568                 <context name="_rule_bracket_level6" attribute="Normal Text" fallthrough="true" fallthroughContext="#pop!_rule_without_statement_level6" lineEndContext="#stay">
0569                         <IncludeRules context="_default_rule_bracket"/>
0570                         <RegExpr context="#pop!_statement_level6" attribute="Normal Text" String="&statementchar;" lookAhead="true"/>
0571                 </context>
0572                 <context name="_statement_level6" attribute="Normal Text" fallthrough="true" fallthroughContext="#pop!_rule_level6" lineEndContext="#pop!_rule_level6">
0573                         <IncludeRules context="_default_statement"/>
0574                         <RegExpr context="#pop!_rule_without_statement_level6" attribute="Normal Text" String="&statementchar;" lookAhead="true"/>
0575                 </context>
0576                 <context name="_rule_level6" attribute="Normal Text" lineEndContext="#stay">
0577                         <DetectChar attribute="Brackets Level 1" context="_rule_bracket_level1" char="("/>
0578                         <DetectChar attribute="Brackets Level 6" context="#pop" char=")" />
0579                         <IncludeRules context="_default_rule"/>
0580                 </context>
0581                 <context name="_rule_without_statement_level6" attribute="Normal Text" lineEndContext="#stay">
0582                         <IncludeRules context="_default_rule_without_statement"/>
0583                         <IncludeRules context="_rule_level6"/>
0584                 </context>
0585 
0586                 <!-- File Contexts -->
0587                 <!-- user:role:type -->
0588                 <context name="_file_contexts" attribute="File Contexts" lineEndContext="#pop">
0589                         <DetectChar context="#pop!_fc_role" attribute="Normal Text" char=":"/>
0590                         <DetectSpaces context="#pop" attribute="Normal Text" lookAhead="true"/>
0591                 </context>
0592                 <context name="_fc_role" attribute="File Contexts" lineEndContext="#pop">
0593                         <DetectChar context="#pop!_fc_type" attribute="Normal Text" char=":"/>
0594                         <DetectSpaces context="#pop" attribute="Normal Text" lookAhead="true"/>
0595                 </context>
0596                 <context name="_fc_type" attribute="File Contexts (Type Enforcement)" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
0597                         <RegExpr context="#pop!_fc_mls" attribute="File Contexts (Type Enforcement)" String="&fullIdentifier;(?=\:&mlsLevel;)"/> <!-- Find Level/Range -->
0598                         <RegExpr context="#pop" attribute="File Contexts (Type Enforcement)" String="&fullIdentifier;"/>
0599                 </context>
0600                 <!-- (MLS/MCS) user:role:type:level -->
0601                 <context name="_fc_mls" attribute="File Contexts" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
0602                         <DetectChar context="#pop!_fc_level_range_sen" attribute="Normal Text" char=":"/>
0603                 </context>
0604                 <context name="_fc_level_range_sen" attribute="File Contexts" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
0605                         <RegExpr context="#pop!_fc_level_range_cat" attribute="Normal Text" String=":(?=&identifier;)"/> <!-- Find Category -->
0606                         <RegExpr context="#pop!_fc_level_sen" attribute="Normal Text" String="\s*\-\s*(?=&mlsLevel;)"/> <!-- Find Range -->
0607                         <RegExpr context="#stay" attribute="Normal Text" String="\.(?=&identifier;)"/>
0608                         <IncludeRules context="_default_fc_level"/>
0609                 </context>
0610                 <context name="_fc_level_range_cat" attribute="File Contexts" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
0611                         <RegExpr context="#pop!_fc_level_sen" attribute="Normal Text" String="\s*\-\s*(?=&mlsLevel;)"/> <!-- Find Range -->
0612                         <RegExpr context="#stay" attribute="Normal Text" String="(?:\.|\s*,\s*)(?=&identifier;)"/>
0613                         <IncludeRules context="_default_fc_level"/>
0614                 </context>
0615                 <!-- (MLS/MCS) user:role:type:level-level -->
0616                 <context name="_fc_level_sen" attribute="File Contexts" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
0617                         <RegExpr context="#pop!_fc_level_cat" attribute="Normal Text" String=":(?=&identifier;)"/> <!-- Find Category -->
0618                         <RegExpr context="#stay" attribute="Normal Text" String="\.(?=&identifier;)"/>
0619                         <IncludeRules context="_default_fc_level"/>
0620                 </context>
0621                 <context name="_fc_level_cat" attribute="File Contexts" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
0622                         <RegExpr context="#stay" attribute="Normal Text" String="(?:\.|\s*,\s*)(?=&identifier;)"/>
0623                         <IncludeRules context="_default_fc_level"/>
0624                 </context>
0625                 <context name="_default_fc_level" attribute="File Contexts" lineEndContext="#pop">
0626                         <RegExpr context="#stay" attribute="File Contexts" String="\w+"/>
0627                         <DetectChar context="#stay" attribute="File Contexts" char="-"/>
0628                 </context>
0629 
0630         </contexts>
0631 
0632         <itemDatas>
0633                 <itemData name="Normal Text" defStyleNum="dsNormal" spellChecking="false"/>
0634                 <itemData name="Comment"     defStyleNum="dsComment"/>
0635                 <itemData name="Text Quoted" defStyleNum="dsString" spellChecking="false"/>
0636                 <itemData name="Path"        defStyleNum="dsNormal" spellChecking="false"/>
0637 
0638                 <itemData name="Statements"                defStyleNum="dsKeyword"      bold="1" italic="0" underline="0" spellChecking="false"/>
0639                 <itemData name="Type Statements"           defStyleNum="dsFunction"     bold="1" italic="0" underline="0" spellChecking="false"/>
0640                 <itemData name="Policy Config. Statements" defStyleNum="dsPreprocessor" bold="1" italic="0" underline="0" spellChecking="false"/>
0641                 <itemData name="Access Keys"               defStyleNum="dsWarning"      bold="1" italic="0" underline="0" spellChecking="false"/>
0642                 <itemData name="Expression Keys"           defStyleNum="dsVariable"     bold="1" italic="0" underline="0" spellChecking="false"/>
0643                 <itemData name="Type Name Statements"      defStyleNum="dsDataType"     bold="1" italic="0" underline="0" spellChecking="false"/>
0644                 <itemData name="Booleans"                  defStyleNum="dsExtension"    bold="1" spellChecking="false"/>
0645 
0646                 <itemData name="Types"                defStyleNum="dsDataType"      bold="0" spellChecking="false"/>
0647                 <itemData name="Special Keys"         defStyleNum="dsOthers"        spellChecking="false"/>
0648                 <itemData name="File Contexts"        defStyleNum="dsSpecialString" bold="0" italic="0" underline="0" spellChecking="false"/>
0649                 <itemData name="File Contexts (Type Enforcement)" defStyleNum="dsInformation" bold="0" italic="0" underline="0" spellChecking="false"/>
0650                 <itemData name="Policy Capability"    defStyleNum="dsPreprocessor"  bold="0" italic="0" underline="0" spellChecking="false"/>
0651                 <itemData name="Filesystem"           defStyleNum="dsNormal"        italic="1" spellChecking="false"/>
0652                 <itemData name="Other Keywords"       defStyleNum="dsNormal"        italic="1" spellChecking="false"/>
0653 
0654                 <itemData name="Number"      defStyleNum="dsDecVal" spellChecking="false"/>
0655                 <itemData name="Hexadecimal" defStyleNum="dsBaseN"  spellChecking="false"/>
0656 
0657                 <!-- Obtained from "scheme.xml" -->
0658                 <itemData name="Brackets Level 1" defStyleNum="dsNormal" color="#c6262e" bold="1" spellChecking="false"/>
0659                 <itemData name="Brackets Level 2" defStyleNum="dsNormal" color="#ff8800" bold="1" spellChecking="false"/>
0660                 <itemData name="Brackets Level 3" defStyleNum="dsNormal" color="#888800" bold="1" spellChecking="false"/>
0661                 <itemData name="Brackets Level 4" defStyleNum="dsNormal" color="#009400" bold="1" spellChecking="false"/>
0662                 <itemData name="Brackets Level 5" defStyleNum="dsNormal" color="#3689e6" bold="1" spellChecking="false"/>
0663                 <itemData name="Brackets Level 6" defStyleNum="dsNormal" color="#a56de2" bold="1" spellChecking="false"/>
0664 
0665                 <itemData name="Special Char"                     defStyleNum="dsSpecialChar"   spellChecking="false"/>
0666                 <itemData name="Special Char of Brackets (Paths)" defStyleNum="dsAnnotation"    bold="0" italic="0" underline="0" spellChecking="false"/>
0667                 <itemData name="RegExp Brackets (Paths)"          defStyleNum="dsSpecialString" spellChecking="false"/>
0668                 <itemData name="Open RegExp Brackets (Paths)"     defStyleNum="dsSpecialString" underline="1" spellChecking="false"/>
0669                 <itemData name="Text Quoted Open"                 defStyleNum="dsString"        underline="1" spellChecking="false"/>
0670 
0671                 <itemData name="Error" defStyleNum="dsError" spellChecking="false"/>
0672         </itemDatas>
0673 
0674 </highlighting>
0675 
0676 <general>
0677         <keywords casesensitive="true" additionalDeliminator="&quot;&apos;&#096;" weakDeliminator="-"/>
0678         <comments>
0679                 <comment name="singleLine" start=";"/>
0680         </comments>
0681 </general>
0682 
0683 </language>
0684 <!-- kate: replace-tabs off; tab-width 3; indent-width 3; remove-trailing-spaces mod; dynamic-word-wrap off; -->