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\[\]\.@\=/\*\-$%\+!\|&\^:~`#\{\}'<>\?,\\"> <!-- [].@=/*-_$%+!|&^:~`#{}'<>?,\ -->
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="""/>
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="""/>
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"\[\(\\](?=\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="<root>"/>
0457 <StringDetect context="#stay" attribute="Other Keywords" String="<node>"/>
0458 <StringDetect context="#stay" attribute="Other Keywords" String="<src_info>"/>
0459 <StringDetect context="#stay" attribute="Other Keywords" String="<src_cil>"/>
0460 <StringDetect context="#stay" attribute="Other Keywords" String="<src_hll>"/>
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=""'`" 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; -->