<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE language [
<!ENTITY hexfloat "0[xX][\da-fA-F_]*(?:\.[\da-fA-F_]*)?[pP][-+]?\d[\d_]*[fFL]?i?">
<!ENTITY float "\d[_\d]*(?:\.(?!\.)[_\d]*(?:[eE][-+]?\d[_\d]*)?[fFL]?i?|[eE][-+]?\d[_\d]*[fFL]?i?|[fF]i?|[fFL]?i)">
]>
<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">
<highlighting>
<list name="userkeywords">
</list>
<list name="statements">
<item>asm</item>
<item>body</item>
<item>break</item>
<item>case</item>
<item>catch</item>
<item>continue</item>
<item>default</item>
<item>do</item>
<item>else</item>
<item>finally</item>
<item>for</item>
<item>foreach</item>
<item>foreach_reverse</item>
<item>goto</item>
<item>if</item>
<item>mixin</item>
<item>return</item>
<item>switch</item>
<item>throw</item>
<item>try</item>
<item>while</item>
<item>with</item>
<item>synchronized</item>
</list>
<list name="attributes">
<item>abstract</item>
<item>align</item>
<item>auto</item>
<item>const</item>
<item>export</item>
<item>final</item>
<item>immutable</item>
<item>inout</item>
<item>invariant</item>
<item>lazy</item>
<item>nothrow</item>
<item>override</item>
<item>package</item>
<item>private</item>
<item>protected</item>
<item>public</item>
<item>pure</item>
<item>ref</item>
<item>shared</item>
<item>static</item>
<item>out</item>
<item>scope</item>
<item>__gshared</item>
</list>
<list name="expressions">
<item>false</item>
<item>null</item>
<item>super</item>
<item>this</item>
<item>true</item>
<item>typeid</item>
<item>assert</item>
<item>cast</item>
<item>is</item>
<item>new</item>
<item>delete</item>
<item>in</item>
<item>delegate</item>
<item>function</item>
</list>
<list name="modules">
<item>module</item>
<item>import</item>
</list>
<list name="declarators">
<item>alias</item>
<item>enum</item>
<item>typedef</item>
<item>class</item>
<item>interface</item>
<item>struct</item>
<item>union</item>
</list>
<list name="types">
<item>typeof</item>
<item>void</item>
<item>bool</item>
<item>byte</item>
<item>ubyte</item>
<item>short</item>
<item>ushort</item>
<item>int</item>
<item>uint</item>
<item>long</item>
<item>ulong</item>
<item>cent</item>
<item>ucent</item>
<item>float</item>
<item>double</item>
<item>real</item>
<item>ireal</item>
<item>ifloat</item>
<item>idouble</item>
<item>creal</item>
<item>cfloat</item>
<item>cdouble</item>
<item>char</item>
<item>wchar</item>
<item>dchar</item>
</list>
<list name="templates">
<item>macro</item>
<item>template</item>
</list>
<list name="properties">
<item>init</item>
<item>sizeof</item>
<item>alignof</item>
<item>mangleof</item>
<item>stringof</item>
<item>tupleof</item>
<item>offsetof</item>
<item>max</item>
<item>min</item>
<item>infinity</item>
<item>nan</item>
<item>dig</item>
<item>epsilon</item>
<item>mant_dig</item>
<item>max_10_exp</item>
<item>max_exp</item>
<item>min_10_exp</item>
<item>min_exp</item>
<item>re</item>
<item>im</item>
<item>length</item>
<item>ptr</item>
<item>dup</item>
<item>idup</item>
<item>reverse</item>
<item>sort</item>
<item>keys</item>
<item>values</item>
<item>rehash</item>
</list>
<list name="libsymbols">
<item>size_t</item>
<item>ptrdiff_t</item>
<item>hash_t</item>
<item>Error</item>
<item>Exception</item>
<item>Object</item>
<item>TypeInfo</item>
<item>ClassInfo</item>
<item>ModuleInfo</item>
<item>Interface</item>
<item>OffsetTypeInfo</item>
<item>TypeInfo_Typedef</item>
<item>TypeInfo_Enum</item>
<item>TypeInfo_Pointer</item>
<item>TypeInfo_Array</item>
<item>TypeInfo_StaticArray</item>
<item>TypeInfo_AssociativeArray</item>
<item>TypeInfo_Function</item>
<item>TypeInfo_Delegate</item>
<item>TypeInfo_Class</item>
<item>TypeInfo_Interface</item>
<item>TypeInfo_Struct</item>
<item>TypeInfo_Tuple</item>
<item>string</item>
<item>wstring</item>
<item>dstring</item>
<item>bit</item>
<item>TypeInfo_Const</item>
<item>TypeInfo_Invariant</item>
</list>
<list name="linkage">
<item>extern</item>
</list>
<list name="ltypes">
<item>C</item>
<item>D</item>
<item>Windows</item>
<item>Pascal</item>
<item>System</item>
</list>
<list name="ptypes">
<item>inline</item>
<item>lib</item>
<item>linkerDirective</item>
<item>mangle</item>
<item>msg</item>
<item>startaddress</item>
</list>
<list name="scope_keywords">
<item>exit</item>
<item>success</item>
<item>failure</item>
</list>
<list name="vtypes">
<item>DigitalMars</item>
<item>X86</item>
<item>X86_64</item>
<item>Windows</item>
<item>Win32</item>
<item>Win64</item>
<item>linux</item>
<item>LittleEndian</item>
<item>BigEndian</item>
<item>D_Coverage</item>
<item>D_InlineAsm_X86</item>
<item>unittest</item>
<item>D_Version2</item>
<item>none</item>
<item>all</item>
</list>
<list name="specialtokens">
<item>__FILE__</item>
<item>__LINE__</item>
<item>__DATE__</item>
<item>__TIME__</item>
<item>__TIMESTAMP__</item>
<item>__VENDOR__</item>
<item>__VERSION__</item>
<item>__EOF__</item>
</list>
<list name="tests">
<item>debug</item>
<item>unittest</item>
</list>
<list name="pragma">
<item>pragma</item>
</list>
<list name="version">
<item>version</item>
</list>
<list name="deprecated">
<item>deprecated</item>
<item>volatile</item>
</list>
<contexts>
<context name="normal" attribute="Normal Text" lineEndContext="#stay">
<DetectSpaces />
<RegExpr String="[a-zA-Z_]" attribute="Normal Text" context="StartingLetter" lookAhead="true"/>
<HlCStringChar attribute="EscapeSequence" context="#stay"/>
<Detect2Chars attribute="EscapeSequence" context="UnicodeShort" char="\" char1="u"/>
<Detect2Chars attribute="EscapeSequence" context="UnicodeLong" char="\" char1="U"/>
<Detect2Chars attribute="EscapeSequence" context="HTMLEntity" char="\" char1="&"/>
<DetectChar attribute="Char" context="CharLiteral" char="'"/>
<DetectChar attribute="String" context="String" char="""/>
<DetectChar attribute="BQString" context="BQString" char="`"/>
<StringDetect attribute="Region Marker" context="Region Marker" String="//BEGIN" beginRegion="Region1" firstNonSpace="true" />
<StringDetect attribute="Region Marker" context="Region Marker" String="//END" endRegion="Region1" firstNonSpace="true" />
<IncludeRules context="CommentRules" />
<StringDetect attribute="Normal Text" context="#stay" String="..."/>
<Detect2Chars attribute="Normal Text" char="." char1="."/>
<RegExpr attribute="Float" context="#stay" String="\.\d[\d_]*(?:[eE][-+]?\d[\d_]*)?[fFL]?i?"/>
<DetectChar char="." attribute="Normal Text" context="Properties"/>
<RegExpr context="NumberLiteral" String="\d" attribute="Normal Text" lookAhead="true"/>
<StringDetect attribute="Pragma" context="LinePragma" String="#line"/>
<DetectChar attribute="Symbol" context="BraceA" char="{" beginRegion="BraceA" />
<AnyChar attribute="Symbol" context="#stay" String=":!%&()+,-/.*<=>?[]|~^;"/>
</context>
<context name="BraceA" attribute="Normal Text" lineEndContext="#stay">
<DetectChar attribute="Symbol" context="#pop" char="}" endRegion="BraceA" />
<IncludeRules context="normal"/>
</context>
<context name="StartingLetter" attribute="Normal Text" lineEndContext="#pop">
<DetectSpaces />
<RegExpr String="[^a-zA-Z_]" attribute="Normal Text" context="#pop" lookAhead="true"/>
<RegExpr String="in\s*(?=\{)|out\s*(?=(\(([a-zA-Z_][\w_]*)?\)\s*)?\{)" attribute="Statement" context="#stay" />
<RegExpr String="scope\s*(?=\()" attribute="Statement" context="Scope" />
<RegExpr String="import\s*(?=\()" attribute="Expression" context="#stay" />
<RegExpr String="(function|delegate)\s*(?=\()" attribute="Declarator" context="#stay" />
<keyword String="statements" attribute="Statement" context="#stay" />
<keyword String="attributes" attribute="Attribute" context="#stay" />
<keyword String="expressions" attribute="Expression" context="#stay" />
<keyword String="declarators" attribute="Declarator" context="#stay" />
<keyword String="templates" attribute="Template" context="#stay" />
<keyword String="modules" attribute="Module" context="ModuleName"/>
<keyword String="types" attribute="Type" context="#stay" />
<keyword String="libsymbols" attribute="LibrarySymbols" context="#stay" />
<keyword String="linkage" attribute="Linkage" context="Linkage" />
<keyword String="specialtokens" attribute="SpecialTokens" context="#stay" />
<keyword String="tests" attribute="Tests" context="#stay" />
<keyword String="pragma" attribute="Pragma" context="Pragma" />
<keyword String="version" attribute="Version" context="Version" />
<keyword String="deprecated" attribute="Deprecated" context="#stay" />
<Detect2Chars attribute="RawString" context="RawString" char="r" char1="""/>
<Detect2Chars attribute="HexString" context="HexString" char="x" char1="""/>
<Detect2Chars attribute="Token String Delimiter" context="TokenString" char="q" char1="{"/>
<RegExpr attribute="Delimited String Delimiter" context="DelimStrHeredoc" String="q"([A-Za-z_][A-Za-z0-9_]*)$" />
<StringDetect attribute="Delimited String Delimiter" context="DelimStrBracket" String="q"[" />
<StringDetect attribute="Delimited String Delimiter" context="DelimStrParen" String="q"(" />
<StringDetect attribute="Delimited String Delimiter" context="DelimStrLtGt" String="q"<" />
<StringDetect attribute="Delimited String Delimiter" context="DelimStrBrace" String="q"{" />
<RegExpr attribute="Delimited String Delimiter" context="DelimStrSimple" String="q"([^A-Za-z_[(<{])" />
<keyword String="userkeywords" attribute="UserKeywords" context="#stay" />
<DetectIdentifier />
</context>
<context name="Properties" attribute="Normal Text" lineEndContext="#stay" fallthrough="true" fallthroughContext="#pop">
<keyword String="properties" attribute="Property" context="#pop" />
</context>
<context name="NumberLiteral" attribute="Normal Text" lineEndContext="#stay" fallthrough="true" fallthroughContext="#pop">
<RegExpr attribute="Float" context="#pop" String="&hexfloat;|&float;"/>
<RegExpr attribute="Binary" context="#pop" String="0[bB]_*[01][01_]*(?:L[uU]?|[uU]L?)?"/>
<RegExpr attribute="Octal" context="#pop" String="0[0-7_]+(?:L[uU]?|[uU]L?)?"/>
<RegExpr attribute="Hex" context="#pop" String="0[xX]_*[\da-fA-F][\da-fA-F_]*(?:L[uU]?|[uU]L?)?"/>
<RegExpr attribute="Integer" context="#pop" String="\d+[\d_]*(?:L[uU]?|[uU]L?)?"/>
</context>
<context name="LinePragma" attribute="Pragma" lineEndContext="#pop">
<DetectSpaces/>
<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?)?"/>
<RangeDetect attribute="String" context="#stay" char=""" char1="""/>
<keyword attribute="SpecialTokens" context="#stay" String="specialtokens"/>
<IncludeRules context="CommentRules" />
<RegExpr attribute="Error" context="#pop" String=".+"/>
</context>
<context name="UnicodeShort" attribute="EscapeSequence" lineEndContext="#pop">
<RegExpr attribute="EscapeSequence" context="#pop" String="[\da-fA-F]{4}"/>
</context>
<context name="UnicodeLong" attribute="EscapeSequence" lineEndContext="#pop">
<RegExpr attribute="EscapeSequence" context="#pop" String="[\da-fA-F]{8}"/>
</context>
<context name="HTMLEntity" attribute="EscapeSequence" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
<RegExpr attribute="EscapeSequence" context="#pop" String="[a-zA-Z]\w+;"/>
</context>
<context name="ModuleName" attribute="Module Name" lineEndContext="#stay">
<DetectSpaces/>
<IncludeRules context="CommentRules" />
<RegExpr context="#pop" String="[^\s\w.:,=]" lookAhead="true"/>
</context>
<context name="Linkage" attribute="Normal Text" lineEndContext="#stay" fallthrough="true" fallthroughContext="#pop">
<DetectSpaces/>
<DetectChar attribute="Normal Text" context="Linkage2" char="("/>
<IncludeRules context="CommentRules" />
</context>
<context name="Linkage2" attribute="Normal Text" lineEndContext="#stay">
<DetectSpaces/>
<StringDetect attribute="Linkage Type" context="Linkage-C++" String="C++"/>
<StringDetect attribute="Linkage Type" context="#stay" String="Objective-C"/>
<keyword attribute="Linkage Type" context="#stay" String="ltypes"/>
<IncludeRules context="CommentRules" />
<DetectChar char=")" attribute="Normal Text" context="#pop#pop"/>
<RegExpr String="[^)\s\n]+" attribute="Error" context="#pop#pop"/>
</context>
<context name="Linkage-C++" attribute="Normal Text" lineEndContext="#stay">
<DetectSpaces/>
<IncludeRules context="CommentRules" />
<DetectChar char="," attribute="Normal Text" context="Linkage-C++2"/>
<DetectChar char=")" attribute="Normal Text" context="#pop#pop#pop"/>
<RegExpr String="." attribute="Error" context="#stay"/>
</context>
<context name="Linkage-C++2" attribute="Normal Text" lineEndContext="#stay">
<DetectSpaces/>
<IncludeRules context="CommentRules" />
<DetectIdentifier attribute="Normal Text" context="#stay"/>
<DetectChar char="." attribute="Normal Text" context="#stay"/>
<DetectChar char=")" attribute="Normal Text" context="#pop#pop#pop"/>
<RegExpr String="." attribute="Error" context="#stay"/>
</context>
<context name="Version" attribute="Normal Text" lineEndContext="#stay">
<DetectSpaces/>
<DetectChar attribute="Normal Text" context="VersionSpec" char="="/>
<DetectChar attribute="Normal Text" context="VersionCond" char="("/>
<IncludeRules context="CommentRules" />
<RegExpr String="[^\s\n]+" attribute="Error" context="#pop"/>
</context>
<context name="VersionSpec" attribute="Normal Text" lineEndContext="#stay">
<DetectSpaces/>
<DetectIdentifier attribute="Normal Text" context="#stay"/>
<RegExpr attribute="Integer" context="#stay" String="\d+[\d_]*(?:L[uU]?|[uU]L?)?"/>
<DetectChar char=";" attribute="Normal Text" context="#pop#pop"/>
<RegExpr String="." attribute="Error" context="#pop#pop"/>
</context>
<context name="VersionCond" attribute="Normal Text" lineEndContext="#stay">
<DetectSpaces/>
<keyword attribute="Version Type" context="#stay" String="vtypes"/>
<DetectIdentifier attribute="Normal Text" context="#stay"/>
<RegExpr attribute="Integer" context="#stay" String="\d+[\d_]*(?:L[uU]?|[uU]L?)?"/>
<IncludeRules context="CommentRules" />
<DetectChar char=")" attribute="Normal Text" context="#pop#pop"/>
<RegExpr String="[^)\s\n]+" attribute="Error" context="#pop#pop"/>
</context>
<context name="Scope" attribute="Normal Text" lineEndContext="#stay" fallthrough="true" fallthroughContext="#pop">
<DetectSpaces/>
<DetectChar attribute="Normal Text" context="Scope2" char="("/>
<IncludeRules context="CommentRules" />
</context>
<context name="Scope2" attribute="Normal Text" lineEndContext="#stay">
<DetectSpaces/>
<keyword String="scope_keywords" attribute="Expression" context="#stay"/>
<IncludeRules context="CommentRules" />
<DetectChar char=")" attribute="Normal Text" context="#pop#pop"/>
<RegExpr String="[^)\s\n]+" attribute="Error" context="#pop#pop"/>
</context>
<context name="Pragma" attribute="Pragma" lineEndContext="#stay">
<DetectSpaces/>
<DetectChar attribute="Normal Text" context="Pragma2" char="("/>
<IncludeRules context="CommentRules" />
<RegExpr String="[^\s\n]+" attribute="Error" context="#pop"/>
</context>
<context name="Pragma2" attribute="Pragma" lineEndContext="#stay">
<DetectSpaces/>
<keyword attribute="Version Type" context="Pragma3" String="ptypes"/>
<DetectIdentifier attribute="Normal Text" context="Pragma3"/>
<IncludeRules context="CommentRules" />
<DetectChar char=")" attribute="Normal Text" context="#pop#pop"/>
<RegExpr String="[^)\s\n]+" attribute="Error" context="#pop#pop"/>
</context>
<context name="Pragma3" attribute="Pragma" lineEndContext="#stay">
<DetectSpaces/>
<DetectChar char="," attribute="Normal Text" context="Pragma4"/>
<DetectChar char=")" attribute="Normal Text" context="#pop#pop#pop"/>
<RegExpr String="." attribute="Error" context="#pop#pop#pop"/>
</context>
<context name="Pragma4" attribute="Pragma" lineEndContext="#stay">
<DetectChar char="(" attribute="Normal Text" context="Parenthetical"/>
<DetectChar char=")" attribute="Normal Text" context="#pop#pop#pop#pop"/>
<IncludeRules context="normal" />
</context>
<context name="Parenthetical" attribute="Normal Text" lineEndContext="#stay">
<DetectChar char="(" attribute="Normal Text" context="Parenthetical"/>
<DetectChar char=")" attribute="Normal Text" context="#pop"/>
<IncludeRules context="normal" />
</context>
<context name="RawString" attribute="RawString" lineEndContext="#stay">
<DetectChar attribute="RawString" context="#pop" char="""/>
</context>
<context name="BQString" attribute="BQString" lineEndContext="#stay">
<DetectChar attribute="BQString" context="#pop" char="`"/>
</context>
<context name="HexString" attribute="HexString" lineEndContext="#stay">
<DetectChar attribute="HexString" context="#pop" char="""/>
<RegExpr attribute="Error" context="#stay" String="[^\sa-fA-F\d"]+" />
</context>
<context name="CharLiteral" attribute="Char" lineEndContext="CharLiteralClosing" fallthrough="true" fallthroughContext="#pop">
<DetectChar attribute="Char" context="#pop" char="'"/>
<HlCStringChar attribute="EscapeSequence" context="CharLiteralClosing"/>
<RegExpr attribute="EscapeSequence" context="CharLiteralClosing" String="\\(?:u[\da-fA-F]{4}|U[\da-fA-F]{8}|&[a-zA-Z]\w+;)"/>
<RegExpr attribute="Error" context="CharLiteralClosing" String="\\."/>
<RegExpr attribute="Char" context="CharLiteralClosing" String="."/>
</context>
<context name="CharLiteralClosing" attribute="Error" lineEndContext="#pop#pop" fallthrough="true" fallthroughContext="#pop#pop">
<DetectChar attribute="Char" context="#pop#pop" char="'"/>
</context>
<context name="String" attribute="String" lineEndContext="#stay">
<HlCStringChar attribute="EscapeSequence"/>
<Detect2Chars attribute="String" context="#pop" char=""" char1="c"/>
<Detect2Chars attribute="String" context="#pop" char=""" char1="w"/>
<Detect2Chars attribute="String" context="#pop" char=""" char1="d"/>
<DetectChar attribute="String" context="#pop" char="""/>
<Detect2Chars attribute="EscapeSequence" context="UnicodeShort" char="\" char1="u"/>
<Detect2Chars attribute="EscapeSequence" context="UnicodeLong" char="\" char1="U"/>
<Detect2Chars attribute="EscapeSequence" context="HTMLEntity" char="\" char1="&"/>
</context>
<context name="TokenString" attribute="Normal Text" lineEndContext="#stay">
<DetectChar attribute="Token String Delimiter" context="#pop" char="}" />
<IncludeRules context="normal" />
</context>
<context name="DelimStrHeredoc" attribute="Delimited String Content" lineEndContext="#stay">
<StringDetect attribute="Delimited String Delimiter" context="#pop" String="%1"" dynamic="true" column="0" />
<StringDetect attribute="Error" context="#pop" String="%1" dynamic="true" column="0" />
</context>
<context name="DelimStrBracket" attribute="Delimited String Content" lineEndContext="#stay">
<DetectChar attribute="Delimited String Content" context="DelimStrBracket2" char="[" />
<Detect2Chars attribute="Delimited String Delimiter" context="#pop" char="]" char1=""" />
<DetectChar attribute="Error" context="#pop" char="]" />
</context>
<context name="DelimStrBracket2" attribute="Delimited String Content" lineEndContext="#stay">
<DetectChar attribute="Delimited String Content" context="DelimStrBracket2" char="[" />
<DetectChar attribute="Delimited String Content" context="#pop" char="]" />
</context>
<context name="DelimStrParen" attribute="Delimited String Content" lineEndContext="#stay">
<DetectChar attribute="Delimited String Content" context="DelimStrParen2" char="(" />
<Detect2Chars attribute="Delimited String Delimiter" context="#pop" char=")" char1=""" />
<DetectChar attribute="Error" context="#pop" char=")" />
</context>
<context name="DelimStrParen2" attribute="Delimited String Content" lineEndContext="#stay">
<DetectChar attribute="Delimited String Content" context="DelimStrParen2" char="(" />
<DetectChar attribute="Delimited String Content" context="#pop" char=")" />
</context>
<context name="DelimStrLtGt" attribute="Delimited String Content" lineEndContext="#stay">
<DetectChar attribute="Delimited String Content" context="DelimStrLtGt2" char="<" />
<Detect2Chars attribute="Delimited String Delimiter" context="#pop" char=">" char1=""" />
<DetectChar attribute="Error" context="#pop" char=">" />
</context>
<context name="DelimStrLtGt2" attribute="Delimited String Content" lineEndContext="#stay">
<DetectChar attribute="Delimited String Content" context="DelimStrLtGt2" char="<" />
<DetectChar attribute="Delimited String Content" context="#pop" char=">" />
</context>
<context name="DelimStrBrace" attribute="Delimited String Content" lineEndContext="#stay">
<DetectChar attribute="Delimited String Content" context="DelimStrBrace2" char="{" />
<Detect2Chars attribute="Delimited String Delimiter" context="#pop" char="}" char1=""" />
<DetectChar attribute="Error" context="#pop" char="}" />
</context>
<context name="DelimStrBrace2" attribute="Delimited String Content" lineEndContext="#stay">
<DetectChar attribute="Delimited String Content" context="DelimStrBrace2" char="{" />
<DetectChar attribute="Delimited String Content" context="#pop" char="}" />
</context>
<context name="DelimStrSimple" attribute="Delimited String Content" lineEndContext="#stay">
<StringDetect attribute="Delimited String Delimiter" context="#pop" String="%1"" dynamic="true" />
<StringDetect attribute="Error" context="#pop" String="%1" dynamic="true" />
</context>
<context name="CommentRules" attribute="Normal Text" lineEndContext="#pop">
<IncludeRules context="DdocNormal" />
<Detect2Chars attribute="Comment" context="CommentLine" char="/" char1="/"/>
<Detect2Chars attribute="Comment" context="CommentBlock" char="/" char1="*" beginRegion="CommentBlock"/>
<Detect2Chars attribute="Comment" context="CommentNested" char="/" char1="+" beginRegion="CommentNested"/>
</context>
<context name="Region Marker" attribute="Region Marker" lineEndContext="#pop">
</context>
<context name="CommentLine" attribute="Comment" lineEndContext="#pop">
<DetectSpaces />
<IncludeRules context="##Comments" />
</context>
<context name="CommentBlock" attribute="Comment" lineEndContext="#stay">
<DetectSpaces />
<Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" endRegion="CommentBlock"/>
<IncludeRules context="##Comments" />
</context>
<context name="CommentNested" attribute="Comment" lineEndContext="#stay">
<DetectSpaces />
<Detect2Chars attribute="Comment" context="CommentNested" char="/" char1="+" beginRegion="CommentNested"/>
<Detect2Chars attribute="Comment" context="#pop" char="+" char1="/" endRegion="CommentNested"/>
<IncludeRules context="##Comments" />
</context>
<context name="DdocNormal" attribute="Normal Text" lineEndContext="#stay">
<RegExpr attribute="Comment" context="DdocLine" String="/{3,}"/>
<RegExpr attribute="Comment" context="DdocBlock" String="/\*{2,}(?!/)" beginRegion="DdocBlock"/>
<RegExpr attribute="Comment" context="DdocNested" String="/\+{2,}(?!/)" beginRegion="DdocNested"/>
</context>
<context name="DdocLine" attribute="Ddoc" lineEndContext="#pop">
<DetectSpaces />
<DetectIdentifier attribute="Ddoc"/>
<Detect2Chars attribute="Macros" context="DdocMacro" char="$" char1="(" />
<RegExpr attribute="DdocSection" context="#stay" String="[\w_]+:(?:$|\s)" />
<IncludeRules context="##Comments" />
</context>
<context name="DdocBlock" attribute="Ddoc" lineEndContext="#stay">
<DetectSpaces />
<DetectIdentifier attribute="Ddoc"/>
<RegExpr attribute="Comment" context="#pop" String="\*+/" endRegion="DdocBlock"/>
<DetectChar attribute="Comment" context="#stay" char="*" firstNonSpace="true" />
<Detect2Chars attribute="Macros" context="DdocMacro" char="$" char1="(" />
<RegExpr attribute="DdocSection" context="#stay" String="[\w_]+:(?:$|\s)" />
<IncludeRules context="##Comments" />
<RegExpr attribute="Ddoc" context="#stay" String="[^-]-{3,}" />
<RegExpr attribute="Comment" context="DdocBlockCode" String="-{3,}(?:$|\s)" />
</context>
<context name="DdocNested" attribute="Ddoc" lineEndContext="#stay">
<DetectSpaces />
<DetectIdentifier attribute="Ddoc"/>
<Detect2Chars attribute="Ddoc" context="DdocNested2" char="/" char1="+"/>
<RegExpr attribute="Comment" context="#pop" String="\++/" endRegion="DdocNested"/>
<DetectChar attribute="Comment" context="#stay" char="+" firstNonSpace="true" />
<Detect2Chars attribute="Macros" context="DdocMacro" char="$" char1="(" />
<RegExpr attribute="DdocSection" context="#stay" String="[\w_]+:(?:$|\s)" />
<IncludeRules context="##Comments" />
<RegExpr attribute="Ddoc" context="#stay" String="[^-]-{3,}" />
<RegExpr attribute="Comment" context="DdocNestedCode" String="-{3,}(?:$|\s)" />
</context>
<context name="DdocNested2" attribute="Ddoc" lineEndContext="#stay">
<DetectSpaces />
<DetectIdentifier attribute="Ddoc"/>
<RegExpr attribute="Ddoc" context="#pop" String="\++/"/>
<IncludeRules context="DdocNested" />
</context>
<context name="DdocMacro" attribute="Error" lineEndContext="#stay">
<DetectSpaces attribute="Macro Text" />
<DetectChar attribute="Macros" context="#pop" char=")" />
<IncludeRules context="MacroRules" />
<DetectIdentifier attribute="Macros" context="DdocMacro2" />
</context>
<context name="DdocMacro2" attribute="Macro Text" lineEndContext="#stay">
<DetectChar attribute="Macros" context="#pop#pop" char=")" />
<IncludeRules context="MacroRules" />
</context>
<context name="DdocMacro3" attribute="Macro Text" lineEndContext="#stay">
<DetectChar attribute="Macro Text" context="#pop" char=")" />
<IncludeRules context="MacroRules" />
</context>
<context name="MacroRules" attribute="Macro Text" lineEndContext="#stay">
<Detect2Chars attribute="Macros" context="DdocMacro" char="$" char1="(" />
<DetectChar attribute="Macro Text" context="DdocMacro3" char="(" />
<DetectChar attribute="Comment" context="#stay" char="*" firstNonSpace="true" />
</context>
<context name="DdocBlockCode" attribute="DdocCode" lineEndContext="#stay">
<DetectSpaces />
<RegExpr attribute="Comment" context="#pop#pop" String="\*+/" endRegion="DdocBlock"/>
<DetectChar attribute="Comment" context="#stay" char="*" firstNonSpace="true" />
<RegExpr attribute="DdocCode" context="#stay" String="[^-]-{3,}" />
<RegExpr attribute="Comment" context="#pop" String="-{3,}(?:$|\s)" />
<IncludeRules context="##D" />
</context>
<context name="DdocNestedCode" attribute="DdocCode" lineEndContext="#stay">
<DetectSpaces />
<RegExpr attribute="Comment" context="#pop#pop" String="\++/" endRegion="DdocNested"/>
<DetectChar attribute="Comment" context="#stay" char="+" firstNonSpace="true" />
<RegExpr attribute="DdocCode" context="#stay" String="[^-]-{3,}" />
<RegExpr attribute="Comment" context="#pop" String="-{3,}(?:$|\s)" />
<IncludeRules context="##D" />
</context>
</contexts>
<itemDatas>
<itemData name="Normal Text" defStyleNum="dsNormal"/>
<itemData name="Symbol" defStyleNum="dsOperator"/>
<itemData name="Statement" defStyleNum="dsKeyword"/>
<itemData name="Expression" defStyleNum="dsAttribute" bold="1"/>
<itemData name="Declarator" defStyleNum="dsWarning" bold="1"/>
<itemData name="Template" defStyleNum="dsOthers" bold="1"/>
<itemData name="Attribute" defStyleNum="dsFunction" bold="1"/>
<itemData name="Deprecated" defStyleNum="dsFunction" bold="1" strikeOut="true"/>
<itemData name="Property" defStyleNum="dsDataType" bold="1"/>
<itemData name="Type" defStyleNum="dsDataType"/>
<itemData name="LibrarySymbols" defStyleNum="dsBuiltIn" italic="1"/>
<itemData name="UserKeywords" defStyleNum="dsDataType" italic="1"/>
<itemData name="Module" defStyleNum="dsPreprocessor" bold="1"/>
<itemData name="Module Name" defStyleNum="dsImport"/>
<itemData name="SpecialTokens" defStyleNum="dsOthers" bold="1"/>
<itemData name="Pragma" defStyleNum="dsOthers" bold="1"/>
<itemData name="Version" defStyleNum="dsDecVal"/>
<itemData name="Version Type" defStyleNum="dsNormal" bold="1"/>
<itemData name="Linkage" defStyleNum="dsInformation" bold="1"/>
<itemData name="Linkage Type" defStyleNum="dsNormal" bold="1"/>
<itemData name="Tests" defStyleNum="dsFunction" bold="1"/>
<itemData name="Comment" defStyleNum="dsComment"/>
<itemData name="Region Marker" defStyleNum="dsRegionMarker" />
<itemData name="Error" defStyleNum="dsError"/>
<itemData name="Integer" defStyleNum="dsDecVal"/>
<itemData name="Binary" defStyleNum="dsBaseN"/>
<itemData name="Octal" defStyleNum="dsBaseN"/>
<itemData name="Hex" defStyleNum="dsBaseN"/>
<itemData name="Float" defStyleNum="dsFloat"/>
<itemData name="EscapeSequence" defStyleNum="dsSpecialChar"/>
<itemData name="String" defStyleNum="dsString"/>
<itemData name="Char" defStyleNum="dsChar"/>
<itemData name="RawString" defStyleNum="dsVerbatimString"/>
<itemData name="BQString" defStyleNum="dsSpecialString"/>
<itemData name="HexString" defStyleNum="dsSpecialString"/>
<itemData name="Token String Delimiter" defStyleNum="dsKeyword"/>
<itemData name="Delimited String Content" defStyleNum="dsVerbatimString"/>
<itemData name="Delimited String Delimiter" defStyleNum="dsKeyword"/>
<itemData name="Macros" defStyleNum="dsSpecialChar" bold="1" italic="0" />
<itemData name="Macro Text" defStyleNum="dsAttribute" bold="0" italic="0" />
<itemData name="Ddoc" defStyleNum="dsDocumentation" />
<itemData name="DdocSection" defStyleNum="dsAnnotation" bold="1" />
<itemData name="DdocCode" defStyleNum="dsNormal" italic="1" />
</itemDatas>
</highlighting>
<general>
<comments>
<comment name="singleLine" start="//" position="afterwhitespace"/>
<comment name="multiLine" start="/+" end="+/" region="CommentNested"/>
</comments>
<keywords casesensitive="true"/>
</general>
</language>