123 lines
4.4 KiB
XML
123 lines
4.4 KiB
XML
<?xml version="1.0"?>
|
|
|
|
<!DOCTYPE MODE SYSTEM "xmode.dtd">
|
|
|
|
<!-- Extension of c.xml to add C++ specific syntax. -->
|
|
<MODE>
|
|
<PROPS>
|
|
<PROPERTY NAME="commentStart" VALUE="/*" />
|
|
<PROPERTY NAME="commentEnd" VALUE="*/" />
|
|
<PROPERTY NAME="lineComment" VALUE="//" />
|
|
<PROPERTY NAME="wordBreakChars" VALUE=",+-=<>/?^&*" />
|
|
|
|
|
|
<!-- Auto indent -->
|
|
<PROPERTY NAME="indentOpenBrackets" VALUE="{" />
|
|
<PROPERTY NAME="indentCloseBrackets" VALUE="}" />
|
|
<PROPERTY NAME="unalignedOpenBrackets" VALUE="(" />
|
|
<PROPERTY NAME="unalignedCloseBrackets" VALUE=")" />
|
|
<PROPERTY NAME="indentNextLine"
|
|
VALUE="(?!^\s*(#|//)).*(\b(if|while|for)\s*\(.*\)|\b(else|do)\b)[^{;]*$" />
|
|
<PROPERTY NAME="unindentThisLine"
|
|
VALUE="^\s*((case\b.*|[\p{Alpha}_][\p{Alnum}_]*)\s*:(?!:)).*$" />
|
|
<PROPERTY NAME="electricKeys" VALUE=":" />
|
|
</PROPS>
|
|
|
|
<RULES
|
|
ESCAPE="\" IGNORE_CASE="FALSE"
|
|
HIGHLIGHT_DIGITS="TRUE" DIGIT_RE="[0-9][0-9a-zA-Z]*">
|
|
<EOL_SPAN TYPE="KEYWORD2" AT_WHITESPACE_END="TRUE" DELEGATE="CPP">#</EOL_SPAN>
|
|
|
|
<IMPORT DELEGATE="LEX"/>
|
|
<IMPORT DELEGATE="CORE"/>
|
|
</RULES>
|
|
|
|
<!-- Core C++ language -->
|
|
<RULES SET="LEX"
|
|
ESCAPE="\" IGNORE_CASE="FALSE"
|
|
HIGHLIGHT_DIGITS="TRUE" DIGIT_RE="[0-9][0-9a-zA-Z]*">
|
|
|
|
<!-- A hack not to mark namespace qualification like "std::"
|
|
as labels. -->
|
|
<SEQ TYPE="OPERATOR">::</SEQ>
|
|
|
|
<IMPORT DELEGATE="c::LEX"/>
|
|
</RULES>
|
|
|
|
<!-- Core C++ language -->
|
|
<RULES SET="CORE"
|
|
ESCAPE="\" IGNORE_CASE="FALSE"
|
|
HIGHLIGHT_DIGITS="TRUE" DIGIT_RE="[0-9][0-9a-zA-Z]*">
|
|
|
|
<IMPORT DELEGATE="c::CORE"/>
|
|
|
|
<KEYWORDS>
|
|
<KEYWORD3>catch</KEYWORD3>
|
|
<KEYWORD3>class</KEYWORD3>
|
|
<KEYWORD3>const_cast</KEYWORD3>
|
|
<KEYWORD1>delete</KEYWORD1>
|
|
<KEYWORD3>dynamic_cast</KEYWORD3>
|
|
<KEYWORD1>explicit</KEYWORD1>
|
|
<KEYWORD2>export</KEYWORD2>
|
|
<KEYWORD1>friend</KEYWORD1>
|
|
<KEYWORD3>mutable</KEYWORD3>
|
|
<KEYWORD2>namespace</KEYWORD2>
|
|
<KEYWORD1>new</KEYWORD1>
|
|
<KEYWORD3>operator</KEYWORD3>
|
|
<KEYWORD1>private</KEYWORD1>
|
|
<KEYWORD1>protected</KEYWORD1>
|
|
<KEYWORD1>public</KEYWORD1>
|
|
<KEYWORD3>reinterpret_cast</KEYWORD3>
|
|
<KEYWORD3>static_assert</KEYWORD3>
|
|
<KEYWORD3>static_cast</KEYWORD3>
|
|
<KEYWORD3>template</KEYWORD3>
|
|
<LITERAL2>this</LITERAL2>
|
|
<KEYWORD1>throw</KEYWORD1>
|
|
<KEYWORD1>try</KEYWORD1>
|
|
<KEYWORD3>typeid</KEYWORD3>
|
|
<KEYWORD3>typename</KEYWORD3>
|
|
<KEYWORD2>using</KEYWORD2>
|
|
<KEYWORD1>virtual</KEYWORD1>
|
|
</KEYWORDS>
|
|
</RULES>
|
|
|
|
<!-- Preprocessor specific rules -->
|
|
<RULES SET="CPP"
|
|
ESCAPE="\" IGNORE_CASE="FALSE"
|
|
HIGHLIGHT_DIGITS="TRUE" DIGIT_RE="[0-9][0-9a-zA-Z]*">
|
|
|
|
<EOL_SPAN_REGEXP HASH_CHAR="include" TYPE="MARKUP" DELEGATE="c::INCLUDE">include\b</EOL_SPAN_REGEXP>
|
|
<EOL_SPAN_REGEXP HASH_CHAR="define" TYPE="MARKUP" DELEGATE="DEFINE">define\b</EOL_SPAN_REGEXP>
|
|
<EOL_SPAN_REGEXP HASH_CHAR="endif" TYPE="MARKUP" DELEGATE="c::LEX">endif\b</EOL_SPAN_REGEXP>
|
|
<EOL_SPAN_REGEXP HASH_CHAR="elif" TYPE="MARKUP" DELEGATE="c::CONDITION">elif\b</EOL_SPAN_REGEXP>
|
|
<EOL_SPAN_REGEXP HASH_CHAR="if" TYPE="MARKUP" DELEGATE="c::CONDITION">if\b</EOL_SPAN_REGEXP>
|
|
|
|
<IMPORT DELEGATE="LEX"/>
|
|
|
|
<!-- Directives -->
|
|
<KEYWORDS>
|
|
<MARKUP>ifdef</MARKUP>
|
|
<MARKUP>ifndef</MARKUP>
|
|
<MARKUP>else</MARKUP>
|
|
<MARKUP>error</MARKUP>
|
|
<MARKUP>line</MARKUP>
|
|
<MARKUP>pragma</MARKUP>
|
|
<MARKUP>undef</MARKUP>
|
|
<MARKUP>warning</MARKUP>
|
|
</KEYWORDS>
|
|
</RULES>
|
|
|
|
<!-- After #define directive -->
|
|
<!-- Almost same as the normal code,
|
|
except two additional operators # and ##. -->
|
|
<RULES SET="DEFINE"
|
|
ESCAPE="\" IGNORE_CASE="FALSE"
|
|
HIGHLIGHT_DIGITS="TRUE" DIGIT_RE="[0-9][0-9a-zA-Z]*">
|
|
<SEQ TYPE="OPERATOR">#</SEQ>
|
|
<IMPORT DELEGATE="LEX"/>
|
|
<IMPORT DELEGATE="CORE"/>
|
|
</RULES>
|
|
|
|
</MODE>
|
|
|