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