Warning, /frameworks/syntax-highlighting/data/syntax/isocpp.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 int "(?:[0-9](?:'?[0-9]++)*+)">
0005 <!ENTITY hex_int "(?:[0-9A-Fa-f](?:'?[0-9A-Fa-f]++)*+)">
0006 <!ENTITY exp_float "(?:[eE][+-]?∫)">
0007 <!ENTITY exp_hexfloat "(?:[pP][-+]?∫)">
0008
0009 <!ENTITY separators ",;">
0010 <!ENTITY ns_punctuators "(){}[].+-/*%=<>!|&?~^">
0011 <!ENTITY punctuators ":&ns_punctuators;">
0012
0013 <!-- printf-like format strings conversion specifiers -->
0014 <!ENTITY printf_like "%[-+ #0]*+(?:[0-9]++|\*)?(?:\.(?:[0-9]++|\*))?(?:(?:hh|ll|[hljzt]|wf?(?:8|16|32|64))?[dioxXubn]|(?:DD|[lLHD])?[fFeEaAgG]|l?[cs]|[p%])">
0015 <!-- https://en.cppreference.com/w/cpp/utility/format/formatter#Standard_format_specification -->
0016 <!ENTITY format_like "\{\{|\}\}|\{[0-9]*(?::(?:[^{}]?[<>^])?[-+ #0]*(?:[0-9]+|\{[0-9]*\})?(?:\.(?:[0-9]+|\{[0-9]*\}))?L?[sbBcdoxXaAeEfFgGp]?)?\}">
0017
0018 <!ENTITY ispphash "(?:#|%\:|\?\?=)">
0019 <!ENTITY pphash "&ispphash;\s*">
0020 <!ENTITY ppemptypp "($|(?=(/\*([^*]|\*[^/])*\*/\s*)?(//.*)?$))">
0021 <!ENTITY ppcond0 "\s+(?:0|false)\s*&ppemptypp;">
0022 <!ENTITY ppcond1 "\s+(?:1|true)\s*(\|\|([^/]|/[^*/])+)?&ppemptypp;">
0023
0024 <!ENTITY ident_internal1 "_[a-zA-Z0-9_]+">
0025 <!ENTITY ident_internal2 "[a-zA-Z][a-zA-Z0-9_]*__\b">
0026 <!ENTITY ident_internal "(?:&ident_internal1;|&ident_internal2;)">
0027 <!ENTITY ident_member1 "m_[a-zA-Z0-9_]+">
0028 <!ENTITY ident_member2 "[a-z][a-zA-Z0-9_]*_\b">
0029 <!ENTITY ident_member "(?:&ident_member1;|&ident_member2;)">
0030 <!ENTITY ident_CONST "[A-Z][A-Z0-9_]{2,}\b">
0031 <!ENTITY ident_type "[a-zA-Z][a-zA-Z0-9_]*_t(?:ype)?\b">
0032 <!ENTITY ident_global "g_[a-zA-Z0-9_]+">
0033 <!ENTITY ident_static_prefix "s_[a-zA-Z0-9_]">
0034 ]>
0035 <language
0036 name="ISO C++"
0037 section="Sources"
0038 version="31"
0039 kateversion="5.79"
0040 indenter="cstyle"
0041 style="C++"
0042 mimetype="text/x-c++src;text/x-c++hdr;text/x-chdr"
0043 extensions="*.c++;*.cxx;*.cpp;*.cc;*.C;*.cu;*.h;*.hh;*.H;*.h++;*.hxx;*.hpp;*.hcc;*.cuh;*.inl;*.ino;*.pde;*.moc;*.mpp;*.ixx;*.cppm;*.cxxm;*.c++m;*.ccm"
0044 author="Alex Turbov (i.zaufi@gmail.com)"
0045 license="LGPL"
0046 priority="6"
0047 >
0048 <!--
0049 Complete list of changes by Alex Turbov (I.zaufi@gmail.com)
0050 can be found at:
0051 http://kde-files.org/content/show.php?content=90660
0052 -->
0053 <highlighting>
0054 <!-- https://en.cppreference.com/w/cpp/keyword -->
0055 <list name="controlflow">
0056 <item>break</item>
0057 <item>case</item>
0058 <item>catch</item>
0059 <item>continue</item>
0060 <item>default</item>
0061 <item>do</item>
0062 <item>else</item>
0063 <item>for</item>
0064 <item>goto</item>
0065 <item>if</item>
0066 <item>return</item>
0067 <item>switch</item>
0068 <item>throw</item>
0069 <item>try</item>
0070 <item>while</item>
0071 <!-- coroutine -->
0072 <item>co_await</item>
0073 <item>co_return</item>
0074 <item>co_yield</item>
0075 </list>
0076
0077 <!-- https://en.cppreference.com/w/cpp/keyword -->
0078 <list name="keywords">
0079 <item>alignof</item>
0080 <item>alignas</item>
0081 <item>asm</item>
0082 <item>auto</item>
0083 <item>class</item>
0084 <item>consteval</item> <!-- C++20 -->
0085 <item>constinit</item> <!-- C++20 -->
0086 <item>constexpr</item> <!-- C++11 -->
0087 <item>const_cast</item>
0088 <item>decltype</item>
0089 <item>delete</item>
0090 <item>dynamic_cast</item>
0091 <item>enum</item>
0092 <item>explicit</item>
0093 <item>false</item>
0094 <item>final</item> <!-- C++11 -->
0095 <item>friend</item>
0096 <item>inline</item>
0097 <item>namespace</item>
0098 <item>new</item>
0099 <item>noexcept</item>
0100 <item>nullptr</item>
0101 <item>operator</item>
0102 <item>override</item> <!-- C++11 -->
0103 <item>private</item>
0104 <item>protected</item>
0105 <item>public</item>
0106 <item>reinterpret_cast</item>
0107 <item>sizeof</item>
0108 <item>static_assert</item>
0109 <item>static_cast</item>
0110 <item>struct</item>
0111 <item>template</item>
0112 <item>this</item>
0113 <item>true</item>
0114 <item>typedef</item>
0115 <item>typeid</item>
0116 <item>typename</item>
0117 <item>union</item>
0118 <item>using</item>
0119 <item>virtual</item>
0120 <!-- Alternative operators (see 2.12) -->
0121 <item>and</item>
0122 <item>and_eq</item>
0123 <item>bitand</item>
0124 <item>bitor</item>
0125 <item>compl</item>
0126 <item>not</item>
0127 <item>not_eq</item>
0128 <item>or</item>
0129 <item>or_eq</item>
0130 <item>xor</item>
0131 <item>xor_eq</item>
0132 <!-- Concept -->
0133 <item>concept</item>
0134 <item>requires</item>
0135 <!-- TM TS -->
0136 <!-- <item>atomic_cancel</item>
0137 <item>atomic_commit</item>
0138 <item>atomic_noexcept</item>
0139 <item>synchronized</item>
0140 <item>transaction_safe</item>
0141 <item>transaction_safe_dynamic</item> -->
0142 <!-- module -->
0143 <item>import</item>
0144 <item>module</item>
0145 <item>export</item> <!-- Unused but reserved, keyword since c++20 -->
0146 <!-- reflexion TS -->
0147 <!-- <item>reflexpr</item> -->
0148 </list>
0149
0150 <!-- 7.6 Attributes -->
0151 <!-- http://en.cppreference.com/w/cpp/language/attributes -->
0152 <list name="attributes">
0153 <!-- C++11 -->
0154 <item>noreturn</item>
0155 <item>carries_dependency</item>
0156 <!-- C++14 -->
0157 <item>deprecated</item>
0158 <!-- C++17 -->
0159 <item>fallthrough</item>
0160 <item>nodiscard</item>
0161 <item>maybe_unused</item>
0162 <!-- C++20 -->
0163 <item>likely</item>
0164 <item>unlikely</item>
0165 <item>no_unique_address</item>
0166 <!-- C++23 -->
0167 <item>assume</item>
0168 <!-- TM TS -->
0169 <!-- <item>optimize_for_synchronized</item> -->
0170 </list>
0171
0172 <!-- https://en.cppreference.com/w/cpp/keyword -->
0173 <!-- https://en.cppreference.com/w/cpp/types/integer -->
0174 <list name="types">
0175 <item>bool</item>
0176 <item>char</item>
0177 <item>char8_t</item> <!-- C++20 -->
0178 <item>char16_t</item>
0179 <item>char32_t</item>
0180 <item>double</item>
0181 <item>float</item>
0182 <item>int</item>
0183 <item>long</item>
0184 <item>short</item>
0185 <item>signed</item>
0186 <item>unsigned</item>
0187 <item>void</item>
0188 <item>int8_t</item>
0189 <item>int16_t</item>
0190 <item>int32_t</item>
0191 <item>int64_t</item>
0192 <item>uint8_t</item>
0193 <item>uint16_t</item>
0194 <item>uint32_t</item>
0195 <item>uint64_t</item>
0196 <item>int_least8_t</item>
0197 <item>int_least16_t</item>
0198 <item>int_least32_t</item>
0199 <item>int_least64_t</item>
0200 <item>uint_least8_t</item>
0201 <item>uint_least16_t</item>
0202 <item>uint_least32_t</item>
0203 <item>uint_least64_t</item>
0204 <item>int_fast8_t</item>
0205 <item>int_fast16_t</item>
0206 <item>int_fast32_t</item>
0207 <item>int_fast64_t</item>
0208 <item>uint_fast8_t</item>
0209 <item>uint_fast16_t</item>
0210 <item>uint_fast32_t</item>
0211 <item>uint_fast64_t</item>
0212 <item>size_t</item>
0213 <item>ssize_t</item>
0214 <item>wchar_t</item>
0215 <item>intptr_t</item>
0216 <item>uintptr_t</item>
0217 <item>intmax_t</item>
0218 <item>uintmax_t</item>
0219 <item>ptrdiff_t</item>
0220 <item>sig_atomic_t</item>
0221 <item>wint_t</item>
0222 <item>va_list</item>
0223 <item>FILE</item>
0224 <item>fpos_t</item>
0225 <item>time_t</item>
0226 </list>
0227 <list name="modifiers">
0228 <item>const</item>
0229 <item>extern</item>
0230 <item>mutable</item>
0231 <item>register</item> <!-- The keyword is unused and reserved (c++17) -->
0232 <item>static</item>
0233 <item>thread_local</item>
0234 <item>volatile</item>
0235 </list>
0236 <!-- http://en.cppreference.com/w/cpp/preprocessor/replace -->
0237 <list name="StdMacros">
0238 <item>__DATE__</item>
0239 <item>__FILE__</item>
0240 <item>__LINE__</item>
0241 <item>__STDCPP_DEFAULT_NEW_ALIGNMENT__</item>
0242 <item>__STDCPP_STRICT_POINTER_SAFETY__</item>
0243 <item>__STDCPP_THREADS__</item>
0244 <item>__STDC_HOSTED__</item>
0245 <item>__STDC_ISO_10646__</item>
0246 <item>__STDC_MB_MIGHT_NEQ_WC__</item>
0247 <item>__STDC_VERSION__</item>
0248 <item>__STDC__</item>
0249 <item>__TIME__</item>
0250 <item>__cplusplus</item>
0251 <item>__func__</item>
0252 <item>assert</item>
0253 <item>_Pragma</item>
0254 <!-- C++17 -->
0255 <item>__has_include</item>
0256 <!-- C++20 -->
0257 <item>__has_cpp_attribute</item>
0258 </list>
0259 <list name="InMacro">
0260 <item>__VA_ARGS__</item>
0261 <item>__VA_OPT__</item>
0262 </list>
0263 <list name="preprocessor">
0264 <item>if</item>
0265 <item>ifdef</item>
0266 <item>ifndef</item>
0267 <item>elif</item>
0268 <item>elifdef</item> <!--C++23-->
0269 <item>elifndef</item> <!--C++23-->
0270 <item>else</item>
0271 <item>endif</item>
0272 <item>cmakedefine01</item>
0273 <item>cmakedefine</item>
0274 <item>define</item>
0275 <item>include</item>
0276 <item>error</item>
0277 <item>line</item>
0278 <item>pragma</item>
0279 <item>undef</item>
0280 <item>warning</item>
0281 </list>
0282 <list name="preprocessorDefine">
0283 <item>cmakedefine01</item>
0284 <item>cmakedefine</item>
0285 <item>define</item>
0286 <item>undef</item>
0287 </list>
0288 <list name="preprocessorOther">
0289 <item>error</item>
0290 <item>line</item>
0291 <item>pragma</item>
0292 <item>warning</item>
0293 </list>
0294
0295 <contexts>
0296 <context name="Main" attribute="Normal Text" lineEndContext="#stay">
0297 <DetectSpaces/>
0298 <!-- Match punctuators (partial for fast path) -->
0299 <AnyChar attribute="Symbol" context="#stay" String=":()]+-*=>!|&~^" />
0300 <AnyChar attribute="Separator Symbol" context="#stay" String="&separators;" />
0301 <!-- Match scope regions -->
0302 <DetectChar attribute="Symbol" context="#stay" char="{" beginRegion="Brace1" />
0303 <DetectChar attribute="Symbol" context="#stay" char="}" endRegion="Brace1" />
0304 <Detect2Chars attribute="Symbol" context="#stay" char="<" char1="%" beginRegion="Brace1" /> <!-- Digraph: { -->
0305 <Detect2Chars attribute="Symbol" context="#stay" char="%" char1=">" endRegion="Brace1" /> <!-- Digraph: } -->
0306 <!-- Detect attributes -->
0307 <Detect2Chars attribute="Symbol" context="Attribute" char="[" char1="[" />
0308 <StringDetect attribute="Symbol" context="Attribute" String="<:<:" /> <!-- Digraph: [[ -->
0309
0310 <!-- Match preprocessor directives -->
0311 <DetectChar attribute="Preprocessor" context="AfterHash" char="#" lookAhead="1"/>
0312 <Detect2Chars attribute="Preprocessor" context="AfterHash" char="%" char1=":" lookAhead="1"/> <!-- Digraph: # -->
0313 <StringDetect attribute="Preprocessor" context="AfterHash" String="??=" lookAhead="1"/> <!-- Trigraph: # -->
0314
0315 <!-- Match numbers -->
0316 <RegExpr context="Number" String="\.?[0-9]" lookAhead="true" />
0317 <!-- Match comments -->
0318 <IncludeRules context="match comments and region markers" />
0319 <!-- Match punctuators -->
0320 <AnyChar attribute="Symbol" context="#stay" String="&punctuators;" />
0321 <!-- Match keywords -->
0322 <IncludeRules context="match keywords" />
0323 <!-- Match string literals -->
0324 <AnyChar context="SelectString" String="UuLR"'" lookAhead="1"/>
0325 <!-- Match GCC extensions -->
0326 <IncludeRules context="DetectGccExtensions##GCCExtensions" />
0327 <!-- Match most used namespaces and styles -->
0328 <RegExpr context="DispatchNamespace" String="(std::)|(boost::|BOOST_)|details?::|aux::|internals::" lookAhead="1"/>
0329 <IncludeRules context="match identifier" />
0330 <!-- Match invalid symbols -->
0331 <AnyChar attribute="Error" context="#stay" String="$@`" />
0332 </context>
0333
0334 <context name="match comments" attribute="Normal Text" lineEndContext="#pop">
0335 <Detect2Chars attribute="Comment" context="MatchComment" char="/" char1="/" lookAhead="true"/>
0336 <Detect2Chars attribute="Comment" context="MatchComment" char="/" char1="*" lookAhead="true" />
0337 </context>
0338
0339 <context name="MatchComment" attribute="Normal Text" lineEndContext="#pop" fallthroughContext="#pop">
0340 <IncludeRules context="##Doxygen" />
0341 <Detect2Chars attribute="Comment" context="#pop!Comment 1" char="/" char1="/" />
0342 <Detect2Chars attribute="Comment" context="#pop!Comment 2" char="/" char1="*" beginRegion="Comment" />
0343 </context>
0344
0345 <context name="match comments and region markers" attribute="Normal Text" lineEndContext="#pop">
0346 <Detect2Chars attribute="Comment" context="MatchCommentAndRegionMarkers" char="/" char1="/" lookAhead="true"/>
0347 <Detect2Chars attribute="Comment" context="MatchCommentAndRegionMarkers" char="/" char1="*" lookAhead="true" />
0348 </context>
0349
0350 <context name="MatchCommentAndRegionMarkers" attribute="Normal Text" lineEndContext="#pop" fallthroughContext="#pop">
0351 <StringDetect attribute="Region Marker" context="#pop!Region Marker" String="//BEGIN" beginRegion="Region1" firstNonSpace="true" />
0352 <StringDetect attribute="Region Marker" context="#pop!Region Marker" String="//END" endRegion="Region1" firstNonSpace="true" />
0353 <IncludeRules context="MatchComment" />
0354 </context>
0355
0356 <context name="match keywords" attribute="Normal Text" lineEndContext="#pop">
0357 <WordDetect attribute="Keyword" context="CheckUDLOperator" String="operator" />
0358 <keyword attribute="Control Flow" context="#stay" String="controlflow" />
0359 <keyword attribute="Keyword" context="#stay" String="keywords" />
0360 </context>
0361
0362
0363 <context name="SelectStringPP" attribute="Preprocessor" lineEndContext="#pop">
0364 <IncludeRules context="SelectString"/>
0365 </context>
0366 <context name="SelectString" attribute="Normal Text" lineEndContext="#pop">
0367 <DetectChar attribute="String" context="#pop!String8" char="""/>
0368 <DetectChar attribute="Char" context="#pop!Char8" char="'"/>
0369 <Detect2Chars context="#pop!SelectStringPrefix" char="U" char1=""" lookAhead="1"/>
0370 <Detect2Chars context="#pop!SelectStringPrefix" char="u" char1=""" lookAhead="1"/>
0371 <Detect2Chars context="#pop!SelectStringPrefix" char="L" char1=""" lookAhead="1"/>
0372 <StringDetect context="#pop!SelectStringPrefix" String="u8"" lookAhead="1"/>
0373 <StringDetect context="#pop!RawString" String="R"" lookAhead="1"/>
0374 <StringDetect context="#pop!RawString" String="uR"" lookAhead="1"/>
0375 <StringDetect context="#pop!RawString" String="UR"" lookAhead="1"/>
0376 <StringDetect context="#pop!RawString" String="LR"" lookAhead="1"/>
0377 <StringDetect context="#pop!RawString" String="u8R"" lookAhead="1"/>
0378 <Detect2Chars context="#pop!SelectCharPrefix" char="U" char1="'" lookAhead="1"/>
0379 <Detect2Chars context="#pop!SelectCharPrefix" char="u" char1="'" lookAhead="1"/>
0380 <Detect2Chars context="#pop!SelectCharPrefix" char="L" char1="'" lookAhead="1"/>
0381 <StringDetect context="#pop!SelectCharPrefix" String="u8'" lookAhead="1"/>
0382
0383 <!-- match identifier -->
0384 <keyword attribute="Data Type" context="#pop" String="types"/>
0385 <RegExpr context="#pop!DispatchIdentifier" String="(&ident_internal2;)|(&ident_member2;)|(&ident_CONST;)|(&ident_type;)" lookAhead="1"/>
0386 <DetectIdentifier context="#pop"/>
0387 </context>
0388
0389 <context name="SelectStringPrefix" attribute="String" lineEndContext="#pop">
0390 <Detect2Chars attribute="String Literal Prefix" context="#pop!StringPrefix8" char="u" char1="8"/>
0391 <AnyChar attribute="String Literal Prefix" context="#pop!StringPrefix16" String="uL"/>
0392 <DetectChar attribute="String Literal Prefix" context="#pop!StringPrefix32" char="U"/>
0393 </context>
0394 <context name="StringPrefix8" attribute="String" lineEndContext="#pop">
0395 <DetectChar attribute="String" context="#pop!String8" char="""/>
0396 </context>
0397 <context name="StringPrefix16" attribute="String" lineEndContext="#pop">
0398 <DetectChar attribute="String" context="#pop!String16" char="""/>
0399 </context>
0400 <context name="StringPrefix32" attribute="String" lineEndContext="#pop">
0401 <DetectChar attribute="String" context="#pop!String32" char="""/>
0402 </context>
0403
0404 <context name="SelectCharPrefix" attribute="String" lineEndContext="#pop">
0405 <Detect2Chars attribute="Char Literal Prefix" context="#pop!CharPrefix8" char="u" char1="8"/>
0406 <AnyChar attribute="Char Literal Prefix" context="#pop!CharPrefix16" String="uL"/>
0407 <DetectChar attribute="Char Literal Prefix" context="#pop!CharPrefix32" char="U"/>
0408 </context>
0409 <context name="CharPrefix8" attribute="Char" lineEndContext="#pop">
0410 <DetectChar attribute="Char" context="#pop!Char8" char="'"/>
0411 </context>
0412 <context name="CharPrefix16" attribute="Char" lineEndContext="#pop">
0413 <DetectChar attribute="Char" context="#pop!Char16" char="'"/>
0414 </context>
0415 <context name="CharPrefix32" attribute="Char" lineEndContext="#pop">
0416 <DetectChar attribute="Char" context="#pop!Char32" char="'"/>
0417 </context>
0418
0419 <context name="match identifier" attribute="Normal Text" lineEndContext="#pop">
0420 <keyword attribute="Data Type" context="#stay" String="types" />
0421 <keyword attribute="Type Modifiers" context="#stay" String="modifiers" />
0422 <keyword attribute="Standard Macros" context="#stay" String="StdMacros" />
0423 <RegExpr context="DispatchIdentifier" String="(&ident_internal;)|(&ident_member;)|(&ident_CONST;)|(&ident_type;)|(&ident_global;)|&ident_static_prefix;" lookAhead="1"/>
0424 <DetectIdentifier />
0425 </context>
0426 <context name="DispatchIdentifier" attribute="Normal Text" lineEndContext="#pop">
0427 <StringDetect context="#pop" String="%2" dynamic="1" attribute="Data Members (m_*)"/>
0428 <StringDetect context="#pop" String="%4" dynamic="1" attribute="Types (*_t/*_type)"/>
0429 <StringDetect context="#pop" String="%3" dynamic="1" attribute="CONSTS/MACROS"/>
0430 <StringDetect context="#pop" String="%1" dynamic="1" attribute="Internals"/>
0431 <StringDetect context="#pop" String="%5" dynamic="1" attribute="Globals (g_*)"/>
0432 <DetectIdentifier context="#pop" attribute="Statics (s_*)"/>
0433 </context>
0434
0435 <context name="DispatchNamespace" attribute="Normal Text" lineEndContext="#pop">
0436 <StringDetect context="#pop!Standard Classes" String="%1" dynamic="1" attribute="Standard Classes"/>
0437 <StringDetect context="#pop!Boost Stuff" String="%2" dynamic="1" attribute="Boost Stuff"/>
0438 <DetectIdentifier context="#pop!InternalsNS" attribute="Internals"/>
0439 </context>
0440
0441 <context name="DispatchNamespacePP" attribute="Preprocessor" lineEndContext="#pop">
0442 <StringDetect context="#pop!Standard Classes In PP" String="%1" dynamic="1" attribute="Standard Classes"/>
0443 <StringDetect context="#pop!Boost Stuff In PP" String="%2" dynamic="1" attribute="Boost Stuff"/>
0444 <DetectIdentifier context="#pop!InternalsNS In PP" attribute="Internals"/>
0445 </context>
0446
0447 <context name="Number" attribute="Normal Text" lineEndContext="#pop" fallthroughContext="#pop">
0448 <WordDetect attribute="Decimal" context="IntSuffix" String="0" weakDeliminator="."/>
0449 <RegExpr attribute="Float" context="FloatSuffix" String="\.∫&exp_float;?|0[xX](?:\.&hex_int;&exp_hexfloat;?|&hex_int;(?:&exp_hexfloat;|\.&hex_int;?&exp_hexfloat;?))|∫(?:&exp_float;|\.∫?&exp_float;?)" />
0450 <IncludeRules context="Integer" />
0451 </context>
0452
0453 <context name="Integer" attribute="Normal Text" lineEndContext="#pop">
0454 <DetectChar context="#pop!IntStartsWith0" char="0" lookAhead="1"/>
0455 <RegExpr attribute="Decimal" context="IntSuffix" String="∫" />
0456 <RegExpr attribute="Error" context="#pop" String="[._0-9A-Za-z']++" />
0457 </context>
0458 <context name="IntStartsWith0" attribute="Normal Text" lineEndContext="#pop">
0459 <RegExpr attribute="Hex" context="IntSuffix" String="0[xX]&hex_int;" />
0460 <RegExpr attribute="Binary" context="IntSuffix" String="0[Bb][01](?:'?[01]++)*+" />
0461 <RegExpr attribute="Octal" context="IntSuffix" String="0(?:'?[0-7]++)++" />
0462 <DetectChar attribute="Decimal" context="IntSuffix" char="0"/>
0463 </context>
0464
0465 <context name="IntSuffix" attribute="Error" lineEndContext="#pop#pop" fallthroughContext="NumericSuffixError">
0466 <DetectChar attribute="Error" context="#stay" char="'" />
0467 <AnyChar context="#pop!IntSuffixPattern" String="uUlLzZimunshyd_" lookAhead="1"/>
0468 </context>
0469
0470 <context name="IntSuffixPattern" attribute="Error" lineEndContext="#pop#pop" fallthroughContext="NumericSuffixError">
0471 <!-- https://en.cppreference.com/w/cpp/language/integer_literal#The_type_of_the_literal -->
0472 <RegExpr attribute="Standard Suffix" context="NumericSuffixError" String="([Uu](LL?|ll?|[Zz])?|(LL?|ll?|[Zz])[Uu]?)\b"/>
0473 <!-- https://en.cppreference.com/w/cpp/language/user_literal#Standard_library -->
0474 <RegExpr attribute="Standard Classes" context="NumericSuffixError" String="(?:i[fl]?|min|[mun]?s|[hyd])\b"/>
0475 <DetectChar context="#pop!NumericUserSuffixPattern" char="_" lookAhead="1"/>
0476 </context>
0477
0478 <context name="FloatSuffix" attribute="Error" lineEndContext="#pop#pop" fallthroughContext="NumericSuffixError">
0479 <DetectChar attribute="Error" context="#stay" char="'" />
0480 <AnyChar context="#pop!FloatSuffixPattern" String="fFlLimsh_" lookAhead="1"/>
0481 </context>
0482
0483 <context name="FloatSuffixPattern" attribute="Error" lineEndContext="#pop#pop" fallthroughContext="NumericSuffixError">
0484 <!-- https://en.cppreference.com/w/cpp/language/floating_literal#Syntax -->
0485 <AnyChar attribute="Standard Suffix" context="NumericSuffixError" String="fFlL" />
0486 <!-- https://en.cppreference.com/w/cpp/language/user_literal#Standard_library -->
0487 <RegExpr attribute="Standard Classes" context="NumericSuffixError" String="(?:i[fl]?|min|[mun]?s|h)\b" />
0488 <DetectChar context="#pop!NumericUserSuffixPattern" char="_" lookAhead="1" />
0489 </context>
0490
0491 <context name="NumericUserSuffixPattern" attribute="Error" lineEndContext="#pop#pop">
0492 <!--
0493 http://en.cppreference.com/w/cpp/language/user_literal#Notes
0494 Due to maximal munch, user-defined integer and floating point literals ending in
0495 p, P, (since C++17) e and E, when followed by the operators + or -,
0496 must be separated from the operator with whitespace or parentheses in the source
0497 -->
0498 <RegExpr attribute="Error" context="#pop#pop" String="_[eEpP][+-]" />
0499 <DetectIdentifier attribute="UDL Numeric Suffix" context="NumericSuffixError"/>
0500 </context>
0501
0502 <context name="NumericSuffixError" attribute="Error" lineEndContext="#pop#pop#pop" fallthroughContext="#pop#pop#pop">
0503 <AnyChar attribute="Error" String=".'0123456789"/>
0504 <DetectIdentifier attribute="Error"/>
0505 </context>
0506
0507 <context name="CheckUDLOperator" attribute="Normal Text" lineEndContext="#pop" fallthroughContext="#pop">
0508 <DetectSpaces />
0509 <Detect2Chars attribute="String" context="UDLOperatorName" char=""" char1=""" />
0510 </context>
0511
0512 <context name="UDLOperatorName" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="#pop!IdentifierError">
0513 <DetectSpaces />
0514 <RegExpr attribute="Normal Text" context="#pop#pop" String="_[_[:alnum:]]*\b" />
0515 </context>
0516
0517 <context name="IdentifierError" attribute="Error" lineEndContext="#stay" fallthroughContext="#pop#pop">
0518 <RegExpr attribute="Error" context="#pop#pop" String=".[^\s()]*" />
0519 </context>
0520
0521
0522 <context name="Char8" attribute="Char" lineEndContext="#pop" fallthroughContext="CharClose">
0523 <HlCStringChar attribute="String Char" context="CharClose"/>
0524 <IncludeRules context="FindSingleChar"/>
0525 </context>
0526
0527 <context name="Char16" attribute="Char" lineEndContext="#pop" fallthroughContext="CharClose">
0528 <RegExpr attribute="String Char" context="CharClose" String="\\(?:[tnvbrfa'"\\?]|[0-7]{1,3}|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4})|" />
0529 <IncludeRules context="FindSingleChar"/>
0530 </context>
0531
0532 <context name="Char32" attribute="Char" lineEndContext="#pop" fallthroughContext="CharClose">
0533 <RegExpr attribute="String Char" context="CharClose" String="\\(?:[tnvbrfa'"\\?]|[0-7]{1,3}|x[0-9A-Fa-f]{1,8}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})|" />
0534 <IncludeRules context="FindSingleChar"/>
0535 </context>
0536
0537 <context name="FindSingleChar" attribute="Char" lineEndContext="#pop">
0538 <DetectChar attribute="Error" context="#pop" char="'" />
0539 <RegExpr attribute="Char" context="CharClose" String="." />
0540 </context>
0541
0542 <context name="CharClose" attribute="Error" lineEndContext="#pop#pop">
0543 <DetectChar attribute="Char" context="#pop#pop" char="'" />
0544 </context>
0545
0546
0547 <context name="String8" attribute="String" lineEndContext="#pop">
0548 <IncludeRules context="string normal char" />
0549 <Detect2Chars context="String8EscapeX" char="\" char1="x" lookAhead="1"/>
0550 <IncludeRules context="string special char" />
0551 </context>
0552 <context name="String8EscapeX" attribute="String" lineEndContext="#pop">
0553 <HlCStringChar attribute="String Char" context="#pop!StringNoHex"/>
0554 <IncludeRules context="string special char x" />
0555 </context>
0556
0557 <context name="String16" attribute="String" lineEndContext="#pop">
0558 <IncludeRules context="string normal char" />
0559 <Detect2Chars context="String16EscapeX" char="\" char1="x" lookAhead="1"/>
0560 <IncludeRules context="string special char" />
0561 </context>
0562 <context name="String16EscapeX" attribute="String" lineEndContext="#pop">
0563 <RegExpr attribute="String Char" context="#pop!StringNoHex" String="\\x[0-9A-Fa-f]{1,4}" />
0564 <IncludeRules context="string special char x" />
0565 </context>
0566
0567 <context name="String32" attribute="String" lineEndContext="#pop">
0568 <IncludeRules context="string normal char" />
0569 <Detect2Chars context="String32EscapeX" char="\" char1="x" lookAhead="1"/>
0570 <IncludeRules context="string special char" />
0571 </context>
0572 <context name="String32EscapeX" attribute="String" lineEndContext="#pop">
0573 <RegExpr attribute="String Char" context="#pop!StringNoHex" String="\\x[0-9A-Fa-f]{1,8}" />
0574 <IncludeRules context="string special char x" />
0575 </context>
0576
0577 <context name="StringNoHex" attribute="Error" lineEndContext="#pop" fallthroughContext="#pop">
0578 <RegExpr attribute="Error" context="#pop" String="[0-9A-Fa-f]{1,}" />
0579 </context>
0580
0581 <context name="string special char" attribute="String" lineEndContext="#pop">
0582 <HlCStringChar attribute="String Char"/>
0583 <!-- \x{n...} is defined in "string special char x" -->
0584 <RegExpr attribute="String Char" String="\\(?:u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8}|u{[0-9A-Fa-f]+}|o{[0-7]+}|N{[- A-Z0-9]+})|&printf_like;|&format_like;"/>
0585 <AnyChar attribute="String" String="%{}"/>
0586 <RegExpr attribute="Error" String="\\(?:u{([0-9A-Fa-f]+|})?|u[0-9A-Fa-f]{0,3}|U[0-9A-Fa-f]{0,7}|o{([0-7]+|})?|N{([- A-Z0-9]+|})?|.)"/>
0587 <LineContinue attribute="Separator Symbol"/>
0588 </context>
0589 <context name="string special char x" attribute="String" lineEndContext="#pop">
0590 <RegExpr attribute="String Char" String="\\x{[0-9A-Fa-f]+}" context="#pop"/>
0591 <RegExpr attribute="Error" String="\\x({([0-9A-Fa-f]+|})?)?" context="#pop"/>
0592 </context>
0593
0594 <context name="string normal char" attribute="String" lineEndContext="#pop">
0595 <DetectChar attribute="String" context="UDLStringSuffix" char=""" />
0596 <!-- fast way, can be replaced by a `UntilChars` rule if it exists -->
0597 <!-- % -> printf format ; {} -> std::format -->
0598 <RegExpr attribute="String" context="#stay" String="[^%\\"{}]+" />
0599 </context>
0600
0601 <context name="UDLStringSuffix" attribute="String" fallthroughContext="#pop#pop" lineEndContext="#pop#pop">
0602 <WordDetect attribute="Standard Classes" context="#pop#pop" String="sv" />
0603 <WordDetect attribute="Standard Classes" context="#pop#pop" String="s" />
0604 <RegExpr attribute="UDL String Suffix" context="#pop#pop" String="_[_0-9A-Za-z]*\b" />
0605 </context>
0606
0607
0608 <context name="Attribute" attribute="Attribute" lineEndContext="#stay">
0609 <DetectSpaces/>
0610 <keyword attribute="Standard Attribute" context="#stay" String="attributes" />
0611 <Detect2Chars attribute="Symbol" context="#pop" char="]" char1="]" />
0612 <StringDetect attribute="Symbol" context="#pop" String=":>:>" /> <!-- Digraph: ]] -->
0613 <DetectChar attribute="Separator Symbol" context="#stay" char="," />
0614 <IncludeRules context="match comments" />
0615 <AnyChar attribute="Symbol" context="#stay" String="&punctuators;#" />
0616 <!-- Attributes may contain some text: [[deprecated("Reason text")]] -->
0617 <DetectChar attribute="String" context="String8" char=""" />
0618 <AnyChar attribute="Decimal" context="Integer" String="0123456789" lookAhead="true" />
0619 <!-- This keyword may appear in Attribute context. For example in code:
0620 [[using CC: opt(1), debug]]
0621 and it should be displayed as keyword, not like part of attribute...
0622 -->
0623 <WordDetect attribute="Keyword" context="AttributeNamespace" String="using" />
0624 <IncludeRules context="DetectGccAttributes##GCCExtensions" />
0625 <RegExpr attribute="CONSTS/MACROS" context="#stay" String="[A-Z][A-Z0-9_]{2,}\b" />
0626 <DetectIdentifier />
0627 </context>
0628
0629 <context name="Attribute In PP" attribute="Attribute" lineEndContext="#pop">
0630 <IncludeRules context="InPreprocessor" />
0631 <IncludeRules context="Attribute" />
0632 </context>
0633
0634 <context name="AttributeNamespace" attribute="Attribute" lineEndContext="#stay" fallthroughContext="#pop">
0635 <DetectSpaces />
0636 <IncludeRules context="DetectNamespaceGccAttributes##GCCExtensions" />
0637 <DetectIdentifier />
0638 </context>
0639
0640 <context name="RawString" attribute="String" lineEndContext="#stay">
0641 <AnyChar attribute="Raw String Literal Prefix" String="uUL8R"/>
0642 <!-- A sequence of one or more basic character set, except parentheses, backslash and spaces,
0643 at most 16 characters long -->
0644 <RegExpr attribute="Raw String Delimiter" context="#pop!InRawString" String=""([\x21-\x27\x2A-\x5B\x5D-\x7E]{0,16})\(" beginRegion="Raw String"/>
0645 <RegExpr attribute="Error" context="#pop" String=""(\s+|\w+\s*|"|[^\s\w]+)?"/>
0646 </context>
0647
0648 <context name="InRawString" attribute="Raw String" lineEndContext="#stay" dynamic="true">
0649 <!-- fast way, can be replaced by a `UntilChars` rule if it exists -->
0650 <RegExpr attribute="Raw String" context="#stay" String="[^%){}]+" />
0651 <RegExpr attribute="String Char" context="#stay" String="&printf_like;|&format_like;" />
0652 <StringDetect attribute="Raw String Delimiter" context="#pop" String=")%1"" dynamic="true" endRegion="Raw String" />
0653 </context>
0654
0655 <context name="Region Marker" attribute="Region Marker" lineEndContext="#pop" />
0656
0657 <context name="DetectNSEnd" attribute="Normal Text" lineEndContext="#stay">
0658 <Detect2Chars char=":" char1=":"/>
0659 <IncludeRules context="match comments and region markers" />
0660 <AnyChar context="#pop" String="&ns_punctuators;&separators; 	#:" lookAhead="1"/>
0661 <!-- This keyword may appear in InternalsNS context. For example in code:
0662 details::some_class::template some_templated_static();
0663 and it should be displayed as keyword, not like part of details namespace...
0664 -->
0665 <WordDetect attribute="Keyword" context="#pop" String="template" />
0666 <DetectIdentifier context="#stay"/>
0667 </context>
0668
0669 <context name="Standard Classes" attribute="Standard Classes" lineEndContext="#stay" fallthroughContext="#pop">
0670 <IncludeRules context="DetectNSEnd" />
0671 </context>
0672
0673 <context name="Boost Stuff" attribute="Boost Stuff" lineEndContext="#stay" fallthroughContext="#pop">
0674 <IncludeRules context="DetectNSEnd" />
0675 </context>
0676
0677 <context name="InternalsNS" attribute="Internals" lineEndContext="#stay" fallthroughContext="#pop">
0678 <IncludeRules context="DetectNSEnd" />
0679 </context>
0680
0681 <context name="Standard Classes In PP" attribute="Standard Classes" lineEndContext="#pop" fallthroughContext="#pop">
0682 <IncludeRules context="InPreprocessor" />
0683 <Detect2Chars attribute="Symbol" char="#" char1="#"/>
0684 <IncludeRules context="DetectNSEnd" />
0685 </context>
0686
0687 <context name="Boost Stuff In PP" attribute="Boost Stuff" lineEndContext="#pop" fallthroughContext="#pop">
0688 <IncludeRules context="InPreprocessor" />
0689 <Detect2Chars attribute="Symbol" char="#" char1="#"/>
0690 <IncludeRules context="DetectNSEnd" />
0691 </context>
0692
0693 <context name="InternalsNS In PP" attribute="Internals" lineEndContext="#pop" fallthroughContext="#pop">
0694 <IncludeRules context="InPreprocessor" />
0695 <Detect2Chars attribute="Symbol" char="#" char1="#"/>
0696 <IncludeRules context="DetectNSEnd" />
0697 </context>
0698
0699 <context name="Comment 1" attribute="Comment" lineEndContext="#pop">
0700 <LineContinue attribute="Error" context="#stay" />
0701 <DetectSpaces />
0702 <IncludeRules context="##Comments" />
0703 <DetectIdentifier />
0704 </context>
0705
0706 <context name="Comment 2" attribute="Comment" lineEndContext="#stay">
0707 <DetectSpaces />
0708 <LineContinue attribute="Comment" context="#stay" />
0709 <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" endRegion="Comment" />
0710 <IncludeRules context="##Comments" />
0711 <DetectIdentifier />
0712 </context>
0713
0714 <context name="AfterHash" attribute="Error" lineEndContext="#pop" fallthroughContext="#pop!LineError">
0715 <RegExpr attribute="Preprocessor" context="#pop!PreprocessorCmd" String="&pphash;(?=.)|" firstNonSpace="true" />
0716 </context>
0717
0718 <context name="LineError" attribute="Error" lineEndContext="#pop">
0719 <LineContinue attribute="Error" context="#stay" />
0720 <RegExpr attribute="Error" context="#stay" String="[^\\]+" />
0721 </context>
0722
0723
0724 <context name="PreprocessorCmd" attribute="Error" lineEndContext="#pop" fallthroughContext="#pop!LineError">
0725 <WordDetect attribute="Preprocessor" context="#pop!Include" String="include" />
0726 <WordDetect attribute="Preprocessor" context="#pop!PreprocessorIfDef" String="ifdef" beginRegion="PP" lookAhead="true" />
0727 <WordDetect attribute="Preprocessor" context="#pop!PreprocessorIfDef" String="ifndef" beginRegion="PP" lookAhead="true" />
0728 <WordDetect attribute="Preprocessor" context="#pop!PreprocessorIf" String="if" beginRegion="PP" lookAhead="true" />
0729 <WordDetect attribute="Preprocessor" context="#pop!PreprocessorIf" String="elif" endRegion="PP" beginRegion="PP" lookAhead="true" />
0730 <WordDetect attribute="Preprocessor" context="PreprocessorEndOfLineSpace" String="else" endRegion="PP" beginRegion="PP" />
0731 <WordDetect attribute="Preprocessor" context="PreprocessorEndOfLineSpace" String="endif" endRegion="PP" />
0732 <WordDetect attribute="Preprocessor" context="#pop!PreprocessorIfDef" String="elifdef" endRegion="PP" beginRegion="PP" lookAhead="true" />
0733 <WordDetect attribute="Preprocessor" context="#pop!PreprocessorIfDef" String="elifndef" endRegion="PP" beginRegion="PP" lookAhead="true" />
0734 <keyword attribute="Preprocessor" context="#pop!Define" String="preprocessorDefine" />
0735 <keyword attribute="Preprocessor" context="#pop!Preprocessor" String="preprocessorOther" />
0736 <!-- GCC extension -->
0737 <WordDetect attribute="Preprocessor" context="#pop!Include" String="include_next" />
0738 <Int attribute="Preprocessor" context="#pop!Preprocessor"/>
0739 </context>
0740
0741 <context name="Include" attribute="Preprocessor" lineEndContext="#pop">
0742 <DetectSpaces/>
0743 <RangeDetect attribute="Prep. Lib" context="PreprocessorEndOfLineSpace" char=""" char1=""" />
0744 <RangeDetect attribute="Prep. Lib" context="PreprocessorEndOfLineSpace" char="<" char1=">" />
0745 <IncludeRules context="Preprocessor" />
0746 <DetectIdentifier/>
0747 </context>
0748
0749 <context name="PreprocessorIfDef" attribute="Preprocessor" lineEndContext="#pop" fallthroughContext="#pop!LineError">
0750 <RegExpr attribute="Preprocessor" context="#pop!Preprocessor" String="\w+\s+([_A-Za-z][A-Za-z0-9]*\s*|(?=//|/\*))" />
0751 </context>
0752
0753 <context name="PreprocessorIf" attribute="Preprocessor" lineEndContext="#pop" fallthroughContext="#pop!LineError">
0754 <RegExpr attribute="Preprocessor" context="#pop!Inscoped" String="\w+&ppcond1;" />
0755 <RegExpr attribute="Preprocessor" context="#pop!Outscoped" String="\w+&ppcond0;" />
0756 <RegExpr attribute="Preprocessor" context="#pop!Preprocessor" String="\w+\s+(?=[^\s])" />
0757 </context>
0758
0759 <context name="PreprocessorEndOfLineSpace" attribute="Preprocessor" lineEndContext="#pop#pop" fallthroughContext="#pop#pop!LineError">
0760 <DetectSpaces />
0761 <IncludeRules context="match comments" />
0762 </context>
0763
0764 <context name="Preprocessor" attribute="Preprocessor" lineEndContext="#pop">
0765 <LineContinue attribute="Preprocessor" context="#stay" />
0766 <keyword attribute="Standard Macros" context="#stay" String="StdMacros" />
0767 <IncludeRules context="GNUMacros##GCCExtensions" />
0768 <IncludeRules context="match comments" />
0769 </context>
0770
0771 <context name="Define" attribute="Preprocessor" lineEndContext="#pop">
0772 <DetectSpaces/>
0773 <!--
0774 Old version: non-contextual macro
0775 <IncludeRules context="InPreprocessor" />
0776 <keyword attribute="Standard Macros" context="#stay" String="StdMacros" />
0777 <keyword attribute="Standard Macros" context="#stay" String="InMacro" />
0778 <IncludeRules context="GNUMacros##GCCExtensions" />
0779 <IncludeRules context="match comments" />
0780 -->
0781
0782 <IncludeRules context="InPreprocessor" />
0783 <Detect2Chars attribute="Error" context="#pop!LineError" char="/" char1="/" />
0784 <Detect2Chars attribute="Comment" context="MatchComment" char="/" char1="*" lookAhead="true" />
0785 <IncludeRules context="GNUMacros##GCCExtensions" />
0786 <DetectIdentifier attribute="Preprocessor" context="#pop!In Define"/>
0787 </context>
0788
0789 <context name="In Define" attribute="Preprocessor" lineEndContext="#pop">
0790 <DetectSpaces/>
0791 <LineContinue attribute="Separator Symbol" context="#stay" />
0792 <!-- Match scope regions and punctuators (partial for fast path) -->
0793 <AnyChar attribute="Symbol" context="#stay" String="#:(){}]+-*%=>!|&~^" />
0794 <!-- Detect attributes -->
0795 <Detect2Chars attribute="Symbol" context="Attribute In PP" char="[" char1="[" />
0796 <StringDetect attribute="Symbol" context="Attribute In PP" String="<:<:" /> <!-- Digraph: [[ -->
0797 <!-- Match numbers -->
0798 <RegExpr context="Number" String="\.?\d" lookAhead="true" />
0799 <!-- Match comments -->
0800 <IncludeRules context="match comments" />
0801 <!-- Match punctuators -->
0802 <AnyChar attribute="Separator Symbol" context="#stay" String="&separators;" />
0803 <AnyChar attribute="Symbol" context="#stay" String="&punctuators;" />
0804 <!-- Match keywords -->
0805 <IncludeRules context="match keywords" />
0806 <!-- Match string literals -->
0807 <AnyChar context="SelectStringPP" String="UuLR"'" lookAhead="1"/>
0808 <!-- Match GCC extensions -->
0809 <IncludeRules context="DetectGccExtensionsInPP##GCCExtensions" />
0810 <!-- Match most used namespaces and styles -->
0811 <RegExpr context="DispatchNamespacePP" String="(std::)|(boost::|BOOST_)|details?::|aux::|internals::" lookAhead="1"/>
0812 <keyword attribute="Standard Macros" context="#stay" String="InMacro" />
0813 <IncludeRules context="match identifier" />
0814 <!-- Match invalid symbols -->
0815 <AnyChar attribute="Error" context="#stay" String="$@`\" />
0816 </context>
0817
0818 <context name="InPreprocessor" attribute="Normal Text" lineEndContext="#pop">
0819 <LineContinue attribute="Separator Symbol" context="#stay" />
0820 <DetectChar attribute="Error" context="#stay" char="\" />
0821 </context>
0822
0823 <context name="Outscoped Common" attribute="Comment" lineEndContext="#stay">
0824 <DetectSpaces />
0825 <IncludeRules context="##Comments" />
0826 <DetectIdentifier />
0827 <!-- prevent incorrect highlighting in case of not closed properly comment block -->
0828 <Detect2Chars attribute="Comment" context="#stay" char="*" char1="/" />
0829 <IncludeRules context="match comments" />
0830 <RegExpr attribute="Comment" context="Outscoped intern" String="&pphash;if|" beginRegion="PP" firstNonSpace="true" />
0831 <LineContinue context="#stay" />
0832 </context>
0833
0834 <context name="Outscoped" attribute="Comment" lineEndContext="#stay">
0835 <DetectSpaces />
0836 <RegExpr attribute="Preprocessor" context="Outscoped AfterHash" String="&ispphash;|" firstNonSpace="true" lookAhead="true" />
0837 <IncludeRules context="Outscoped Common" />
0838 </context>
0839
0840 <context name="Outscoped AfterHash" attribute="Comment" lineEndContext="#pop">
0841 <RegExpr attribute="Preprocessor" context="#pop#pop!PreprocessorEndOfLineSpace" String="&pphash;endif\b" endRegion="PP" />
0842 <RegExpr attribute="Preprocessor" context="#pop#pop!Inscoped" String="&pphash;else\b" endRegion="PP" beginRegion="PP" />
0843 <RegExpr attribute="Comment" context="#pop!Outscoped intern" String="&pphash;if" beginRegion="PP" />
0844 <RegExpr attribute="Preprocessor" context="#pop#pop!Inscoped" String="&pphash;elif&ppcond1;" endRegion="PP" beginRegion="PP" />
0845 <RegExpr attribute="Preprocessor" context="#pop" String="&pphash;elif&ppcond0;" endRegion="PP" beginRegion="PP" />
0846 <RegExpr attribute="Preprocessor" context="#pop#pop!Preprocessor" String="&pphash;elif\b" endRegion="PP" beginRegion="PP" />
0847 <RegExpr attribute="Comment" context="#pop" String="&pphash;" />
0848 </context>
0849
0850 <context name="Outscoped 2" attribute="Comment" lineEndContext="#stay">
0851 <IncludeRules context="Outscoped Common" />
0852 <RegExpr attribute="Preprocessor" context="#pop!PreprocessorEndOfLineSpace" String="&pphash;endif|" endRegion="PP" firstNonSpace="true" />
0853 </context>
0854
0855 <context name="Inscoped" attribute="Normal Text" lineEndContext="#stay">
0856 <DetectSpaces />
0857 <RegExpr attribute="Preprocessor" context="Inscoped AfterHash" String="&ispphash;|" firstNonSpace="true" lookAhead="true" />
0858 <IncludeRules context="Main" />
0859 </context>
0860
0861 <context name="Inscoped AfterHash" attribute="Normal Text" lineEndContext="#pop" fallthroughContext="#pop!AfterHash">
0862 <DetectSpaces />
0863 <RegExpr attribute="Preprocessor" context="#pop!Outscoped 2" String="&pphash;el(?:se|if(n?def)?)" endRegion="PP" beginRegion="PP"/>
0864 <RegExpr attribute="Preprocessor" context="#pop#pop!PreprocessorEndOfLineSpace" String="&pphash;endif\b" endRegion="PP" />
0865 </context>
0866
0867 <context name="Outscoped intern" attribute="Comment" lineEndContext="#stay">
0868 <DetectSpaces />
0869 <IncludeRules context="##Comments" />
0870 <DetectIdentifier />
0871 <!-- prevent incorrect highlighting in case of not closed properly comment block -->
0872 <Detect2Chars attribute="Comment" context="#stay" char="*" char1="/" />
0873 <IncludeRules context="match comments" />
0874 <RegExpr attribute="Comment" context="Outscoped intern" String="&pphash;if|" beginRegion="PP" firstNonSpace="true" />
0875 <RegExpr attribute="Comment" context="#stay" String="&pphash;el(se|if(n?def)?)|" beginRegion="PP" endRegion="PP" firstNonSpace="true" />
0876 <RegExpr attribute="Comment" context="PreprocessorEndOfLineSpace" String="&pphash;endif|" endRegion="PP" firstNonSpace="true" />
0877 </context>
0878 </contexts>
0879
0880 <itemDatas>
0881 <itemData name="Normal Text" defStyleNum="dsNormal" spellChecking="false" />
0882 <itemData name="Control Flow" defStyleNum="dsControlFlow" spellChecking="false" />
0883 <itemData name="Keyword" defStyleNum="dsKeyword" spellChecking="false" />
0884 <itemData name="Data Type" defStyleNum="dsDataType" spellChecking="false" />
0885 <itemData name="Type Modifiers" defStyleNum="dsAttribute" spellChecking="false" />
0886 <itemData name="Attribute" defStyleNum="dsAttribute" spellChecking="false" bold="false" italic="true" />
0887 <itemData name="Standard Attribute" defStyleNum="dsAttribute" spellChecking="false" bold="false" italic="true" />
0888 <itemData name="Decimal" defStyleNum="dsDecVal" spellChecking="false" />
0889 <itemData name="Octal" defStyleNum="dsBaseN" spellChecking="false" />
0890 <itemData name="Hex" defStyleNum="dsBaseN" spellChecking="false" />
0891 <itemData name="Binary" defStyleNum="dsBaseN" spellChecking="false" />
0892 <itemData name="Float" defStyleNum="dsFloat" spellChecking="false" />
0893 <itemData name="Char" defStyleNum="dsChar" spellChecking="false" />
0894 <itemData name="Char Literal Prefix" defStyleNum="dsChar" spellChecking="false" />
0895 <itemData name="String" defStyleNum="dsString" spellChecking="true" />
0896 <itemData name="String Char" defStyleNum="dsSpecialChar" spellChecking="false" />
0897 <itemData name="String Literal Prefix" defStyleNum="dsString" spellChecking="true" />
0898 <itemData name="Raw String" defStyleNum="dsVerbatimString" spellChecking="true" />
0899 <itemData name="Raw String Delimiter" defStyleNum="dsString" spellChecking="false" />
0900 <itemData name="Raw String Literal Prefix" defStyleNum="dsString" spellChecking="false" />
0901 <itemData name="Comment" defStyleNum="dsComment" spellChecking="true" />
0902 <itemData name="Symbol" defStyleNum="dsOperator" spellChecking="false" />
0903 <itemData name="Separator Symbol" defStyleNum="dsOperator" spellChecking="false" />
0904 <itemData name="Data Members (m_*)" defStyleNum="dsVariable" spellChecking="false" />
0905 <itemData name="Globals (g_*)" defStyleNum="dsVariable" spellChecking="false" />
0906 <itemData name="Statics (s_*)" defStyleNum="dsVariable" spellChecking="false" />
0907 <itemData name="Types (*_t/*_type)" defStyleNum="dsDataType" spellChecking="false" />
0908 <itemData name="CONSTS/MACROS" defStyleNum="dsNormal" spellChecking="false" />
0909 <itemData name="Preprocessor" defStyleNum="dsPreprocessor" spellChecking="false" />
0910 <itemData name="Prep. Lib" defStyleNum="dsImport" spellChecking="false" />
0911 <itemData name="Standard Macros" defStyleNum="dsOthers" spellChecking="false" />
0912 <itemData name="Standard Classes" defStyleNum="dsBuiltIn" spellChecking="false" />
0913 <itemData name="Boost Stuff" defStyleNum="dsExtension" spellChecking="false" />
0914 <itemData name="Internals" defStyleNum="dsNormal" spellChecking="false" color="#808080" selColor="#808080" />
0915 <itemData name="Region Marker" defStyleNum="dsRegionMarker" spellChecking="false" />
0916 <itemData name="UDL Numeric Suffix" defStyleNum="dsOperator" spellChecking="false" />
0917 <itemData name="UDL String Suffix" defStyleNum="dsOperator" spellChecking="false" />
0918 <itemData name="Standard Suffix" defStyleNum="dsBuiltIn" spellChecking="false" />
0919 <itemData name="Error" defStyleNum="dsError" spellChecking="false" />
0920 </itemDatas>
0921 </highlighting>
0922 <general>
0923 <comments>
0924 <comment name="singleLine" start="//" position="afterwhitespace"/>
0925 <comment name="multiLine" start="/*" end="*/" region="Comment" />
0926 </comments>
0927 <keywords casesensitive="1" additionalDeliminator="#"" />
0928 </general>
0929 </language>
0930 <!-- kate: indent-width 2; tab-width 2; -->