Warning, /frameworks/syntax-highlighting/data/syntax/d.xml is written in an unsupported language. File is not indexed.

0001 <?xml version="1.0" encoding="UTF-8"?>
0002 <!DOCTYPE language [
0003   <!ENTITY hexfloat "0[xX][\da-fA-F_]*(?:\.[\da-fA-F_]*)?[pP][-+]?\d[\d_]*[fFL]?i?">
0004   <!-- Float starting with a dot is matched in main context -->
0005   <!-- All floats except integers -->
0006   <!-- RegExpr is branched rather than using look aheads for efficiency at the expense of extra length -->
0007   <!ENTITY float "\d[_\d]*(?:\.(?!\.)[_\d]*(?:[eE][-+]?\d[_\d]*)?[fFL]?i?|[eE][-+]?\d[_\d]*[fFL]?i?|[fF]i?|[fFL]?i)">
0008 ]>
0009 <!--
0010   ========================================================================
0011 
0012   D.XML supports syntax highlighting for the D programming language under Kate.
0013 
0014   Updated 2007-2008 - Diggory Hardy <diggory.hardy@gmail.com> (copyright kate project).
0015   Copyright (C) 2007 - Aziz Köksal <aziz.koeksal@gmail.com>
0016   Copyright (C) 2007 - Jari-Matti Mäkelä <jmjm@iki.fi>
0017   Copyright (C) 2004 - Simon J Mackenzie <project.katedxml@smackoz.fastmail.fm>
0018 
0019   This code is released under the LGPL as part of kdelibs/kate.
0020 
0021   ========================================================================
0022 
0023   D is a next generation language written by Walter Bright of Digital Mars fame.
0024   Digital Mars C, C++ and D Compilers can be obtained from http://www.digitalmars.com/d/
0025 
0026   ========================================================================
0027 
0028   UPDATE HISTORY:-
0029   2008.09.22 - d.xml 1.61 - D 1.035/2.019 - Fix for identifiers starting _ and containing numbers.
0030   2008.08.01 - d.xml 1.60 - D 1.033/2.017 - Merging ddoc.xml 1.14 since there is no advantage to having it separate.
0031   2008.07.14 - uncommited                 - Added properties: .tupleof, .offsetof
0032   2008.06.14 - D.XML 1.53 - D 1.030/2.014 - Added user keyword highlighting.
0033   2008.06.06 - D.XML 1.53 - D 1.030/2.014 - Small fix involving floats starting . in embedded Ddoc.
0034                                           - Added nothrow and pure attributes (D2.0 only).
0035   2008.04.09 - D.XML 1.52 - D 1.028/2.012 - Added properties (especially for arrays).
0036                                           - Added rules for C-Style indenter (thanks vektorboson!)
0037   2008.02.22 - D.XML 1.51 - D 1.027/2.011 - Changed char rule behaviour on line end.
0038                                           - Added support for strings ending with c, w or d (must have got lost at some point).
0039   2008.02.22 - ddoc.xml 1.14              - Fixes/improvements for macros. Highlights first symbol and non-symbols
0040                                             before as errors; matches embedded brackets () properly.
0041   2008.01.09 - D.XML 1.50 - D 1.025/2.009 - Changed pragma, version, deprecated matching to use keyword not DetectString.
0042   2007.12.18 - D.XML 1.49 - D 1.025/2.009 - Fixed some bugs to make the StartingLetter context exit correctly and match identifiers properly.
0043   2007.12.12 - D.XML 1.48 - D 1.024/2.008 - Adjusted existing contexts somewhat (mostly cleanup).
0044                                           - Implemented scope context to hightlight exit in scope(exit) etc.
0045                                           - Adjusted deprecated keyword highlighting.
0046                                           - Changed layout somewhat.
0047                                           - Implemented extra highlighting rules for expressions, attributes, etc.
0048                                           - Changed a lot of colours.
0049   2007.11.15 - D.XML 1.47 - D 1.023/2.007 - Fixed a few unapperent "bugs" found by checkdtd.
0050   2007.11.15 - ddoc.xml 1.13              - Fixed a couple of bugs found by checkdtd and changed the version number format.
0051   2007.11.5  - ddoc.xml 1.12              - Fixed: correct matching of things like /***/ .
0052   2007.10.11 - ddoc.xml 1.11              - Safety catch: check for unterminated code sections (i.e. check for end of
0053                                             ddoc comment even in code sections).
0054                                           - Used DetectIdentifier to (presumably) improve performance.
0055   2007.10.09 - uncommited - ditto         - Changed some context="#pop" tags to context="#stay" within the normal
0056                                             context (bugfix for ddoc embedded code highlighting).
0057   2007.10.9  - ddoc.xml 1.10              - Enabled embedded ddoc code highlighting
0058   2007.10.9  - ddoc.xml 1.00              - Initial version
0059   2007.10.08 - D.XML 1.46 - D 1.022/2.005 - Stole Alert and Region Marker highlighting from C++ syntax.
0060                                           - Added support for DDoc highlighting.
0061                                           - Reviewed the float regexps again! Tried to make the best of both versions.
0062   2007.09.17 - D.XML 1.45 - D 1.021/2.004 - Reverted back to old regexps (but fixed hex floats).
0063                                             Can't combine all float regexps into a single RegExpr element using the '|' operator.
0064                                             It creates strange problems (like program lock-ups and wrong matches).
0065                                           - Fix: '=' is allowed in import statements now.
0066                                           - Fix: character literals are matched correctly now.
0067                                           - The #line special token sequence is matched fully now (the filespec string needs special handling).
0068   2007.09.10 - D.XML 1.44 - D 1.021/2.004 - Added __EOF__ to specialtokens.
0069                                           - Replaced float regexps with more accurate ones. Not sure about speed.
0070                                           - Fixed Octal regexp not to match 0_ .
0071   2007.07.24 - D.XML 1.43 - D 1.020/2.003 - Added System to ltypes.
0072                                           - Improved matching of version declarations.
0073                                           - Fixed matching of hexadecimal floats.
0074                                           - Deprecated style is stroked out again.
0075   2007.07.21 - D.XML 1.42 - D 1.018/2.002 - d.xml validates again according to language.xml.
0076                                           - HTML entities are highlighted now.
0077                                           - Numbers before and after the slice operator are not highl. as floats anymore.
0078                                           - Added C++ to ltypes.
0079                                           - Improved matching of module/import declarations.
0080   2007.07.01 - D.XML 1.41 - D 1.017/2.001 - fixed matching of numbers, added deprecated style, minor changes to styles, updated authors line
0081   2007.07.01 - D.XML 1.40 - D 1.017/2.001 - matches now .di extensions, removed phobos-specific printf/writef and added
0082                                           - library defined symbols string, wstring, dstring, size_t, ptrdiff_t, hash_t,
0083                                           - Error, Exception, Object, TypeInfo and ClassInfo
0084   2007.06.30 - D.XML 1.39 - D 1.017 - matching is much faster now, added "lib" to pragma types, added special tokens,
0085                                     - /+ +/ can be nested now, numbers are matched more correctly, character literals don't span multiple lines anymore
0086                                     - escape sequences inside strings and character literals are highlighted,
0087                                     - non-hex characters in hex strings are highlighted with the Error style,
0088                                     - using more default styles instead of custom ones
0089   2007.04.11 - D.XML 1.38 - D 1.011 - ref, macro keywords are now supported, fixed \\ inside a string, updated author
0090   2007.02.12 - D.XML 1.37 - D 1.006 - bool, foreach_reverse, lazy, scope and typeid keywords are now supported, fixed \"
0091                                     - inside a string, fixed ending of wysiwyg strings.
0092   2004.08.15 - D.XML 1.36 - D 0.98  - Current release of D.
0093                                     - package, writef(strictly speaking writef isn't a keyword) - keywords are now supported.
0094   2004.??.?? - D.XML 1.35 - D 0.??  - Not sure how this release got posted!
0095   2004.05.23 - D.XML 1.34 - D 0.90  - updated.
0096   2004.05.19 - D.XML 1.33 - D 0.89  - mixin - keyword is now supported.
0097   2004.05.19 - D.XML 1.32 - D 0.77  - pragma, typeof - keywords are now supported.
0098   2004.05.19 - D.XML 1.31 - D 0.76  - is - keyword is now supported.
0099   2003.09.06 - D.XML 1.30 - D 0.71  - foreach - keyword is now supported.
0100   2003.08.18 - D.XML 1.20 - D 0.69  - floats are now supported.
0101                                     - embedded underscores in integer and float literals are now supported.
0102   2003.08.11 - D.XML 1.10           - updated.
0103   2003.07.18 - D.XML 1.00           - First released.
0104 
0105    ========================================================================
0106 -->
0107 
0108 <language name="D" version="13" kateversion="5.0" section="Sources" extensions="*.d;*.D;*.di;*.DI;" mimetype="text/x-dsrc" casesensitive="true" author="Diggory Hardy (diggory.hardy@gmail.com), Aziz Köksal (aziz.koeksal@gmail.com), Jari-Matti Mäkelä (jmjm@iki.fi), Simon J Mackenzie (project.katedxml@smackoz.fastmail.fm)" license="LGPL">
0109   <highlighting>
0110     <!-- User-defined keywords (add identifiers you'd like highlighted here) -->
0111     <list name="userkeywords">
0112     </list>
0113     <list name="statements">
0114       <item>asm</item>
0115       <item>body</item>
0116       <item>break</item>
0117       <item>case</item>
0118       <item>catch</item>
0119       <item>continue</item>
0120       <item>default</item>
0121       <item>do</item>
0122       <item>else</item>
0123       <item>finally</item>
0124       <item>for</item>
0125       <item>foreach</item>
0126       <item>foreach_reverse</item>
0127       <item>goto</item>
0128       <item>if</item>
0129       <item>mixin</item>
0130       <item>return</item>
0131       <item>switch</item>
0132       <item>throw</item>
0133       <item>try</item>
0134       <item>while</item>
0135       <item>with</item>
0136       
0137       <!-- these are statements according to the spec, although I might call them attributes -->
0138       <item>synchronized</item>
0139 
0140     </list>
0141 
0142     <list name="attributes">
0143       <!-- also storage classes -->
0144       <item>abstract</item>
0145       <item>align</item>
0146       <item>auto</item>
0147       <item>const</item>
0148       <item>export</item>
0149       <item>final</item>
0150       <item>immutable</item>
0151       <item>inout</item>
0152       <item>invariant</item>
0153       <item>lazy</item>
0154       <item>nothrow</item>
0155       <item>override</item>
0156       <item>package</item>
0157       <item>private</item>
0158       <item>protected</item>
0159       <item>public</item>
0160       <item>pure</item>
0161       <item>ref</item>
0162       <item>shared</item>
0163       <item>static</item>
0164       
0165       <!-- these may be statements -->
0166       <!-- in (more common to use as an expression since in attribute is only ever the default) -->
0167       <item>out</item>
0168       <item>scope</item>
0169       
0170       <item>__gshared</item>
0171     </list>
0172     
0173     <list name="expressions">
0174       <!-- primary expressions -->
0175       <item>false</item>
0176       <item>null</item>
0177       <item>super</item>
0178       <item>this</item>
0179       <item>true</item>
0180       <item>typeid</item>
0181       
0182       <!-- other expressions -->
0183       <item>assert</item>
0184       <item>cast</item>
0185       <item>is</item>
0186       <item>new</item>
0187       <item>delete</item>
0188       <item>in</item> <!-- also an attribute and a statement -->
0189       
0190       <!-- sometimes declarators -->
0191       <item>delegate</item>
0192       <item>function</item>
0193     </list>
0194     
0195     <list name="modules">
0196       <item>module</item>
0197       <item>import</item> <!-- also an expression -->
0198     </list>
0199 
0200     <list name="declarators">
0201       <item>alias</item>
0202       <item>enum</item>
0203       <item>typedef</item>
0204       <item>class</item>
0205       <item>interface</item>
0206       <item>struct</item>
0207       <item>union</item>
0208     </list>
0209     
0210     <list name="types">
0211       <item>typeof</item>
0212       
0213       <item>void</item>
0214       <item>bool</item>
0215       <item>byte</item>
0216       <item>ubyte</item>
0217       <item>short</item>
0218       <item>ushort</item>
0219       <item>int</item>
0220       <item>uint</item>
0221       <item>long</item>
0222       <item>ulong</item>
0223       <item>cent</item>
0224       <item>ucent</item>
0225       <item>float</item>
0226       <item>double</item>
0227       <item>real</item>
0228       <item>ireal</item>
0229       <item>ifloat</item>
0230       <item>idouble</item>
0231       <item>creal</item>
0232       <item>cfloat</item>
0233       <item>cdouble</item>
0234       <item>char</item>
0235       <item>wchar</item>
0236       <item>dchar</item>
0237     </list>
0238 
0239     <list name="templates">
0240       <item>macro</item> <!-- what's this? just reserved? -->
0241       <item>template</item>
0242     </list>
0243     
0244     <list name="properties">
0245       <item>init</item>
0246       <item>sizeof</item>
0247       <item>alignof</item>
0248       <item>mangleof</item>
0249       <item>stringof</item>
0250       <item>tupleof</item>
0251       <item>offsetof</item>
0252       <item>max</item>
0253       <item>min</item>
0254       <item>infinity</item>
0255       <item>nan</item>
0256       <item>dig</item>
0257       <item>epsilon</item>
0258       <item>mant_dig</item>
0259       <item>max_10_exp</item>
0260       <item>max_exp</item>
0261       <item>min_10_exp</item>
0262       <item>min_exp</item>
0263       <item>re</item>
0264       <item>im</item>
0265       <item>length</item>
0266       <item>ptr</item>
0267       <item>dup</item>
0268       <item>idup</item>
0269       <item>reverse</item>
0270       <item>sort</item>
0271       <item>keys</item>
0272       <item>values</item>
0273       <item>rehash</item>
0274     </list>
0275     
0276     <list name="libsymbols">
0277       <!-- these are only symbols defined in object.d(i) -->
0278       <item>size_t</item>
0279       <item>ptrdiff_t</item>
0280       <item>hash_t</item>
0281       <item>Error</item>
0282       <item>Exception</item>
0283       <item>Object</item>
0284       <item>TypeInfo</item>
0285       <item>ClassInfo</item>
0286       <item>ModuleInfo</item>
0287       <item>Interface</item>
0288       <item>OffsetTypeInfo</item>
0289       <item>TypeInfo_Typedef</item>
0290       <item>TypeInfo_Enum</item>
0291       <item>TypeInfo_Pointer</item>
0292       <item>TypeInfo_Array</item>
0293       <item>TypeInfo_StaticArray</item>
0294       <item>TypeInfo_AssociativeArray</item>
0295       <item>TypeInfo_Function</item>
0296       <item>TypeInfo_Delegate</item>
0297       <item>TypeInfo_Class</item>
0298       <item>TypeInfo_Interface</item>
0299       <item>TypeInfo_Struct</item>
0300       <item>TypeInfo_Tuple</item>
0301       
0302       <!-- phobos only as of tango 0.99.3 -->
0303       <item>string</item>
0304       <item>wstring</item>
0305       <item>dstring</item>
0306       <item>bit</item>
0307       <item>TypeInfo_Const</item>
0308       <item>TypeInfo_Invariant</item>
0309     </list>
0310 
0311     <list name="linkage">
0312       <item>extern</item>
0313     </list>
0314     <list name="ltypes">
0315       <item>C</item>
0316       <!-- <item>C++</item> --><!-- is handled specially in Linkage rule -->
0317       <item>D</item>
0318       <item>Windows</item>
0319       <item>Pascal</item>
0320       <item>System</item>
0321       <!-- <item>Objective-C</item> --><!-- is handled specially in Linkage rule -->
0322     </list>
0323 
0324     <list name="ptypes">
0325       <item>inline</item>
0326       <item>lib</item>
0327       <item>linkerDirective</item>
0328       <item>mangle</item>
0329       <item>msg</item>
0330       <item>startaddress</item>
0331     </list>
0332     
0333     <list name="scope_keywords">
0334       <item>exit</item>
0335       <item>success</item>
0336       <item>failure</item>
0337     </list>
0338 
0339     <list name="vtypes">
0340       <item>DigitalMars</item>
0341       <item>X86</item>
0342       <item>X86_64</item>
0343       <item>Windows</item>
0344       <item>Win32</item>
0345       <item>Win64</item>
0346       <item>linux</item>
0347       <item>LittleEndian</item>
0348       <item>BigEndian</item>
0349       <item>D_Coverage</item>
0350       <item>D_InlineAsm_X86</item>
0351       <item>unittest</item>
0352       <item>D_Version2</item>
0353       <item>none</item>
0354       <item>all</item>
0355     </list>
0356 
0357     <list name="specialtokens">
0358       <item>__FILE__</item>
0359       <item>__LINE__</item>
0360       <item>__DATE__</item>
0361       <item>__TIME__</item>
0362       <item>__TIMESTAMP__</item>
0363       <item>__VENDOR__</item>
0364       <item>__VERSION__</item>
0365       <item>__EOF__</item>
0366     </list>
0367     
0368     <list name="tests">
0369       <item>debug</item>
0370       <item>unittest</item>
0371     </list>
0372     
0373     <list name="pragma">
0374         <item>pragma</item>
0375     </list>
0376 
0377     <list name="version">
0378         <item>version</item>
0379     </list>
0380     
0381     <list name="deprecated">
0382         <item>deprecated</item>
0383         <item>volatile</item> <!-- has been deprecated -->
0384     </list>
0385     
0386     <contexts>
0387       <context name="normal" attribute="Normal Text" lineEndContext="#stay">
0388         <DetectSpaces />
0389         <!-- Performance improvement (probably): anything starting with a letter is matched separately -->
0390         <RegExpr String="[a-zA-Z_]" attribute="Normal Text" context="StartingLetter" lookAhead="true"/>
0391 
0392         <HlCStringChar attribute="EscapeSequence" context="#stay"/>
0393         <Detect2Chars attribute="EscapeSequence" context="UnicodeShort"   char="\" char1="u"/>
0394         <Detect2Chars attribute="EscapeSequence" context="UnicodeLong"   char="\" char1="U"/>
0395         <Detect2Chars attribute="EscapeSequence" context="HTMLEntity"   char="\" char1="&amp;"/>
0396 
0397         <DetectChar attribute="Char"     context="CharLiteral" char="'"/>
0398         <DetectChar attribute="String"   context="String"      char="&quot;"/>
0399         <DetectChar attribute="BQString" context="BQString"    char="`"/>
0400 
0401         <StringDetect attribute="Region Marker" context="Region Marker" String="//BEGIN" beginRegion="Region1" firstNonSpace="true" />
0402         <StringDetect attribute="Region Marker" context="Region Marker" String="//END" endRegion="Region1" firstNonSpace="true" />
0403         <IncludeRules context="CommentRules" />
0404 
0405         <!-- Match ... and .. before numbers are matched. -->
0406         <!-- Now in symbols keywords section    -->
0407         <StringDetect attribute="Normal Text" context="#stay" String="..."/>
0408         <Detect2Chars attribute="Normal Text"   char="." char1="."/>
0409         
0410         <!-- Float starting with a dot -->
0411         <RegExpr attribute="Float" context="#stay" String="\.\d[\d_]*(?:[eE][-+]?\d[\d_]*)?[fFL]?i?"/>
0412         
0413         <!-- Try to match various built-in properties -->
0414         <DetectChar char="." attribute="Normal Text" context="Properties"/>
0415 
0416         <!-- Look ahead for a digit and switch to NumberLiteral context if found. -->
0417         <RegExpr context="NumberLiteral" String="\d" attribute="Normal Text" lookAhead="true"/>
0418 
0419         <!-- #line Integer [Filespec] -->
0420         <StringDetect attribute="Pragma" context="LinePragma" String="#line"/>
0421         
0422         <!-- Rules for the C-style indenter. Currently problems with /// and /++ comments. -->
0423         <DetectChar attribute="Symbol" context="BraceA" char="{" beginRegion="BraceA" />
0424         <AnyChar attribute="Symbol" context="#stay" String=":!%&amp;()+,-/.*&lt;=&gt;?[]|~^&#59;"/>
0425       </context>
0426 
0427       <context name="BraceA" attribute="Normal Text" lineEndContext="#stay">
0428         <DetectChar attribute="Symbol" context="#pop" char="}" endRegion="BraceA" />
0429         <IncludeRules context="normal"/>
0430       </context>
0431 
0432       <context name="StartingLetter" attribute="Normal Text" lineEndContext="#pop">
0433           <DetectSpaces />
0434           <!-- fall-through should work now that DetectIdentifier is used (without infinite loops) -->
0435           <!-- maybe not... got an infinite loop -->
0436           <RegExpr String="[^a-zA-Z_]" attribute="Normal Text" context="#pop" lookAhead="true"/>
0437           
0438           <!-- detect whether scope, in, out, etc. are used as attributes or statements (etc.) -->
0439           <!-- rules cannot match across newlines unfortunately -->
0440           <RegExpr String="in\s*(?=\{)|out\s*(?=(\(([a-zA-Z_][\w_]*)?\)\s*)?\{)" attribute="Statement" context="#stay" />
0441           <RegExpr String="scope\s*(?=\()" attribute="Statement"       context="Scope"     />
0442           <RegExpr String="import\s*(?=\()" attribute="Expression"     context="#stay"     />
0443           <RegExpr String="(function|delegate)\s*(?=\()" attribute="Declarator"   context="#stay"     />
0444           
0445           <keyword String="statements"      attribute="Statement"      context="#stay"     />
0446           <keyword String="attributes"      attribute="Attribute"      context="#stay"     />
0447           <keyword String="expressions"     attribute="Expression"     context="#stay"     />
0448           <keyword String="declarators"     attribute="Declarator"     context="#stay"     />
0449           <keyword String="templates"       attribute="Template"       context="#stay"     />
0450           <keyword String="modules"         attribute="Module"         context="ModuleName"/>
0451           <keyword String="types"           attribute="Type"           context="#stay"     />
0452           <keyword String="libsymbols"      attribute="LibrarySymbols" context="#stay"     />
0453           <keyword String="linkage"         attribute="Linkage"        context="Linkage"   />
0454           <keyword String="specialtokens"   attribute="SpecialTokens"  context="#stay"     />
0455           <keyword String="tests"           attribute="Tests"          context="#stay"     />
0456           <!-- These must use keyword not DetectString: DetectString does not check for word-break after string. -->
0457           <keyword String="pragma"          attribute="Pragma"         context="Pragma"    />
0458           <keyword String="version"         attribute="Version"        context="Version"   />
0459           <keyword String="deprecated"      attribute="Deprecated"     context="#stay"     />
0460           
0461           <Detect2Chars attribute="RawString" context="RawString" char="r" char1="&quot;"/>
0462           <Detect2Chars attribute="HexString" context="HexString" char="x" char1="&quot;"/>
0463           <Detect2Chars attribute="Token String Delimiter" context="TokenString" char="q" char1="{"/>
0464           <RegExpr attribute="Delimited String Delimiter" context="DelimStrHeredoc" String="q&quot;([A-Za-z_][A-Za-z0-9_]*)$" />
0465           <StringDetect attribute="Delimited String Delimiter" context="DelimStrBracket" String="q&quot;[" />
0466           <StringDetect attribute="Delimited String Delimiter" context="DelimStrParen" String="q&quot;(" />
0467           <StringDetect attribute="Delimited String Delimiter" context="DelimStrLtGt" String="q&quot;&lt;" />
0468           <StringDetect attribute="Delimited String Delimiter" context="DelimStrBrace" String="q&quot;{" />
0469           <RegExpr attribute="Delimited String Delimiter" context="DelimStrSimple" String="q&quot;([^A-Za-z_[(&lt;{])" />
0470           
0471           <!-- user highlighting: last so as not to interfere with anything else -->
0472           <keyword String="userkeywords"    attribute="UserKeywords"   context="#stay"     />
0473           
0474           <DetectIdentifier />
0475       </context>
0476       
0477       <context name="Properties" attribute="Normal Text" lineEndContext="#stay" fallthrough="true" fallthroughContext="#pop">
0478         <keyword String="properties" attribute="Property" context="#pop" />
0479       </context>
0480       <context name="NumberLiteral" attribute="Normal Text" lineEndContext="#stay" fallthrough="true" fallthroughContext="#pop">
0481         <!-- Float literals -->
0482         <!-- Floats must be matched before Binary|Octal|Hex|DecInteger -->
0483         <RegExpr attribute="Float" context="#pop" String="&hexfloat;|&float;"/>
0484         
0485         <!-- Binary|Octal|Hex|DecInteger -->
0486         <!-- Common, optional suffix: (L[uU]?|[uU]L?)? -->
0487         <RegExpr attribute="Binary"  context="#pop" String="0[bB]_*[01][01_]*(?:L[uU]?|[uU]L?)?"/>
0488         <!-- Octal must be matched before DecInteger -->
0489         <RegExpr attribute="Octal"   context="#pop" String="0[0-7_]+(?:L[uU]?|[uU]L?)?"/>
0490         <RegExpr attribute="Hex"     context="#pop" String="0[xX]_*[\da-fA-F][\da-fA-F_]*(?:L[uU]?|[uU]L?)?"/>
0491         <!-- Decimal integers must be matched last -->
0492         <RegExpr attribute="Integer" context="#pop" String="\d+[\d_]*(?:L[uU]?|[uU]L?)?"/>
0493       </context>
0494 
0495       <context name="LinePragma" attribute="Pragma" lineEndContext="#pop">
0496         <DetectSpaces/>
0497         <!-- Match an Integer -->
0498         <RegExpr attribute="Integer" context="#stay" String="(?:(?:0(?:[0-7_]+|[bB]_*[01][01_]*|[xX]_*[\da-fA-F][\da-fA-F_]*))|\d+[\d_]*)(?:L[uU]?|[uU]L?)?"/>
0499         <RangeDetect attribute="String" context="#stay" char="&quot;" char1="&quot;"/>
0500         <keyword attribute="SpecialTokens"  context="#stay"      String="specialtokens"/>
0501         <IncludeRules context="CommentRules" />
0502         <RegExpr attribute="Error" context="#pop" String=".+"/>
0503       </context>
0504 
0505       <!-- \u 4HexDigits -->
0506       <context name="UnicodeShort" attribute="EscapeSequence" lineEndContext="#pop">
0507         <RegExpr attribute="EscapeSequence" context="#pop" String="[\da-fA-F]{4}"/>
0508       </context>
0509       <!-- \U 8HexDigits -->
0510       <context name="UnicodeLong" attribute="EscapeSequence" lineEndContext="#pop">
0511         <RegExpr attribute="EscapeSequence" context="#pop" String="[\da-fA-F]{8}"/>
0512       </context>
0513       <!-- \& Alpha Alphanumerical+ ; -->
0514       <context name="HTMLEntity" attribute="EscapeSequence" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
0515         <RegExpr attribute="EscapeSequence" context="#pop" String="[a-zA-Z]\w+;"/>
0516       </context>
0517 
0518       <context name="ModuleName" attribute="Module Name" lineEndContext="#stay">
0519         <DetectSpaces/>
0520         <IncludeRules context="CommentRules" />
0521         <RegExpr context="#pop" String="[^\s\w.:,=]" lookAhead="true"/>
0522       </context>
0523 
0524       <context name="Linkage" attribute="Normal Text" lineEndContext="#stay" fallthrough="true" fallthroughContext="#pop">
0525         <DetectSpaces/>
0526         <DetectChar attribute="Normal Text" context="Linkage2" char="("/>
0527         <IncludeRules context="CommentRules" />
0528       </context>
0529       <context name="Linkage2" attribute="Normal Text" lineEndContext="#stay">
0530         <DetectSpaces/>
0531         <StringDetect attribute="Linkage Type" context="Linkage-C++" String="C++"/>
0532         <StringDetect attribute="Linkage Type" context="#stay" String="Objective-C"/>
0533         <keyword    attribute="Linkage Type" context="#stay" String="ltypes"/>
0534         <IncludeRules context="CommentRules" />
0535         <!-- Fall-through rules, highlighting errors: -->
0536         <DetectChar char=")" attribute="Normal Text" context="#pop#pop"/>
0537         <RegExpr String="[^)\s\n]+" attribute="Error" context="#pop#pop"/>
0538       </context>
0539       <context name="Linkage-C++" attribute="Normal Text" lineEndContext="#stay">
0540         <DetectSpaces/>
0541         <IncludeRules context="CommentRules" />
0542         <DetectChar char="," attribute="Normal Text" context="Linkage-C++2"/>
0543         <DetectChar char=")" attribute="Normal Text" context="#pop#pop#pop"/>
0544         <RegExpr String="." attribute="Error" context="#stay"/>
0545       </context>
0546       <context name="Linkage-C++2" attribute="Normal Text" lineEndContext="#stay">
0547         <DetectSpaces/>
0548         <IncludeRules context="CommentRules" />
0549         <DetectIdentifier attribute="Normal Text" context="#stay"/>
0550         <DetectChar char="." attribute="Normal Text" context="#stay"/>
0551         <DetectChar char=")" attribute="Normal Text" context="#pop#pop#pop"/>
0552         <RegExpr String="." attribute="Error" context="#stay"/>
0553       </context>
0554 
0555       <context name="Version" attribute="Normal Text" lineEndContext="#stay">
0556         <DetectSpaces/>
0557         <DetectChar attribute="Normal Text" context="VersionSpec" char="="/>
0558         <DetectChar attribute="Normal Text" context="VersionCond" char="("/>
0559         <IncludeRules context="CommentRules" />
0560         <!-- Fall-through rules, highlighting errors: -->
0561         <RegExpr String="[^\s\n]+" attribute="Error" context="#pop"/>
0562       </context>
0563       <context name="VersionSpec" attribute="Normal Text" lineEndContext="#stay">
0564         <DetectSpaces/>
0565         <DetectIdentifier attribute="Normal Text" context="#stay"/>
0566         <RegExpr attribute="Integer" context="#stay" String="\d+[\d_]*(?:L[uU]?|[uU]L?)?"/>
0567         <DetectChar char=";" attribute="Normal Text" context="#pop#pop"/>
0568         <RegExpr String="." attribute="Error" context="#pop#pop"/>
0569       </context>
0570       <context name="VersionCond" attribute="Normal Text" lineEndContext="#stay">
0571         <DetectSpaces/>
0572         <keyword    attribute="Version Type" context="#stay" String="vtypes"/>
0573         <DetectIdentifier attribute="Normal Text" context="#stay"/>
0574         <RegExpr attribute="Integer" context="#stay" String="\d+[\d_]*(?:L[uU]?|[uU]L?)?"/>
0575         <IncludeRules context="CommentRules" />
0576         <!-- Fall-through rules, highlighting errors: -->
0577         <DetectChar char=")" attribute="Normal Text" context="#pop#pop"/>
0578         <RegExpr String="[^)\s\n]+" attribute="Error" context="#pop#pop"/>
0579       </context>
0580       
0581       <context name="Scope" attribute="Normal Text" lineEndContext="#stay" fallthrough="true" fallthroughContext="#pop">
0582         <DetectSpaces/>
0583         <DetectChar attribute="Normal Text" context="Scope2" char="("/>
0584         <IncludeRules context="CommentRules" />
0585       </context>
0586       <context name="Scope2" attribute="Normal Text" lineEndContext="#stay">
0587         <DetectSpaces/>
0588         <keyword String="scope_keywords" attribute="Expression" context="#stay"/>
0589         <IncludeRules context="CommentRules" />
0590         <!-- Fall-through rules, highlighting errors: -->
0591         <DetectChar char=")" attribute="Normal Text" context="#pop#pop"/>
0592         <RegExpr String="[^)\s\n]+" attribute="Error" context="#pop#pop"/>
0593       </context>
0594 
0595       <context name="Pragma" attribute="Pragma" lineEndContext="#stay">
0596         <DetectSpaces/>
0597         <DetectChar attribute="Normal Text"  context="Pragma2" char="("/>
0598         <IncludeRules context="CommentRules" />
0599         <!-- Fall-through rules, highlighting errors: -->
0600         <RegExpr String="[^\s\n]+" attribute="Error" context="#pop"/>
0601       </context>
0602       <context name="Pragma2" attribute="Pragma" lineEndContext="#stay">
0603         <DetectSpaces/>
0604         <keyword    attribute="Version Type" context="Pragma3" String="ptypes"/>
0605         <DetectIdentifier attribute="Normal Text" context="Pragma3"/>
0606         <IncludeRules context="CommentRules" />
0607         <!-- Fall-through rules, highlighting errors: -->
0608         <DetectChar char=")" attribute="Normal Text" context="#pop#pop"/>
0609         <RegExpr String="[^)\s\n]+" attribute="Error" context="#pop#pop"/>
0610       </context>
0611       <context name="Pragma3" attribute="Pragma" lineEndContext="#stay">
0612         <DetectSpaces/>
0613         <DetectChar char="," attribute="Normal Text" context="Pragma4"/>
0614         <DetectChar char=")" attribute="Normal Text" context="#pop#pop#pop"/>
0615         <RegExpr String="." attribute="Error" context="#pop#pop#pop"/>
0616       </context>
0617       <context name="Pragma4" attribute="Pragma" lineEndContext="#stay">
0618         <DetectChar char="(" attribute="Normal Text" context="Parenthetical"/>
0619         <DetectChar char=")" attribute="Normal Text" context="#pop#pop#pop#pop"/>
0620         <IncludeRules context="normal" />
0621       </context>
0622       <context name="Parenthetical" attribute="Normal Text" lineEndContext="#stay">
0623         <DetectChar char="(" attribute="Normal Text" context="Parenthetical"/>
0624         <DetectChar char=")" attribute="Normal Text" context="#pop"/>
0625         <IncludeRules context="normal" />
0626       </context>
0627 
0628       <!-- Strings -->
0629       <!-- r"..." -->
0630       <context name="RawString" attribute="RawString" lineEndContext="#stay">
0631         <DetectChar attribute="RawString" context="#pop" char="&quot;"/>
0632       </context>
0633       <!-- `...` -->
0634       <context name="BQString" attribute="BQString" lineEndContext="#stay">
0635         <DetectChar attribute="BQString" context="#pop" char="`"/>
0636       </context>
0637       <!-- x"..." -->
0638       <context name="HexString" attribute="HexString" lineEndContext="#stay">
0639         <DetectChar attribute="HexString" context="#pop" char="&quot;"/>
0640         <RegExpr attribute="Error" context="#stay" String="[^\sa-fA-F\d&quot;]+" />
0641       </context>
0642       <!-- '...' -->
0643       <context name="CharLiteral" attribute="Char" lineEndContext="CharLiteralClosing" fallthrough="true" fallthroughContext="#pop">
0644         <!-- Empty '' -->
0645         <DetectChar   attribute="Char" context="#pop"  char="'"/>
0646         <!-- \t \n \r etc. -->
0647         <HlCStringChar attribute="EscapeSequence" context="CharLiteralClosing"/>
0648         <!-- \u 4HexDigits | \U 8HexDigits | HTMLEntity -->
0649         <RegExpr attribute="EscapeSequence" context="CharLiteralClosing" String="\\(?:u[\da-fA-F]{4}|U[\da-fA-F]{8}|&amp;[a-zA-Z]\w+;)"/>
0650         <!-- Invalid escape sequences -->
0651         <RegExpr attribute="Error" context="CharLiteralClosing" String="\\."/>
0652         <!-- Any character -->
0653         <RegExpr attribute="Char" context="CharLiteralClosing" String="."/>
0654       </context>
0655       <!-- Anything other than a closing ' is now be an error -->
0656       <context name="CharLiteralClosing" attribute="Error" lineEndContext="#pop#pop" fallthrough="true" fallthroughContext="#pop#pop">
0657         <DetectChar attribute="Char" context="#pop#pop"  char="'"/>
0658       </context>
0659       <!-- "..." -->
0660       <context name="String" attribute="String" lineEndContext="#stay">
0661         <HlCStringChar attribute="EscapeSequence"/>
0662         <Detect2Chars attribute="String" context="#pop" char="&quot;" char1="c"/>
0663         <Detect2Chars attribute="String" context="#pop" char="&quot;" char1="w"/>
0664         <Detect2Chars attribute="String" context="#pop" char="&quot;" char1="d"/>
0665         <DetectChar attribute="String" context="#pop" char="&quot;"/>
0666         <Detect2Chars attribute="EscapeSequence" context="UnicodeShort"   char="\" char1="u"/>
0667         <Detect2Chars attribute="EscapeSequence" context="UnicodeLong"   char="\" char1="U"/>
0668         <Detect2Chars attribute="EscapeSequence" context="HTMLEntity"   char="\" char1="&amp;"/>
0669       </context>
0670       <!-- token strings: q{...} -->
0671       <context name="TokenString" attribute="Normal Text" lineEndContext="#stay">
0672         <DetectChar attribute="Token String Delimiter" context="#pop" char="}" />
0673         <IncludeRules context="normal" />
0674       </context>
0675       <!-- delimited strings -->
0676       <!-- q"IDENTIFIER...IDENTIFIER" -->
0677       <context name="DelimStrHeredoc" attribute="Delimited String Content" lineEndContext="#stay">
0678         <StringDetect attribute="Delimited String Delimiter" context="#pop" String="%1&quot;" dynamic="true" column="0" />
0679         <StringDetect attribute="Error" context="#pop" String="%1" dynamic="true" column="0" />
0680       </context>
0681       <!-- q"[...]" -->
0682       <context name="DelimStrBracket" attribute="Delimited String Content" lineEndContext="#stay">
0683         <DetectChar attribute="Delimited String Content" context="DelimStrBracket2" char="[" />
0684         <Detect2Chars attribute="Delimited String Delimiter" context="#pop" char="]" char1="&quot;" />
0685         <DetectChar attribute="Error" context="#pop" char="]" />
0686       </context>
0687       <context name="DelimStrBracket2" attribute="Delimited String Content" lineEndContext="#stay">
0688         <DetectChar attribute="Delimited String Content" context="DelimStrBracket2" char="[" />
0689         <DetectChar attribute="Delimited String Content" context="#pop" char="]" />
0690       </context>
0691       <!-- q"(...)" -->
0692       <context name="DelimStrParen" attribute="Delimited String Content" lineEndContext="#stay">
0693         <DetectChar attribute="Delimited String Content" context="DelimStrParen2" char="(" />
0694         <Detect2Chars attribute="Delimited String Delimiter" context="#pop" char=")" char1="&quot;" />
0695         <DetectChar attribute="Error" context="#pop" char=")" />
0696       </context>
0697       <context name="DelimStrParen2" attribute="Delimited String Content" lineEndContext="#stay">
0698         <DetectChar attribute="Delimited String Content" context="DelimStrParen2" char="(" />
0699         <DetectChar attribute="Delimited String Content" context="#pop" char=")" />
0700       </context>
0701       <!-- q"<...>" -->
0702       <context name="DelimStrLtGt" attribute="Delimited String Content" lineEndContext="#stay">
0703         <DetectChar attribute="Delimited String Content" context="DelimStrLtGt2" char="&lt;" />
0704         <Detect2Chars attribute="Delimited String Delimiter" context="#pop" char="&gt;" char1="&quot;" />
0705         <DetectChar attribute="Error" context="#pop" char="&gt;" />
0706       </context>
0707       <context name="DelimStrLtGt2" attribute="Delimited String Content" lineEndContext="#stay">
0708         <DetectChar attribute="Delimited String Content" context="DelimStrLtGt2" char="&lt;" />
0709         <DetectChar attribute="Delimited String Content" context="#pop" char="&gt;" />
0710       </context>
0711       <!-- q"{...}" -->
0712       <context name="DelimStrBrace" attribute="Delimited String Content" lineEndContext="#stay">
0713         <DetectChar attribute="Delimited String Content" context="DelimStrBrace2" char="{" />
0714         <Detect2Chars attribute="Delimited String Delimiter" context="#pop" char="}" char1="&quot;" />
0715         <DetectChar attribute="Error" context="#pop" char="}" />
0716       </context>
0717       <context name="DelimStrBrace2" attribute="Delimited String Content" lineEndContext="#stay">
0718         <DetectChar attribute="Delimited String Content" context="DelimStrBrace2" char="{" />
0719         <DetectChar attribute="Delimited String Content" context="#pop" char="}" />
0720       </context>
0721       <!-- q"*...*" -->
0722       <context name="DelimStrSimple" attribute="Delimited String Content" lineEndContext="#stay">
0723         <StringDetect attribute="Delimited String Delimiter" context="#pop" String="%1&quot;" dynamic="true" />
0724         <StringDetect attribute="Error" context="#pop" String="%1" dynamic="true" />
0725       </context>
0726 
0727       <!-- Comments -->
0728       <context name="CommentRules" attribute="Normal Text" lineEndContext="#pop">
0729         <IncludeRules context="DdocNormal" />
0730         <Detect2Chars attribute="Comment" context="CommentLine"   char="/" char1="/"/>
0731         <Detect2Chars attribute="Comment" context="CommentBlock" char="/" char1="*" beginRegion="CommentBlock"/>
0732         <Detect2Chars attribute="Comment" context="CommentNested" char="/" char1="+" beginRegion="CommentNested"/>
0733         <!-- This context is only for including rules from. -->
0734       </context>
0735       <context name="Region Marker" attribute="Region Marker" lineEndContext="#pop">
0736       </context>
0737       <context name="CommentLine" attribute="Comment" lineEndContext="#pop">
0738         <DetectSpaces />
0739         <IncludeRules context="##Comments" />
0740       </context>
0741       <context name="CommentBlock" attribute="Comment" lineEndContext="#stay">
0742         <DetectSpaces />
0743         <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" endRegion="CommentBlock"/>
0744         <IncludeRules context="##Comments" />
0745       </context>
0746       <context name="CommentNested" attribute="Comment" lineEndContext="#stay">
0747         <DetectSpaces />
0748         <Detect2Chars attribute="Comment" context="CommentNested" char="/" char1="+" beginRegion="CommentNested"/>
0749         <Detect2Chars attribute="Comment" context="#pop" char="+" char1="/" endRegion="CommentNested"/>
0750         <IncludeRules context="##Comments" />
0751       </context>
0752       
0753       
0754       <!-- Ddoc contexts -->
0755       <context name="DdocNormal" attribute="Normal Text" lineEndContext="#stay">
0756         <RegExpr attribute="Comment" context="DdocLine" String="/{3,}"/>
0757         <RegExpr attribute="Comment" context="DdocBlock" String="/\*{2,}(?!/)" beginRegion="DdocBlock"/>
0758         <RegExpr attribute="Comment" context="DdocNested" String="/\+{2,}(?!/)" beginRegion="DdocNested"/>
0759       </context>
0760       
0761       <context name="DdocLine" attribute="Ddoc" lineEndContext="#pop">
0762         <DetectSpaces />
0763         <DetectIdentifier attribute="Ddoc"/>
0764         <Detect2Chars attribute="Macros" context="DdocMacro" char="$" char1="(" />
0765         <RegExpr attribute="DdocSection" context="#stay" String="[\w_]+:(?:$|\s)" />
0766         <IncludeRules context="##Comments" />
0767       </context>
0768       
0769       <context name="DdocBlock" attribute="Ddoc" lineEndContext="#stay">
0770         <DetectSpaces />
0771         <DetectIdentifier attribute="Ddoc"/>
0772         <RegExpr attribute="Comment" context="#pop" String="\*+/" endRegion="DdocBlock"/>
0773         <DetectChar attribute="Comment" context="#stay" char="*" firstNonSpace="true" />
0774         
0775         <Detect2Chars attribute="Macros" context="DdocMacro" char="$" char1="(" />
0776         <RegExpr attribute="DdocSection" context="#stay" String="[\w_]+:(?:$|\s)" />
0777         <IncludeRules context="##Comments" />
0778         
0779         <!-- Avoid matching this; do it this way since (^|\s)-* always matches .- and \s-* never
0780              matches .- (spaces have already been matched); however -*($|\s) matches just fine.
0781              Also can't use \b since - is not a word character. -->
0782         <RegExpr attribute="Ddoc" context="#stay" String="[^-]-{3,}" />
0783         <RegExpr attribute="Comment" context="DdocBlockCode" String="-{3,}(?:$|\s)" />
0784       </context>
0785       
0786       <context name="DdocNested" attribute="Ddoc" lineEndContext="#stay">
0787         <DetectSpaces />
0788         <DetectIdentifier attribute="Ddoc"/>
0789         <!-- Ddoc recognises nested comments/ddoc, but ignores them as far as formatting is concerned. -->
0790         <Detect2Chars attribute="Ddoc" context="DdocNested2" char="/" char1="+"/>
0791         <RegExpr attribute="Comment" context="#pop" String="\++/" endRegion="DdocNested"/>
0792         <DetectChar attribute="Comment" context="#stay" char="+" firstNonSpace="true" />
0793         
0794         <Detect2Chars attribute="Macros" context="DdocMacro" char="$" char1="(" />
0795         <RegExpr attribute="DdocSection" context="#stay" String="[\w_]+:(?:$|\s)" />
0796         <IncludeRules context="##Comments" />
0797         
0798         <!-- As above. -->
0799         <RegExpr attribute="Ddoc" context="#stay" String="[^-]-{3,}" />
0800         <RegExpr attribute="Comment" context="DdocNestedCode" String="-{3,}(?:$|\s)" />
0801       </context>
0802       
0803       <context name="DdocNested2" attribute="Ddoc" lineEndContext="#stay">
0804         <DetectSpaces />
0805         <DetectIdentifier attribute="Ddoc"/>
0806         <!-- Identical to DdocNested except that nested comments don't receive any formatting -->
0807         <RegExpr attribute="Ddoc" context="#pop" String="\++/"/>
0808         <!-- The above rules should match before the unwanted rule in DdocNested -->
0809         <IncludeRules context="DdocNested" />
0810       </context>
0811       
0812       <!-- When entering a macro: provides highlighting for first symbol (macro name) -->
0813       <context name="DdocMacro" attribute="Error" lineEndContext="#stay">
0814         <DetectSpaces attribute="Macro Text" /> <!-- avoid showing space as an error -->
0815         
0816         <DetectChar attribute="Macros" context="#pop" char=")" /> <!-- early end of macro -->
0817         <IncludeRules context="MacroRules" />
0818         
0819         <!-- first symbol of macro -->
0820         <DetectIdentifier attribute="Macros" context="DdocMacro2" />
0821       </context>
0822       <!-- For rest of macro -->
0823       <context name="DdocMacro2" attribute="Macro Text" lineEndContext="#stay">
0824         <DetectChar attribute="Macros" context="#pop#pop" char=")" /> <!-- end of macro -->
0825         <IncludeRules context="MacroRules" />
0826       </context>
0827       <!-- For embedded brackets (yeah, extra work to ignore them) -->
0828       <context name="DdocMacro3" attribute="Macro Text" lineEndContext="#stay">
0829         <DetectChar attribute="Macro Text" context="#pop" char=")" /> <!-- end of embedded brackets -->
0830         <IncludeRules context="MacroRules" />
0831       </context>
0832       <!-- Rules common to all macros -->
0833       <context name="MacroRules" attribute="Macro Text" lineEndContext="#stay">
0834         <Detect2Chars attribute="Macros" context="DdocMacro" char="$" char1="(" /> <!-- embedded -->
0835         <DetectChar attribute="Macro Text" context="DdocMacro3" char="(" /> <!-- extra brackets -->
0836         
0837         <DetectChar attribute="Comment" context="#stay" char="*" firstNonSpace="true" />
0838       </context>
0839       
0840       <context name="DdocBlockCode" attribute="DdocCode" lineEndContext="#stay">
0841         <DetectSpaces />
0842         <!-- See update 1.11 -->
0843         <RegExpr attribute="Comment" context="#pop#pop" String="\*+/" endRegion="DdocBlock"/>
0844         <DetectChar attribute="Comment" context="#stay" char="*" firstNonSpace="true" />
0845         <!-- As above. -->
0846         <RegExpr attribute="DdocCode" context="#stay" String="[^-]-{3,}" />
0847         <RegExpr attribute="Comment" context="#pop" String="-{3,}(?:$|\s)" />
0848         <IncludeRules context="##D" />
0849       </context>
0850       <context name="DdocNestedCode" attribute="DdocCode" lineEndContext="#stay">
0851         <DetectSpaces />
0852         <!-- See update 1.11 -->
0853         <RegExpr attribute="Comment" context="#pop#pop" String="\++/" endRegion="DdocNested"/>
0854         <DetectChar attribute="Comment" context="#stay" char="+" firstNonSpace="true" />
0855         <!-- As above. -->
0856         <RegExpr attribute="DdocCode" context="#stay" String="[^-]-{3,}" />
0857         <RegExpr attribute="Comment" context="#pop" String="-{3,}(?:$|\s)" />
0858         <IncludeRules context="##D" />
0859       </context>
0860     </contexts>
0861     <itemDatas>
0862       <itemData name="Normal Text"    defStyleNum="dsNormal"/>
0863       <itemData name="Symbol"         defStyleNum="dsOperator"/>
0864       
0865       <!-- keywords -->
0866       <itemData name="Statement"      defStyleNum="dsKeyword"/>
0867       <itemData name="Expression"     defStyleNum="dsAttribute"  bold="1"/> <!-- #000080 -->
0868       <itemData name="Declarator"     defStyleNum="dsWarning"    bold="1"/> <!-- #800000 -->
0869       <itemData name="Template"       defStyleNum="dsOthers"     bold="1"/> <!-- #008000 -->
0870       
0871       <itemData name="Attribute"      defStyleNum="dsFunction"   bold="1"/> <!-- #800080 -->
0872       <itemData name="Deprecated"     defStyleNum="dsFunction"   bold="1" strikeOut="true"/> <!-- #800080 -->
0873       
0874       <itemData name="Property"       defStyleNum="dsDataType"   bold="1"/> <!-- #000080 -->
0875       
0876       <itemData name="Type"           defStyleNum="dsDataType"/>
0877       <itemData name="LibrarySymbols" defStyleNum="dsBuiltIn" italic="1"/>
0878 
0879       <itemData name="UserKeywords"   defStyleNum="dsDataType" italic="1"/>
0880 
0881       <!-- module, import -->
0882       <itemData name="Module"         defStyleNum="dsPreprocessor" bold="1"/> <!-- #008000 -->
0883       <itemData name="Module Name"    defStyleNum="dsImport"/> <!-- #008000 -->
0884 
0885       <!-- pragma, special tokens -->
0886       <itemData name="SpecialTokens"  defStyleNum="dsOthers"   bold="1"/> <!-- #00aa00 -->
0887       <itemData name="Pragma"         defStyleNum="dsOthers"   bold="1"/> <!-- #00aa00 -->
0888 
0889       <!-- version, extern -->
0890       <itemData name="Version"        defStyleNum="dsDecVal"/> <!-- #808000 -->
0891       <itemData name="Version Type"   defStyleNum="dsNormal"      bold="1"/>
0892       <itemData name="Linkage"        defStyleNum="dsInformation" bold="1"/> <!-- #808000 -->
0893       <itemData name="Linkage Type"   defStyleNum="dsNormal"      bold="1"/>
0894 
0895       <itemData name="Tests"        defStyleNum="dsFunction"      bold="1"/> <!-- #ff00ff -->
0896 
0897       <itemData name="Comment"        defStyleNum="dsComment"/>
0898       <itemData name="Region Marker"  defStyleNum="dsRegionMarker" />
0899       
0900       <itemData name="Error"          defStyleNum="dsError"/>
0901       
0902       <!-- literals -->
0903       <itemData name="Integer"        defStyleNum="dsDecVal"/>
0904       <itemData name="Binary"         defStyleNum="dsBaseN"/>
0905       <itemData name="Octal"          defStyleNum="dsBaseN"/>
0906       <itemData name="Hex"            defStyleNum="dsBaseN"/>
0907       <itemData name="Float"          defStyleNum="dsFloat"/>
0908       
0909       <itemData name="EscapeSequence" defStyleNum="dsSpecialChar"/>
0910       <itemData name="String"         defStyleNum="dsString"/>
0911       <itemData name="Char"           defStyleNum="dsChar"/>
0912       <itemData name="RawString"      defStyleNum="dsVerbatimString"/>
0913       <itemData name="BQString"       defStyleNum="dsSpecialString"/>
0914       <itemData name="HexString"      defStyleNum="dsSpecialString"/>
0915       <itemData name="Token String Delimiter" defStyleNum="dsKeyword"/>
0916       <itemData name="Delimited String Content" defStyleNum="dsVerbatimString"/>
0917       <itemData name="Delimited String Delimiter" defStyleNum="dsKeyword"/>
0918       
0919       <!-- Ddoc specific -->
0920       <itemData name="Macros"      defStyleNum="dsSpecialChar" bold="1" italic="0" /> <!-- #bf5fbf -->
0921       <itemData name="Macro Text"  defStyleNum="dsAttribute" bold="0" italic="0" /> <!-- #bf7fff -->
0922       <itemData name="Ddoc"        defStyleNum="dsDocumentation" /> <!-- #7f7fff -->
0923       <itemData name="DdocSection" defStyleNum="dsAnnotation" bold="1" /> <!-- #7f7fff -->
0924       <itemData name="DdocCode"    defStyleNum="dsNormal" italic="1" />
0925     </itemDatas>
0926   </highlighting>
0927   <general>
0928     <comments>
0929       <comment name="singleLine" start="//" position="afterwhitespace"/>
0930       <comment name="multiLine"  start="/+" end="+/" region="CommentNested"/>
0931     </comments>
0932     <keywords casesensitive="true"/>
0933   </general>
0934 </language>
0935 <!-- kate: replace-tabs on; tab-width 2; indent-width 2; -->