3 <!DOCTYPE MODE SYSTEM "xmode.dtd">
7 <PROPERTY NAME="commentStart" VALUE="/*" />
8 <PROPERTY NAME="commentEnd" VALUE="*/" />
9 <PROPERTY NAME="lineComment" VALUE="//" />
10 <PROPERTY NAME="wordBreakChars" VALUE=",+-=<>/?^&*" />
13 <PROPERTY NAME="indentOpenBrackets" VALUE="{" />
14 <PROPERTY NAME="indentCloseBrackets" VALUE="}" />
15 <PROPERTY NAME="unalignedOpenBrackets" VALUE="(" />
16 <PROPERTY NAME="unalignedCloseBrackets" VALUE=")" />
17 <PROPERTY NAME="indentNextLine"
18 VALUE="(?!^\s*(#|//)).*(\b(if|while|for)\s*\(.*\)|\b(else|do)\b)[^{;]*$" />
19 <PROPERTY NAME="unindentThisLine"
20 VALUE="^\s*((case\b.*|[\p{Alpha}_][\p{Alnum}_]*)\s*:(?!:)).*$" />
21 <PROPERTY NAME="electricKeys" VALUE=":" />
26 HIGHLIGHT_DIGITS="TRUE" DIGIT_RE="[0-9][0-9a-zA-Z]*">
27 <EOL_SPAN TYPE="KEYWORD2" AT_WHITESPACE_END="TRUE" DELEGATE="CPP">#</EOL_SPAN>
29 <IMPORT DELEGATE="LEX"/>
30 <IMPORT DELEGATE="CORE"/>
33 <RULES SET="LEX" IGNORE_CASE="FALSE">
34 <IMPORT DELEGATE="COMMENTS" />
35 <IMPORT DELEGATE="C_LEXER" />
38 <!-- Comments, Trigraph, Alternate-Tokens -->
41 HIGHLIGHT_DIGITS="TRUE" DIGIT_RE="[0-9][0-9a-zA-Z]*">
43 <SPAN TYPE="LITERAL1" NO_LINE_BREAK="TRUE" ESCAPE="\">
47 <SPAN TYPE="LITERAL1" NO_LINE_BREAK="TRUE" ESCAPE="\">
51 <SPAN TYPE="LITERAL1" NO_LINE_BREAK="TRUE" ESCAPE="\">
55 <SPAN TYPE="LITERAL1" NO_LINE_BREAK="TRUE" ESCAPE="\">
61 <SEQ TYPE="LITERAL4">??(</SEQ>
62 <SEQ TYPE="LITERAL4">??/</SEQ>
63 <SEQ TYPE="LITERAL4">??)</SEQ>
64 <SEQ TYPE="LITERAL4">??'</SEQ>
65 <SEQ TYPE="LITERAL4">??<</SEQ>
66 <SEQ TYPE="LITERAL4">??!</SEQ>
67 <SEQ TYPE="LITERAL4">??></SEQ>
68 <SEQ TYPE="LITERAL4">??-</SEQ>
69 <SEQ TYPE="LITERAL4">??=</SEQ>
71 <!-- Alternate tokens -->
72 <SEQ TYPE="LITERAL4"><:</SEQ>
73 <SEQ TYPE="LITERAL4">:></SEQ>
74 <SEQ TYPE="LITERAL4"><%</SEQ>
75 <SEQ TYPE="LITERAL4">%></SEQ>
76 <SEQ TYPE="LITERAL4">%:</SEQ>
79 This is a part of core language syntax, but must be here
80 because it can't work after SEQ for ':'. -->
81 <MARK_PREVIOUS AT_WHITESPACE_END="TRUE"
83 TYPE="LABEL">:</MARK_PREVIOUS>
85 <!-- Function-like macro or function calls.
86 This can't work after SEQ for '('. -->
89 MATCH_TYPE="OPERATOR">(</MARK_PREVIOUS>
91 <SEQ TYPE="OPERATOR">=</SEQ>
92 <SEQ TYPE="OPERATOR">!</SEQ>
93 <SEQ TYPE="OPERATOR">+</SEQ>
94 <SEQ TYPE="OPERATOR">-</SEQ>
95 <SEQ TYPE="OPERATOR">/</SEQ>
96 <SEQ TYPE="OPERATOR">*</SEQ>
97 <SEQ TYPE="OPERATOR">></SEQ>
98 <SEQ TYPE="OPERATOR"><</SEQ>
99 <SEQ TYPE="OPERATOR">%</SEQ>
100 <SEQ TYPE="OPERATOR">&</SEQ>
101 <SEQ TYPE="OPERATOR">|</SEQ>
102 <SEQ TYPE="OPERATOR">^</SEQ>
103 <SEQ TYPE="OPERATOR">~</SEQ>
104 <SEQ TYPE="OPERATOR">?</SEQ>
105 <SEQ TYPE="OPERATOR">:</SEQ>
106 <SEQ TYPE="OPERATOR">.</SEQ>
107 <SEQ TYPE="OPERATOR">,</SEQ>
108 <SEQ TYPE="OPERATOR">[</SEQ>
109 <SEQ TYPE="OPERATOR">]</SEQ>
110 <SEQ TYPE="OPERATOR">)</SEQ>
111 <SEQ TYPE="OPERATOR">}</SEQ>
112 <SEQ TYPE="OPERATOR">{</SEQ>
113 <SEQ TYPE="OPERATOR">;</SEQ>
116 <LITERAL2>__FILE__</LITERAL2>
117 <LITERAL2>__LINE__</LITERAL2>
118 <LITERAL2>__DATE__</LITERAL2>
119 <LITERAL2>__RANDOM__</LITERAL2>
120 <LITERAL2>__RANDOM_LAST</LITERAL2>
121 <LITERAL2>__COUNT__</LITERAL2>
122 <LITERAL2>__COUNT_LAST</LITERAL2>
126 <!-- Core language -->
129 HIGHLIGHT_DIGITS="TRUE" DIGIT_RE="[0-9][0-9a-zA-Z]*">
132 <KEYWORD3>float</KEYWORD3>
133 <KEYWORD3>vector</KEYWORD3>
134 <KEYWORD3>string</KEYWORD3>
135 <KEYWORD3>entity</KEYWORD3>
136 <KEYWORD3>enum</KEYWORD3>
137 <KEYWORD3>.float</KEYWORD3>
138 <KEYWORD3>.int</KEYWORD3>
139 <KEYWORD3>.vector</KEYWORD3>
140 <KEYWORD3>.string</KEYWORD3>
141 <KEYWORD3>.entity</KEYWORD3>
142 <KEYWORD3>.void</KEYWORD3>
143 <KEYWORD3>typedef</KEYWORD3>
145 <KEYWORD1>break</KEYWORD1>
146 <KEYWORD1>case</KEYWORD1>
147 <KEYWORD1>continue</KEYWORD1>
148 <KEYWORD1>default</KEYWORD1>
149 <KEYWORD1>do</KEYWORD1>
150 <KEYWORD1>else</KEYWORD1>
151 <KEYWORD1>for</KEYWORD1>
152 <KEYWORD1>goto</KEYWORD1>
153 <KEYWORD1>if</KEYWORD1>
154 <KEYWORD1>return</KEYWORD1>
155 <KEYWORD1>switch</KEYWORD1>
156 <KEYWORD1>void</KEYWORD1>
157 <KEYWORD1>while</KEYWORD1>
158 <KEYWORD1>nil</KEYWORD1>
160 <LITERAL2>FALSE</LITERAL2>
161 <LITERAL2>TRUE</LITERAL2>
162 <LITERAL2>...</LITERAL2>
166 <!-- Different comment styles. -->
167 <RULES SET="COMMENTS">
168 <!-- Doxygen comment, Javadoc style -->
169 <SEQ TYPE="COMMENT1">/**/</SEQ>
170 <SPAN TYPE="COMMENT3" DELEGATE="doxygen::DOXYGEN">
171 <BEGIN>/**<</BEGIN>
174 <SPAN TYPE="COMMENT3" DELEGATE="doxygen::DOXYGEN">
178 <EOL_SPAN TYPE="COMMENT3" DELEGATE="doxygen::DOXYGEN">///<</EOL_SPAN>
179 <EOL_SPAN TYPE="COMMENT3" DELEGATE="doxygen::DOXYGEN">///</EOL_SPAN>
181 <!-- Doxygen comment, Qt style -->
182 <SPAN TYPE="COMMENT3" DELEGATE="doxygen::DOXYGEN">
183 <BEGIN>/*!<</BEGIN>
186 <SPAN TYPE="COMMENT3" DELEGATE="doxygen::DOXYGEN">
190 <EOL_SPAN TYPE="COMMENT3" DELEGATE="doxygen::DOXYGEN">//!<</EOL_SPAN>
191 <EOL_SPAN TYPE="COMMENT3" DELEGATE="doxygen::DOXYGEN">//!</EOL_SPAN>
193 <!-- C style comment -->
194 <SPAN TYPE="COMMENT1">
198 <EOL_SPAN TYPE="COMMENT1">//</EOL_SPAN>
201 <!-- Preprocessor specific rules -->
204 HIGHLIGHT_DIGITS="TRUE" DIGIT_RE="[0-9][0-9a-zA-Z]*">
206 <EOL_SPAN_REGEXP HASH_CHAR="include" TYPE="MARKUP" DELEGATE="INCLUDE">include\b</EOL_SPAN_REGEXP>
207 <EOL_SPAN_REGEXP HASH_CHAR="define" TYPE="MARKUP" DELEGATE="DEFINE">define\b</EOL_SPAN_REGEXP>
208 <EOL_SPAN_REGEXP HASH_CHAR="endif" TYPE="MARKUP" DELEGATE="LEX">endif\b</EOL_SPAN_REGEXP>
209 <EOL_SPAN_REGEXP HASH_CHAR="elif" TYPE="MARKUP" DELEGATE="CONDITION">elif\b</EOL_SPAN_REGEXP>
210 <EOL_SPAN_REGEXP HASH_CHAR="if" TYPE="MARKUP" DELEGATE="CONDITION">if\b</EOL_SPAN_REGEXP>
212 <IMPORT DELEGATE="LEX"/>
216 <MARKUP>undef</MARKUP>
217 <MARKUP>ifdef</MARKUP>
218 <MARKUP>ifndef</MARKUP>
219 <MARKUP>else</MARKUP>
220 <MARKUP>error</MARKUP>
221 <MARKUP>warning</MARKUP>
222 <MARKUP>pragma</MARKUP>
223 <MARKUP>$frame</MARKUP>
224 <MARKUP>$model</MARKUP>
228 <!-- After #include directive -->
229 <!-- "\"s are not escaped. -->
232 HIGHLIGHT_DIGITS="TRUE" DIGIT_RE="[0-9][0-9a-zA-Z]*">
233 <SPAN TYPE="LITERAL1" NO_LINE_BREAK="TRUE">
237 <SPAN TYPE="LITERAL1" NO_LINE_BREAK="TRUE">
241 <IMPORT DELEGATE="LEX"/>
244 <!-- After #define directive -->
245 <!-- Almost same as the normal code,
246 except two additional operators # and ##. -->
249 HIGHLIGHT_DIGITS="TRUE" DIGIT_RE="[0-9][0-9a-zA-Z]*">
250 <SEQ TYPE="OPERATOR">#</SEQ>
251 <IMPORT DELEGATE="LEX"/>
252 <IMPORT DELEGATE="CORE"/>
255 <!-- After #if or #elif directive -->
256 <!-- All constant expressions and a special operator
257 'defined' is available. But the core language elements
258 (such as operator 'sizeof', type casting, etc...) are not. -->
259 <RULES SET="CONDITION"
261 HIGHLIGHT_DIGITS="TRUE" DIGIT_RE="[0-9][0-9a-zA-Z]*">
262 <IMPORT DELEGATE="LEX"/>
264 <KEYWORD2>defined</KEYWORD2>
265 <KEYWORD2>TRUE</KEYWORD2>
266 <KEYWORD2>FALSE</KEYWORD2>
267 <KEYWORD2>true</KEYWORD2>
268 <KEYWORD2>false</KEYWORD2>