3 <!DOCTYPE MODE SYSTEM "xmode.dtd">
5 <!-- Python mode, by Slava Pestov. Based on PythonTokenMarker by -->
6 <!-- Jonathan Revusky -->
8 <!-- Modified 19-Jul-00 by Ivan Frohne to: -->
9 <!-- (a) implement 'indentOnEnter'; -->
10 <!-- (b) indent next line automatically after control structures followed -->
12 <!-- (c) make """ or ''' multiline quotes TYPE LITERAL2; -->
13 <!-- (d) add TYPE FUNCTION identified by a following '(' -->
14 <!-- (e) eliminate the '?' SEQ TYPE ('?' has no meaning in Python); -->
15 <!-- (f) change the TYPE of 'and', 'or', and 'not' to KEYWORD1; and -->
16 <!-- (g) add all builtin functions, builtin exceptions, -->
17 <!-- builtin type methods, File object methods, and special type -->
18 <!-- attributes as TYPE KEYWORD3. -->
22 <PROPERTY NAME="indentNextLines" VALUE="\s*[^#]{3,}:\s*(#.*)?" />
23 <PROPERTY NAME="indentOpenBrackets" VALUE="{[" />
24 <PROPERTY NAME="indentCloseBrackets" VALUE="}]" />
25 <PROPERTY NAME="unalignedOpenBrackets" VALUE="(" />
26 <PROPERTY NAME="unalignedCloseBrackets" VALUE=")" />
27 <PROPERTY NAME="unindentNextLines" VALUE="^\s*(pass|else\s*:|elif\s.*:|except(\s.*)?:|finally\s*:)\s*(#.*)?$" />
28 <PROPERTY NAME="unindentThisLine" VALUE="^\s*(else|elif\s.*|except(\s.*)?|finally)\s*:\s*(#.*)?" />
29 <PROPERTY NAME="lineComment" VALUE="#" />
30 <PROPERTY NAME="electricKeys" VALUE=":" />
31 <PROPERTY NAME="ignoreWhitespace" VALUE="false" />
33 <RULES IGNORE_CASE="FALSE" HIGHLIGHT_DIGITS="TRUE">
35 <EOL_SPAN TYPE="COMMENT1">#</EOL_SPAN>
38 <SPAN_REGEXP HASH_CHAR="@" MATCH_TYPE="KEYWORD4" DELEGATE="python::MAIN">
39 <BEGIN>@\w+(?:\.\w+)*\(</BEGIN>
42 <MARK_FOLLOWING TYPE="KEYWORD4">@</MARK_FOLLOWING>
44 <!-- Triple-quotes -->
45 <SPAN TYPE="LITERAL2" DELEGATE="LITERAL_TWO">
50 <SPAN TYPE="LITERAL2" DELEGATE="LITERAL_TWO">
55 <!-- Standard literals -->
56 <SPAN TYPE="LITERAL1" DELEGATE="LITERAL_ONE">
60 <SPAN TYPE="LITERAL1" DELEGATE="LITERAL_ONE">
65 <SEQ TYPE="OPERATOR">=</SEQ>
66 <SEQ TYPE="OPERATOR">!</SEQ>
67 <SEQ TYPE="OPERATOR">>=</SEQ>
68 <SEQ TYPE="OPERATOR"><=</SEQ>
69 <SEQ TYPE="OPERATOR">+</SEQ>
70 <SEQ TYPE="OPERATOR">-</SEQ>
71 <SEQ TYPE="OPERATOR">/</SEQ>
72 <SEQ TYPE="OPERATOR">*</SEQ>
73 <SEQ TYPE="OPERATOR">></SEQ>
74 <SEQ TYPE="OPERATOR"><</SEQ>
75 <SEQ TYPE="OPERATOR">%</SEQ>
76 <SEQ TYPE="OPERATOR">&</SEQ>
77 <SEQ TYPE="OPERATOR">|</SEQ>
78 <SEQ TYPE="OPERATOR">^</SEQ>
79 <SEQ TYPE="OPERATOR">~</SEQ>
80 <SEQ TYPE="KEYWORD1">:</SEQ>
82 <MARK_PREVIOUS TYPE="FUNCTION"
83 MATCH_TYPE="OPERATOR">(</MARK_PREVIOUS>
84 <SEQ TYPE="OPERATOR">)</SEQ>
87 <!-- Reserved Words -->
88 <KEYWORD1>and</KEYWORD1>
89 <KEYWORD1>as</KEYWORD1>
90 <KEYWORD1>assert</KEYWORD1>
91 <KEYWORD1>break</KEYWORD1>
92 <KEYWORD1>class</KEYWORD1>
93 <KEYWORD1>continue</KEYWORD1>
94 <KEYWORD1>def</KEYWORD1>
95 <KEYWORD1>del</KEYWORD1>
96 <KEYWORD1>elif</KEYWORD1>
97 <KEYWORD1>else</KEYWORD1>
98 <KEYWORD1>except</KEYWORD1>
99 <KEYWORD1>exec</KEYWORD1>
100 <KEYWORD1>finally</KEYWORD1>
101 <KEYWORD1>for</KEYWORD1>
102 <KEYWORD1>from</KEYWORD1>
103 <KEYWORD1>global</KEYWORD1>
104 <KEYWORD1>if</KEYWORD1>
105 <KEYWORD1>import</KEYWORD1>
106 <KEYWORD1>in</KEYWORD1>
107 <KEYWORD1>is</KEYWORD1>
108 <KEYWORD1>lambda</KEYWORD1>
109 <KEYWORD1>not</KEYWORD1>
110 <KEYWORD1>or</KEYWORD1>
111 <KEYWORD1>pass</KEYWORD1>
112 <KEYWORD1>print</KEYWORD1>
113 <KEYWORD1>raise</KEYWORD1>
114 <KEYWORD1>return</KEYWORD1>
115 <KEYWORD1>reversed</KEYWORD1>
116 <KEYWORD1>sorted</KEYWORD1>
117 <KEYWORD1>try</KEYWORD1>
118 <KEYWORD1>while</KEYWORD1>
119 <KEYWORD1>with</KEYWORD1>
120 <KEYWORD1>yield</KEYWORD1>
121 <KEYWORD1>self</KEYWORD1>
124 <KEYWORD2>abs</KEYWORD2>
125 <KEYWORD2>all</KEYWORD2>
126 <KEYWORD2>any</KEYWORD2>
127 <KEYWORD2>apply</KEYWORD2>
128 <KEYWORD2>bool</KEYWORD2>
129 <KEYWORD2>buffer</KEYWORD2>
130 <KEYWORD2>callable</KEYWORD2>
131 <KEYWORD2>chr</KEYWORD2>
132 <KEYWORD2>classmethod</KEYWORD2>
133 <KEYWORD2>cmp</KEYWORD2>
134 <KEYWORD2>coerce</KEYWORD2>
135 <KEYWORD2>compile</KEYWORD2>
136 <KEYWORD2>complex</KEYWORD2>
137 <KEYWORD2>delattr</KEYWORD2>
138 <KEYWORD2>dict</KEYWORD2>
139 <KEYWORD2>dir</KEYWORD2>
140 <KEYWORD2>divmod</KEYWORD2>
141 <KEYWORD2>enumerate</KEYWORD2>
142 <KEYWORD2>eval</KEYWORD2>
143 <KEYWORD2>execfile</KEYWORD2>
144 <KEYWORD2>file</KEYWORD2>
145 <KEYWORD2>filter</KEYWORD2>
146 <KEYWORD2>float</KEYWORD2>
147 <KEYWORD2>frozenset</KEYWORD2>
148 <KEYWORD2>getattr</KEYWORD2>
149 <KEYWORD2>globals</KEYWORD2>
150 <KEYWORD2>hasattr</KEYWORD2>
151 <KEYWORD2>hash</KEYWORD2>
152 <KEYWORD2>hex</KEYWORD2>
153 <KEYWORD2>id</KEYWORD2>
154 <KEYWORD2>input</KEYWORD2>
155 <KEYWORD2>int</KEYWORD2>
156 <KEYWORD2>intern</KEYWORD2>
157 <KEYWORD2>isinstance</KEYWORD2>
158 <KEYWORD2>issubclass</KEYWORD2>
159 <KEYWORD2>iter</KEYWORD2>
160 <KEYWORD2>len</KEYWORD2>
161 <KEYWORD2>list</KEYWORD2>
162 <KEYWORD2>locals</KEYWORD2>
163 <KEYWORD2>long</KEYWORD2>
164 <KEYWORD2>map</KEYWORD2>
165 <KEYWORD2>max</KEYWORD2>
166 <KEYWORD2>min</KEYWORD2>
167 <KEYWORD2>object</KEYWORD2>
168 <KEYWORD2>oct</KEYWORD2>
169 <KEYWORD2>open</KEYWORD2>
170 <KEYWORD2>ord</KEYWORD2>
171 <KEYWORD2>pow</KEYWORD2>
172 <KEYWORD2>property</KEYWORD2>
173 <KEYWORD2>range</KEYWORD2>
174 <KEYWORD2>raw_input</KEYWORD2>
175 <KEYWORD2>reduce</KEYWORD2>
176 <KEYWORD2>reload</KEYWORD2>
177 <KEYWORD2>repr</KEYWORD2>
178 <KEYWORD2>round</KEYWORD2>
179 <KEYWORD2>set</KEYWORD2>
180 <KEYWORD2>setattr</KEYWORD2>
181 <KEYWORD2>slice</KEYWORD2>
182 <KEYWORD2>staticmethod</KEYWORD2>
183 <KEYWORD2>str</KEYWORD2>
184 <KEYWORD2>sum</KEYWORD2>
185 <KEYWORD2>super</KEYWORD2>
186 <KEYWORD2>tuple</KEYWORD2>
187 <KEYWORD2>type</KEYWORD2>
188 <KEYWORD2>unichr</KEYWORD2>
189 <KEYWORD2>unicode</KEYWORD2>
190 <KEYWORD2>vars</KEYWORD2>
191 <KEYWORD2>xrange</KEYWORD2>
192 <KEYWORD2>zip</KEYWORD2>
195 <KEYWORD3>ArithmeticError</KEYWORD3>
196 <KEYWORD3>AssertionError</KEYWORD3>
197 <KEYWORD3>AttributeError</KEYWORD3>
198 <KEYWORD3>DeprecationWarning</KEYWORD3>
199 <KEYWORD3>EOFError</KEYWORD3>
200 <KEYWORD3>EnvironmentError</KEYWORD3>
201 <KEYWORD3>Exception</KEYWORD3>
202 <KEYWORD3>FloatingPointError</KEYWORD3>
203 <KEYWORD3>IOError</KEYWORD3>
204 <KEYWORD3>ImportError</KEYWORD3>
205 <KEYWORD3>IndentationError</KEYWORD3>
206 <KEYWORD3>IndexError</KEYWORD3>
207 <KEYWORD3>KeyError</KEYWORD3>
208 <KEYWORD3>KeyboardInterrupt</KEYWORD3>
209 <KEYWORD3>LookupError</KEYWORD3>
210 <KEYWORD3>MemoryError</KEYWORD3>
211 <KEYWORD3>NameError</KEYWORD3>
212 <KEYWORD3>NotImplemented</KEYWORD3>
213 <KEYWORD3>NotImplementedError</KEYWORD3>
214 <KEYWORD3>OSError</KEYWORD3>
215 <KEYWORD3>OverflowError</KEYWORD3>
216 <KEYWORD3>OverflowWarning</KEYWORD3>
217 <KEYWORD3>ReferenceError</KEYWORD3>
218 <KEYWORD3>RuntimeError</KEYWORD3>
219 <KEYWORD3>RuntimeWarning</KEYWORD3>
220 <KEYWORD3>StandardError</KEYWORD3>
221 <KEYWORD3>StopIteration</KEYWORD3>
222 <KEYWORD3>SyntaxError</KEYWORD3>
223 <KEYWORD3>SyntaxWarning</KEYWORD3>
224 <KEYWORD3>SystemError</KEYWORD3>
225 <KEYWORD3>SystemExit</KEYWORD3>
226 <KEYWORD3>TabError</KEYWORD3>
227 <KEYWORD3>TypeError</KEYWORD3>
228 <KEYWORD3>UnboundLocalError</KEYWORD3>
229 <KEYWORD3>UnicodeError</KEYWORD3>
230 <KEYWORD3>UserWarning</KEYWORD3>
231 <KEYWORD3>ValueError</KEYWORD3>
232 <KEYWORD3>Warning</KEYWORD3>
233 <KEYWORD3>WindowsError</KEYWORD3>
234 <KEYWORD3>ZeroDivisionError</KEYWORD3>
236 <!-- types (from types module) -->
237 <KEYWORD3>BufferType</KEYWORD3>
238 <KEYWORD3>BuiltinFunctionType</KEYWORD3>
239 <KEYWORD3>BuiltinMethodType</KEYWORD3>
240 <KEYWORD3>ClassType</KEYWORD3>
241 <KEYWORD3>CodeType</KEYWORD3>
242 <KEYWORD3>ComplexType</KEYWORD3>
243 <KEYWORD3>DictProxyType</KEYWORD3>
244 <KEYWORD3>DictType</KEYWORD3>
245 <KEYWORD3>DictionaryType</KEYWORD3>
246 <KEYWORD3>EllipsisType</KEYWORD3>
247 <KEYWORD3>FileType</KEYWORD3>
248 <KEYWORD3>FloatType</KEYWORD3>
249 <KEYWORD3>FrameType</KEYWORD3>
250 <KEYWORD3>FunctionType</KEYWORD3>
251 <KEYWORD3>GeneratorType</KEYWORD3>
252 <KEYWORD3>InstanceType</KEYWORD3>
253 <KEYWORD3>IntType</KEYWORD3>
254 <KEYWORD3>LambdaType</KEYWORD3>
255 <KEYWORD3>ListType</KEYWORD3>
256 <KEYWORD3>LongType</KEYWORD3>
257 <KEYWORD3>MethodType</KEYWORD3>
258 <KEYWORD3>ModuleType</KEYWORD3>
259 <KEYWORD3>NoneType</KEYWORD3>
260 <KEYWORD3>ObjectType</KEYWORD3>
261 <KEYWORD3>SliceType</KEYWORD3>
262 <KEYWORD3>StringType</KEYWORD3>
263 <KEYWORD3>StringTypes</KEYWORD3>
264 <KEYWORD3>TracebackType</KEYWORD3>
265 <KEYWORD3>TupleType</KEYWORD3>
266 <KEYWORD3>TypeType</KEYWORD3>
267 <KEYWORD3>UnboundMethodType</KEYWORD3>
268 <KEYWORD3>UnicodeType</KEYWORD3>
269 <KEYWORD3>XRangeType</KEYWORD3>
271 <KEYWORD3>False</KEYWORD3>
272 <KEYWORD3>None</KEYWORD3>
273 <KEYWORD3>True</KEYWORD3>
275 <KEYWORD3>__abs__</KEYWORD3>
276 <KEYWORD3>__add__</KEYWORD3>
277 <KEYWORD3>__all__</KEYWORD3>
278 <KEYWORD3>__author__</KEYWORD3>
279 <KEYWORD3>__bases__</KEYWORD3>
280 <KEYWORD3>__builtins__</KEYWORD3>
281 <KEYWORD3>__call__</KEYWORD3>
282 <KEYWORD3>__class__</KEYWORD3>
283 <KEYWORD3>__cmp__</KEYWORD3>
284 <KEYWORD3>__coerce__</KEYWORD3>
285 <KEYWORD3>__contains__</KEYWORD3>
286 <KEYWORD3>__debug__</KEYWORD3>
287 <KEYWORD3>__del__</KEYWORD3>
288 <KEYWORD3>__delattr__</KEYWORD3>
289 <KEYWORD3>__delitem__</KEYWORD3>
290 <KEYWORD3>__delslice__</KEYWORD3>
291 <KEYWORD3>__dict__</KEYWORD3>
292 <KEYWORD3>__div__</KEYWORD3>
293 <KEYWORD3>__divmod__</KEYWORD3>
294 <KEYWORD3>__doc__</KEYWORD3>
295 <KEYWORD3>__docformat__</KEYWORD3>
296 <KEYWORD3>__eq__</KEYWORD3>
297 <KEYWORD3>__file__</KEYWORD3>
298 <KEYWORD3>__float__</KEYWORD3>
299 <KEYWORD3>__floordiv__</KEYWORD3>
300 <KEYWORD3>__future__</KEYWORD3>
301 <KEYWORD3>__ge__</KEYWORD3>
302 <KEYWORD3>__getattr__</KEYWORD3>
303 <KEYWORD3>__getattribute__</KEYWORD3>
304 <KEYWORD3>__getitem__</KEYWORD3>
305 <KEYWORD3>__getslice__</KEYWORD3>
306 <KEYWORD3>__gt__</KEYWORD3>
307 <KEYWORD3>__hash__</KEYWORD3>
308 <KEYWORD3>__hex__</KEYWORD3>
309 <KEYWORD3>__iadd__</KEYWORD3>
310 <KEYWORD3>__import__</KEYWORD3>
311 <KEYWORD3>__imul__</KEYWORD3>
312 <KEYWORD3>__init__</KEYWORD3>
313 <KEYWORD3>__int__</KEYWORD3>
314 <KEYWORD3>__invert__</KEYWORD3>
315 <KEYWORD3>__iter__</KEYWORD3>
316 <KEYWORD3>__le__</KEYWORD3>
317 <KEYWORD3>__len__</KEYWORD3>
318 <KEYWORD3>__long__</KEYWORD3>
319 <KEYWORD3>__lshift__</KEYWORD3>
320 <KEYWORD3>__lt__</KEYWORD3>
321 <KEYWORD3>__members__</KEYWORD3>
322 <KEYWORD3>__metaclass__</KEYWORD3>
323 <KEYWORD3>__mod__</KEYWORD3>
324 <KEYWORD3>__mro__</KEYWORD3>
325 <KEYWORD3>__mul__</KEYWORD3>
326 <KEYWORD3>__name__</KEYWORD3>
327 <KEYWORD3>__ne__</KEYWORD3>
328 <KEYWORD3>__neg__</KEYWORD3>
329 <KEYWORD3>__new__</KEYWORD3>
330 <KEYWORD3>__nonzero__</KEYWORD3>
331 <KEYWORD3>__oct__</KEYWORD3>
332 <KEYWORD3>__or__</KEYWORD3>
333 <KEYWORD3>__path__</KEYWORD3>
334 <KEYWORD3>__pos__</KEYWORD3>
335 <KEYWORD3>__pow__</KEYWORD3>
336 <KEYWORD3>__radd__</KEYWORD3>
337 <KEYWORD3>__rdiv__</KEYWORD3>
338 <KEYWORD3>__rdivmod__</KEYWORD3>
339 <KEYWORD3>__reduce__</KEYWORD3>
340 <KEYWORD3>__repr__</KEYWORD3>
341 <KEYWORD3>__rfloordiv__</KEYWORD3>
342 <KEYWORD3>__rlshift__</KEYWORD3>
343 <KEYWORD3>__rmod__</KEYWORD3>
344 <KEYWORD3>__rmul__</KEYWORD3>
345 <KEYWORD3>__ror__</KEYWORD3>
346 <KEYWORD3>__rpow__</KEYWORD3>
347 <KEYWORD3>__rrshift__</KEYWORD3>
348 <KEYWORD3>__rsub__</KEYWORD3>
349 <KEYWORD3>__rtruediv__</KEYWORD3>
350 <KEYWORD3>__rxor__</KEYWORD3>
351 <KEYWORD3>__setattr__</KEYWORD3>
352 <KEYWORD3>__setitem__</KEYWORD3>
353 <KEYWORD3>__setslice__</KEYWORD3>
354 <KEYWORD3>__self__</KEYWORD3>
355 <KEYWORD3>__slots__</KEYWORD3>
356 <KEYWORD3>__str__</KEYWORD3>
357 <KEYWORD3>__sub__</KEYWORD3>
358 <KEYWORD3>__truediv__</KEYWORD3>
359 <KEYWORD3>__version__</KEYWORD3>
360 <KEYWORD3>__xor__</KEYWORD3>
364 <!-- rulesets to syntax highlight string interpolation sequences -->
365 <RULES SET="LITERAL_ONE" DEFAULT="LITERAL1" ESCAPE="\">
366 <SEQ_REGEXP HASH_CHAR="%" TYPE="LITERAL4">%[.]?\d*[diouxXeEfFgGcrs]</SEQ_REGEXP>
367 <SEQ_REGEXP HASH_CHAR="%(" TYPE="LITERAL4">%\([^)]+\)[+ -]?\d*[diouxXeEfFgGcrs]</SEQ_REGEXP>
369 <!-- triple-quoted strings has its own, since it's LITERAL2 by default -->
370 <RULES SET="LITERAL_TWO" DEFAULT="LITERAL2" ESCAPE="\">
371 <SEQ_REGEXP HASH_CHAR="%" TYPE="LITERAL4">%\d*[diouxXeEfFgGcrs]</SEQ_REGEXP>
372 <SEQ_REGEXP HASH_CHAR="%(" TYPE="LITERAL4">%\([^)]+\)[+ -]?\d*[diouxXeEfFgGcrs]</SEQ_REGEXP>
373 <SPAN TYPE="LITERAL3">
377 <SPAN TYPE="LITERAL3">
381 <SPAN TYPE="LITERAL3">
385 <SPAN TYPE="LITERAL3">
389 <SPAN TYPE="LITERAL3">
394 <EOL_SPAN AT_WHITESPACE_END="TRUE" DELEGATE="python::MAIN" TYPE="LITERAL3">>>></EOL_SPAN>
395 <EOL_SPAN AT_WHITESPACE_END="TRUE" DELEGATE="python::MAIN" TYPE="LITERAL3">...</EOL_SPAN>
397 <EOL_SPAN AT_WHITESPACE_END="TRUE" TYPE="LITERAL3">>>></EOL_SPAN>
398 <EOL_SPAN AT_WHITESPACE_END="TRUE" TYPE="LITERAL3">...</EOL_SPAN>
399 <MARK_FOLLOWING TYPE="LITERAL3" AT_WHITESPACE_END="TRUE">@</MARK_FOLLOWING>