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>
							 | 
						||
| 
								 | 
							
								
							 |