+++ /dev/null
-<?xml version="1.0"?>
-
-<!DOCTYPE MODE SYSTEM "xmode.dtd">
-
-<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
- 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>
-
- <RULES SET="LEX" IGNORE_CASE="FALSE">
- <IMPORT DELEGATE="COMMENTS" />
- <IMPORT DELEGATE="C_LEXER" />
- </RULES>
-
- <!-- Comments, Trigraph, Alternate-Tokens -->
- <RULES SET="C_LEXER"
- IGNORE_CASE="FALSE"
- HIGHLIGHT_DIGITS="TRUE" DIGIT_RE="[0-9][0-9a-zA-Z]*">
-
- <SPAN TYPE="LITERAL1" NO_LINE_BREAK="TRUE" ESCAPE="\">
- <BEGIN>L"</BEGIN>
- <END>"</END>
- </SPAN>
- <SPAN TYPE="LITERAL1" NO_LINE_BREAK="TRUE" ESCAPE="\">
- <BEGIN>"</BEGIN>
- <END>"</END>
- </SPAN>
- <SPAN TYPE="LITERAL1" NO_LINE_BREAK="TRUE" ESCAPE="\">
- <BEGIN>L'</BEGIN>
- <END>'</END>
- </SPAN>
- <SPAN TYPE="LITERAL1" NO_LINE_BREAK="TRUE" ESCAPE="\">
- <BEGIN>'</BEGIN>
- <END>'</END>
- </SPAN>
-
- <!-- Trigraphs -->
- <SEQ TYPE="LITERAL4">??(</SEQ>
- <SEQ TYPE="LITERAL4">??/</SEQ>
- <SEQ TYPE="LITERAL4">??)</SEQ>
- <SEQ TYPE="LITERAL4">??'</SEQ>
- <SEQ TYPE="LITERAL4">??<</SEQ>
- <SEQ TYPE="LITERAL4">??!</SEQ>
- <SEQ TYPE="LITERAL4">??></SEQ>
- <SEQ TYPE="LITERAL4">??-</SEQ>
- <SEQ TYPE="LITERAL4">??=</SEQ>
-
- <!-- Alternate tokens -->
- <SEQ TYPE="LITERAL4"><:</SEQ>
- <SEQ TYPE="LITERAL4">:></SEQ>
- <SEQ TYPE="LITERAL4"><%</SEQ>
- <SEQ TYPE="LITERAL4">%></SEQ>
- <SEQ TYPE="LITERAL4">%:</SEQ>
-
- <!-- Labels.
- This is a part of core language syntax, but must be here
- because it can't work after SEQ for ':'. -->
- <MARK_PREVIOUS AT_WHITESPACE_END="TRUE"
- MATCH_TYPE="OPERATOR"
- TYPE="LABEL">:</MARK_PREVIOUS>
-
- <!-- Function-like macro or function calls.
- This can't work after SEQ for '('. -->
- <MARK_PREVIOUS
- TYPE="FUNCTION"
- MATCH_TYPE="OPERATOR">(</MARK_PREVIOUS>
-
- <SEQ TYPE="OPERATOR">=</SEQ>
- <SEQ TYPE="OPERATOR">!</SEQ>
- <SEQ TYPE="OPERATOR">+</SEQ>
- <SEQ TYPE="OPERATOR">-</SEQ>
- <SEQ TYPE="OPERATOR">/</SEQ>
- <SEQ TYPE="OPERATOR">*</SEQ>
- <SEQ TYPE="OPERATOR">></SEQ>
- <SEQ TYPE="OPERATOR"><</SEQ>
- <SEQ TYPE="OPERATOR">%</SEQ>
- <SEQ TYPE="OPERATOR">&</SEQ>
- <SEQ TYPE="OPERATOR">|</SEQ>
- <SEQ TYPE="OPERATOR">^</SEQ>
- <SEQ TYPE="OPERATOR">~</SEQ>
- <SEQ TYPE="OPERATOR">?</SEQ>
- <SEQ TYPE="OPERATOR">:</SEQ>
- <SEQ TYPE="OPERATOR">.</SEQ>
- <SEQ TYPE="OPERATOR">,</SEQ>
- <SEQ TYPE="OPERATOR">[</SEQ>
- <SEQ TYPE="OPERATOR">]</SEQ>
- <SEQ TYPE="OPERATOR">)</SEQ>
- <SEQ TYPE="OPERATOR">}</SEQ>
- <SEQ TYPE="OPERATOR">{</SEQ>
- <SEQ TYPE="OPERATOR">;</SEQ>
-
- <KEYWORDS>
- <LITERAL2>__FILE__</LITERAL2>
- <LITERAL2>__LINE__</LITERAL2>
- <LITERAL2>__DATE__</LITERAL2>
- <LITERAL2>__RANDOM__</LITERAL2>
- <LITERAL2>__RANDOM_LAST</LITERAL2>
- <LITERAL2>__COUNT__</LITERAL2>
- <LITERAL2>__COUNT_LAST</LITERAL2>
- </KEYWORDS>
- </RULES>
-
- <!-- Core language -->
- <RULES SET="CORE"
- IGNORE_CASE="FALSE"
- HIGHLIGHT_DIGITS="TRUE" DIGIT_RE="[0-9][0-9a-zA-Z]*">
- <KEYWORDS>
- <!-- Types -->
- <KEYWORD3>float</KEYWORD3>
- <KEYWORD3>vector</KEYWORD3>
- <KEYWORD3>string</KEYWORD3>
- <KEYWORD3>entity</KEYWORD3>
- <KEYWORD3>enum</KEYWORD3>
- <KEYWORD3>.float</KEYWORD3>
- <KEYWORD3>.int</KEYWORD3>
- <KEYWORD3>.vector</KEYWORD3>
- <KEYWORD3>.string</KEYWORD3>
- <KEYWORD3>.entity</KEYWORD3>
- <KEYWORD3>.void</KEYWORD3>
- <KEYWORD3>typedef</KEYWORD3>
-
- <KEYWORD1>break</KEYWORD1>
- <KEYWORD1>case</KEYWORD1>
- <KEYWORD1>continue</KEYWORD1>
- <KEYWORD1>default</KEYWORD1>
- <KEYWORD1>do</KEYWORD1>
- <KEYWORD1>else</KEYWORD1>
- <KEYWORD1>for</KEYWORD1>
- <KEYWORD1>goto</KEYWORD1>
- <KEYWORD1>if</KEYWORD1>
- <KEYWORD1>return</KEYWORD1>
- <KEYWORD1>switch</KEYWORD1>
- <KEYWORD1>void</KEYWORD1>
- <KEYWORD1>while</KEYWORD1>
- <KEYWORD1>nil</KEYWORD1>
-
- <LITERAL2>FALSE</LITERAL2>
- <LITERAL2>TRUE</LITERAL2>
- <LITERAL2>...</LITERAL2>
- </KEYWORDS>
- </RULES>
-
- <!-- Different comment styles. -->
- <RULES SET="COMMENTS">
- <!-- Doxygen comment, Javadoc style -->
- <SEQ TYPE="COMMENT1">/**/</SEQ>
- <SPAN TYPE="COMMENT3" DELEGATE="doxygen::DOXYGEN">
- <BEGIN>/**<</BEGIN>
- <END>*/</END>
- </SPAN>
- <SPAN TYPE="COMMENT3" DELEGATE="doxygen::DOXYGEN">
- <BEGIN>/**</BEGIN>
- <END>*/</END>
- </SPAN>
- <EOL_SPAN TYPE="COMMENT3" DELEGATE="doxygen::DOXYGEN">///<</EOL_SPAN>
- <EOL_SPAN TYPE="COMMENT3" DELEGATE="doxygen::DOXYGEN">///</EOL_SPAN>
-
- <!-- Doxygen comment, Qt style -->
- <SPAN TYPE="COMMENT3" DELEGATE="doxygen::DOXYGEN">
- <BEGIN>/*!<</BEGIN>
- <END>*/</END>
- </SPAN>
- <SPAN TYPE="COMMENT3" DELEGATE="doxygen::DOXYGEN">
- <BEGIN>/*!</BEGIN>
- <END>*/</END>
- </SPAN>
- <EOL_SPAN TYPE="COMMENT3" DELEGATE="doxygen::DOXYGEN">//!<</EOL_SPAN>
- <EOL_SPAN TYPE="COMMENT3" DELEGATE="doxygen::DOXYGEN">//!</EOL_SPAN>
-
- <!-- C style comment -->
- <SPAN TYPE="COMMENT1">
- <BEGIN>/*</BEGIN>
- <END>*/</END>
- </SPAN>
- <EOL_SPAN TYPE="COMMENT1">//</EOL_SPAN>
- </RULES>
-
- <!-- Preprocessor specific rules -->
- <RULES SET="CPP"
- IGNORE_CASE="FALSE"
- HIGHLIGHT_DIGITS="TRUE" DIGIT_RE="[0-9][0-9a-zA-Z]*">
-
- <EOL_SPAN_REGEXP HASH_CHAR="include" TYPE="MARKUP" DELEGATE="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="LEX">endif\b</EOL_SPAN_REGEXP>
- <EOL_SPAN_REGEXP HASH_CHAR="elif" TYPE="MARKUP" DELEGATE="CONDITION">elif\b</EOL_SPAN_REGEXP>
- <EOL_SPAN_REGEXP HASH_CHAR="if" TYPE="MARKUP" DELEGATE="CONDITION">if\b</EOL_SPAN_REGEXP>
-
- <IMPORT DELEGATE="LEX"/>
-
- <!-- Directives -->
- <KEYWORDS>
- <MARKUP>undef</MARKUP>
- <MARKUP>ifdef</MARKUP>
- <MARKUP>ifndef</MARKUP>
- <MARKUP>else</MARKUP>
- <MARKUP>error</MARKUP>
- <MARKUP>warning</MARKUP>
- <MARKUP>pragma</MARKUP>
- <MARKUP>$frame</MARKUP>
- <MARKUP>$model</MARKUP>
- </KEYWORDS>
- </RULES>
-
- <!-- After #include directive -->
- <!-- "\"s are not escaped. -->
- <RULES SET="INCLUDE"
- IGNORE_CASE="FALSE"
- HIGHLIGHT_DIGITS="TRUE" DIGIT_RE="[0-9][0-9a-zA-Z]*">
- <SPAN TYPE="LITERAL1" NO_LINE_BREAK="TRUE">
- <BEGIN><</BEGIN>
- <END>></END>
- </SPAN>
- <SPAN TYPE="LITERAL1" NO_LINE_BREAK="TRUE">
- <BEGIN>"</BEGIN>
- <END>"</END>
- </SPAN>
- <IMPORT DELEGATE="LEX"/>
- </RULES>
-
- <!-- After #define directive -->
- <!-- Almost same as the normal code,
- except two additional operators # and ##. -->
- <RULES SET="DEFINE"
- 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>
-
- <!-- After #if or #elif directive -->
- <!-- All constant expressions and a special operator
- 'defined' is available. But the core language elements
- (such as operator 'sizeof', type casting, etc...) are not. -->
- <RULES SET="CONDITION"
- IGNORE_CASE="FALSE"
- HIGHLIGHT_DIGITS="TRUE" DIGIT_RE="[0-9][0-9a-zA-Z]*">
- <IMPORT DELEGATE="LEX"/>
- <KEYWORDS>
- <KEYWORD2>defined</KEYWORD2>
- <KEYWORD2>TRUE</KEYWORD2>
- <KEYWORD2>FALSE</KEYWORD2>
- <KEYWORD2>true</KEYWORD2>
- <KEYWORD2>false</KEYWORD2>
- </KEYWORDS>
- </RULES>
-</MODE>