]> gitweb.factorcode.org Git - factor.git/blob - basis/xmode/modes/drawj2d.xml
xmode.modes: updating with recent xmode files
[factor.git] / basis / xmode / modes / drawj2d.xml
1 <?xml version="1.0"?>
2
3 <!DOCTYPE MODE SYSTEM "xmode.dtd">
4
5 <!-- Drawj2d/Hcl mode, by A. Vontobel qwert2003@users.sourceforge.net
6     Built upon Tcl mode by Michael Jacobson. -->
7
8 <MODE>
9   <PROPS>
10     <PROPERTY NAME="indentOpenBrackets" VALUE="{" />
11     <PROPERTY NAME="indentCloseBrackets" VALUE="}" />
12     <PROPERTY NAME="lineUpClosingBracket" VALUE="true" />
13     <PROPERTY NAME="lineComment" VALUE="#" />
14   </PROPS>
15
16   <RULES IGNORE_CASE="FALSE" HIGHLIGHT_DIGITS="FALSE"
17     DIGIT_RE="0x\p{XDigit}+|\d+">
18
19     <!-- Continuation line. Processed before anything else by Tcl. (Does not work)-->
20     <EOL_SPAN_REGEXP TYPE="OPERATOR" HASH_CHAR="\">\\$</EOL_SPAN_REGEXP>
21
22     <!-- Comments after a ; command separator -->
23     <!-- Note: The ; isn't bolded as other operators. Why?-->
24     <EOL_SPAN_REGEXP TYPE="OPERATOR" HASH_CHAR=";" DELEGATE="TCL_COMMENT">;\s*(?=#)</EOL_SPAN_REGEXP>
25     <!-- Comments at the { opening of a block -->
26     <SPAN_REGEXP TYPE="OPERATOR" HASH_CHAR="{" DELEGATE="TCL_COMMENT">
27       <BEGIN>\{\s*(?=#)</BEGIN>
28       <END>}</END>
29     </SPAN_REGEXP>
30     <!-- Comments on a line of their own. -->
31     <EOL_SPAN TYPE="COMMENT1" AT_WHITESPACE_END="TRUE">#</EOL_SPAN>
32
33     <!-- Quoted strings -->
34     <SPAN TYPE="LITERAL1" NO_LINE_BREAK="FALSE" AT_WORD_START="TRUE" DELEGATE="TCL_STRING">
35       <BEGIN>"</BEGIN>
36       <END>"</END>
37     </SPAN>
38
39     <!-- Avoid colouring substituted variables that are homonyms of a keyword -->
40     <!-- Indexed array variable. Delegate to MAIN, as the index string is evaluated by Tcl.-->
41     <SPAN_REGEXP TYPE="NULL" HASH_CHAR="$" DELEGATE="MAIN">
42       <BEGIN>\$(\w|::)+\(</BEGIN>
43       <END>)</END>
44     </SPAN_REGEXP>
45     <!-- General scalar variable. Do not delegate, as the ${} block content is not evalutated by Tcl. -->
46     <SPAN TYPE="NULL">
47       <BEGIN>${</BEGIN>
48       <END>}</END>
49     </SPAN>
50     <!-- Plain scalar variable. -->
51     <SEQ_REGEXP TYPE="NULL" HASH_CHAR="$">\$(\w|::)+</SEQ_REGEXP>
52
53     <!-- Sub-block -->
54     <SPAN TYPE="OPERATOR" NO_LINE_BREAK="FALSE" AT_WORD_START="TRUE" DELEGATE="MAIN">
55       <BEGIN>{</BEGIN>
56       <END>}</END>
57     </SPAN>
58
59     <!-- Sub-commands to be substituted -->
60     <SPAN TYPE="OPERATOR" NO_LINE_BREAK="FALSE" DELEGATE="MAIN">
61       <BEGIN>[</BEGIN>
62       <END>]</END>
63     </SPAN>
64
65     <!-- Escaped characters -->
66     <SEQ TYPE="KEYWORD3">\a</SEQ>
67     <SEQ TYPE="KEYWORD3">\b</SEQ>
68     <SEQ TYPE="KEYWORD3">\f</SEQ>
69     <SEQ TYPE="KEYWORD3">\n</SEQ>
70     <SEQ TYPE="KEYWORD3">\r</SEQ>
71     <SEQ TYPE="KEYWORD3">\t</SEQ>
72     <SEQ TYPE="KEYWORD3">\v</SEQ>
73
74     <!-- Tcl syntax operators. -->
75     <!-- Note that "{}[]" are already caught above.-->
76     <!-- Delegate to main, as a new command begins after the ; -->
77     <SEQ TYPE="OPERATOR" DELEGATE="MAIN">;</SEQ>
78     <SEQ TYPE="NULL">::</SEQ>
79
80     <!-- Math expression operators -->
81     <SEQ TYPE="OPERATOR">=</SEQ>
82     <SEQ TYPE="OPERATOR">!</SEQ>
83     <SEQ TYPE="OPERATOR">&gt;=</SEQ>
84     <SEQ TYPE="OPERATOR">&lt;=</SEQ>
85     <SEQ TYPE="OPERATOR">+</SEQ>
86     <SEQ TYPE="OPERATOR">-</SEQ>
87     <SEQ TYPE="OPERATOR">/</SEQ>
88     <SEQ TYPE="OPERATOR">*</SEQ>
89     <SEQ TYPE="OPERATOR">&gt;</SEQ>
90     <SEQ TYPE="OPERATOR">&lt;</SEQ>
91     <SEQ TYPE="OPERATOR">%</SEQ>
92     <SEQ TYPE="OPERATOR">&amp;</SEQ>
93     <SEQ TYPE="OPERATOR">|</SEQ>
94     <SEQ TYPE="OPERATOR">^</SEQ>
95     <SEQ TYPE="OPERATOR">~</SEQ>
96
97     <KEYWORDS>
98       <!-- Tcl keywords, common with Hecl -->
99       <KEYWORD1>after</KEYWORD1>
100       <KEYWORD1>append</KEYWORD1>
101       <KEYWORD1>break</KEYWORD1>
102       <KEYWORD1>catch</KEYWORD1>
103       <KEYWORD1>close</KEYWORD1>
104       <KEYWORD1>continue</KEYWORD1>
105       <KEYWORD1>else</KEYWORD1>
106       <KEYWORD1>elseif</KEYWORD1>
107       <KEYWORD1>eval</KEYWORD1>
108       <KEYWORD1>exit</KEYWORD1>
109       <KEYWORD1>for</KEYWORD1>
110       <KEYWORD1>foreach</KEYWORD1>
111       <KEYWORD1>global</KEYWORD1>
112       <KEYWORD1>if</KEYWORD1>
113       <KEYWORD1>incr</KEYWORD1>
114       <KEYWORD1>join</KEYWORD1>
115       <KEYWORD1>lappend</KEYWORD1>
116       <KEYWORD1>lindex</KEYWORD1>
117       <KEYWORD1>list</KEYWORD1>
118       <KEYWORD1>llength</KEYWORD1>
119       <KEYWORD1>lrange</KEYWORD1>
120       <KEYWORD1>lset</KEYWORD1>
121       <KEYWORD1>open</KEYWORD1>
122       <KEYWORD1>proc</KEYWORD1>
123       <KEYWORD1>puts</KEYWORD1>
124       <KEYWORD1>read</KEYWORD1>
125       <KEYWORD1>rename</KEYWORD1>
126       <KEYWORD1>return</KEYWORD1>
127       <KEYWORD1>set</KEYWORD1>
128       <KEYWORD1>source</KEYWORD1>
129       <KEYWORD1>split</KEYWORD1>
130       <KEYWORD1>time</KEYWORD1>
131       <KEYWORD1>unset</KEYWORD1>
132       <KEYWORD1>while</KEYWORD1>
133       <!-- Hecl keywords-->
134       <KEYWORD1>alias</KEYWORD1>
135       <KEYWORD1>and</KEYWORD1>
136       <KEYWORD1>bgerror</KEYWORD1>
137       <KEYWORD1>classof</KEYWORD1>
138       <KEYWORD1>clock</KEYWORD1>
139       <KEYWORD1>copy</KEYWORD1>
140       <KEYWORD1>eq</KEYWORD1>
141       <KEYWORD1>false</KEYWORD1>
142       <KEYWORD1>file.readable</KEYWORD1>
143       <KEYWORD1>filter</KEYWORD1>
144       <KEYWORD1>hasclass</KEYWORD1>
145       <KEYWORD1>hasnext</KEYWORD1>
146       <KEYWORD1>hash</KEYWORD1>
147       <KEYWORD1>hclear</KEYWORD1>
148       <KEYWORD1>hcontains</KEYWORD1>
149       <KEYWORD1>hget</KEYWORD1>
150       <KEYWORD1>hkeys</KEYWORD1>
151       <KEYWORD1>hremove</KEYWORD1>
152       <KEYWORD1>hset</KEYWORD1>
153       <KEYWORD1>intro</KEYWORD1>
154       <KEYWORD1>linsert</KEYWORD1>
155       <KEYWORD1>llen</KEYWORD1>
156       <KEYWORD1>max</KEYWORD1>
157       <KEYWORD1>min</KEYWORD1>
158       <KEYWORD1>ne</KEYWORD1>
159       <KEYWORD1>not</KEYWORD1>
160       <KEYWORD1>or</KEYWORD1>
161       <KEYWORD1>readln</KEYWORD1>
162       <KEYWORD1>runtime.freememory</KEYWORD1>
163       <KEYWORD1>runtime.totalmemory</KEYWORD1>
164       <KEYWORD1>search</KEYWORD1>
165       <KEYWORD1>sort</KEYWORD1>
166       <KEYWORD1>strbytelen</KEYWORD1>
167       <KEYWORD1>strcmp</KEYWORD1>
168       <KEYWORD1>strfind</KEYWORD1>
169       <KEYWORD1>strindex</KEYWORD1>
170       <KEYWORD1>strlast</KEYWORD1>
171       <KEYWORD1>strlen</KEYWORD1>
172       <KEYWORD1>strlower</KEYWORD1>
173       <KEYWORD1>strrange</KEYWORD1>
174       <KEYWORD1>strrep</KEYWORD1>
175       <KEYWORD1>strreplace</KEYWORD1>
176       <KEYWORD1>strtrim</KEYWORD1>
177       <KEYWORD1>strtriml</KEYWORD1>
178       <KEYWORD1>strtrimr</KEYWORD1>
179       <KEYWORD1>strupper</KEYWORD1>
180       <KEYWORD1>system.gc</KEYWORD1>
181       <KEYWORD1>system.getproperty</KEYWORD1>
182       <KEYWORD1>system.hasproperty</KEYWORD1>
183       <KEYWORD1>thisinterp</KEYWORD1>
184       <KEYWORD1>throw</KEYWORD1>
185       <KEYWORD1>tnotify</KEYWORD1>
186       <KEYWORD1>true</KEYWORD1>
187       <KEYWORD1>twait</KEYWORD1>
188       <KEYWORD1>upeval</KEYWORD1>
189       
190       <!-- Hecl math keywords-->
191       <KEYWORD1>abs</KEYWORD1>
192       <KEYWORD1>acos</KEYWORD1>
193       <KEYWORD1>asin</KEYWORD1>
194       <KEYWORD1>atan</KEYWORD1>
195       <KEYWORD1>atan2</KEYWORD1>
196       <KEYWORD1>cbrt</KEYWORD1>
197       <KEYWORD1>ceil</KEYWORD1>
198       <KEYWORD1>cos</KEYWORD1>
199       <KEYWORD1>cosh</KEYWORD1>
200       <KEYWORD1>double</KEYWORD1>
201       <KEYWORD1>exp</KEYWORD1>
202       <KEYWORD1>expm1</KEYWORD1>
203       <KEYWORD1>float</KEYWORD1>
204       <KEYWORD1>floor</KEYWORD1>
205       <KEYWORD1>hypot</KEYWORD1>
206       <KEYWORD1>int</KEYWORD1>
207       <KEYWORD1>log</KEYWORD1>
208       <KEYWORD1>log10</KEYWORD1>
209       <KEYWORD1>log1p</KEYWORD1>
210       <KEYWORD1>long</KEYWORD1>
211       <KEYWORD1>pow</KEYWORD1>
212       <KEYWORD1>random</KEYWORD1>
213       <KEYWORD1>round</KEYWORD1>
214       <KEYWORD1>signum</KEYWORD1>
215       <KEYWORD1>sin</KEYWORD1>
216       <KEYWORD1>sinh</KEYWORD1>
217       <KEYWORD1>sqrt</KEYWORD1>
218       <KEYWORD1>tan</KEYWORD1>
219       <KEYWORD1>tanh</KEYWORD1>
220       <KEYWORD1>toDegrees</KEYWORD1>
221       <KEYWORD1>toRadians</KEYWORD1>
222       
223       <!-- Drawj2d keywords -->
224       <KEYWORD2>unitlength</KEYWORD2>
225       <KEYWORD2>forceunitlength</KEYWORD2>
226       <KEYWORD2>offset</KEYWORD2>
227       <KEYWORD2>here</KEYWORD2>
228       <KEYWORD2>r</KEYWORD2>
229       <KEYWORD2>mm</KEYWORD2>
230       <KEYWORD2>fu</KEYWORD2>
231       <KEYWORD2>kN</KEYWORD2>
232       <KEYWORD2>X</KEYWORD2>
233       <KEYWORD2>Y</KEYWORD2>
234       <KEYWORD2>FX</KEYWORD2>
235       <KEYWORD2>FY</KEYWORD2>
236       <KEYWORD2>XY</KEYWORD2>
237       <KEYWORD2>FXY</KEYWORD2>
238       
239       <KEYWORD2>pen</KEYWORD2>
240       <KEYWORD2>font</KEYWORD2>
241       <KEYWORD2>opacity</KEYWORD2>
242       <KEYWORD2>today</KEYWORD2>
243       <KEYWORD1>nf</KEYWORD1>
244       <KEYWORD1>expr</KEYWORD1>
245       <KEYWORD1>exprinput</KEYWORD1>
246       <KEYWORD1>assert</KEYWORD1>
247       
248       <KEYWORD2>moveto</KEYWORD2>
249       <KEYWORD2>m</KEYWORD2>
250       <KEYWORD2>movetox</KEYWORD2>
251       <KEYWORD2>mx</KEYWORD2>
252       <KEYWORD2>movetoy</KEYWORD2>
253       <KEYWORD2>my</KEYWORD2>
254       <KEYWORD2>moverel</KEYWORD2>
255       <KEYWORD2>mr</KEYWORD2>
256       <KEYWORD2>movepolar</KEYWORD2>
257       <KEYWORD2>mp</KEYWORD2>
258       <KEYWORD2>point</KEYWORD2>
259       <KEYWORD2>pt</KEYWORD2>
260       <KEYWORD2>dot</KEYWORD2>
261       <KEYWORD2>line</KEYWORD2>
262       <KEYWORD2>lineto</KEYWORD2>
263       <KEYWORD2>l</KEYWORD2>
264       <KEYWORD2>linetox</KEYWORD2>
265       <KEYWORD2>lx</KEYWORD2>
266       <KEYWORD2>linetoy</KEYWORD2>
267       <KEYWORD2>ly</KEYWORD2>
268       <KEYWORD2>linerel</KEYWORD2>
269       <KEYWORD2>lr</KEYWORD2>
270       <KEYWORD2>linepolar</KEYWORD2>
271       <KEYWORD2>lp</KEYWORD2>
272       <KEYWORD2>linemid</KEYWORD2>
273       <KEYWORD2>lm</KEYWORD2>
274       <KEYWORD2>arc</KEYWORD2>
275       <KEYWORD2>quadcurve</KEYWORD2>
276       <KEYWORD2>parabola</KEYWORD2>
277       <KEYWORD2>cubiccurve</KEYWORD2>
278       
279       <KEYWORD2>circle</KEYWORD2>
280       <KEYWORD2>fillcircle</KEYWORD2>
281       <KEYWORD2>ellipse</KEYWORD2>
282       <KEYWORD2>fillellipse</KEYWORD2>
283       <KEYWORD2>rectangle</KEYWORD2>
284       <KEYWORD2>rect</KEYWORD2>
285       <KEYWORD2>fillrectangle</KEYWORD2>
286       <KEYWORD2>fillrect</KEYWORD2>
287       <KEYWORD2>box</KEYWORD2>
288       <KEYWORD2>fillbox</KEYWORD2>
289       <KEYWORD2>rod</KEYWORD2>
290       <KEYWORD2>fillrod</KEYWORD2>
291       <KEYWORD2>polygon</KEYWORD2>
292       <KEYWORD2>fillpolygon</KEYWORD2>
293       <KEYWORD2>segment</KEYWORD2>
294       <KEYWORD2>fillsegment</KEYWORD2>
295       <KEYWORD2>sector</KEYWORD2>
296       <KEYWORD2>fillsector</KEYWORD2>
297       <KEYWORD2>image</KEYWORD2>
298       <KEYWORD2>dxf</KEYWORD2>
299       
300       <KEYWORD2>label</KEYWORD2>
301       <KEYWORD2>lb</KEYWORD2>
302       <KEYWORD2>texlabel</KEYWORD2>
303       <KEYWORD2>tlb</KEYWORD2>
304       <KEYWORD2>text</KEYWORD2>
305       <KEYWORD2>arrow</KEYWORD2>
306       <KEYWORD2>arrowto</KEYWORD2>
307       <KEYWORD2>arrows</KEYWORD2>
308       <KEYWORD2>arrowsto</KEYWORD2>
309       <KEYWORD2>arrowrel</KEYWORD2>
310       <KEYWORD2>arrowsrel</KEYWORD2>
311       <KEYWORD2>force</KEYWORD2>
312       <KEYWORD2>texforce</KEYWORD2>
313       <KEYWORD2>force2</KEYWORD2>
314       <KEYWORD2>texforce2</KEYWORD2>
315       <KEYWORD2>dimline</KEYWORD2>
316       <KEYWORD2>dimlineto</KEYWORD2>
317       <KEYWORD2>texdimline</KEYWORD2>
318       <KEYWORD2>texdimlineto</KEYWORD2>
319       <KEYWORD2>dimlinerel</KEYWORD2>
320       <KEYWORD2>texdimlinerel</KEYWORD2>
321       <KEYWORD2>dimangle</KEYWORD2>
322       <KEYWORD2>texdimangle</KEYWORD2>
323       
324       <KEYWORD2>endblock</KEYWORD2>
325       <KEYWORD2>block.rotate</KEYWORD2>
326       <KEYWORD2>block.flip</KEYWORD2>
327       <KEYWORD2>block.scale</KEYWORD2>
328       <KEYWORD2>block</KEYWORD2>
329       
330       <KEYWORD2>geom.vector</KEYWORD2>
331       <KEYWORD2>geom.v</KEYWORD2>
332       <KEYWORD2>geom.azimuth</KEYWORD2>
333       <KEYWORD2>geom.azi</KEYWORD2>
334       <KEYWORD2>geom.add</KEYWORD2>
335       <KEYWORD2>geom.subtract</KEYWORD2>
336       <KEYWORD2>geom.multiply</KEYWORD2>
337       <KEYWORD2>geom.divide</KEYWORD2>
338       <KEYWORD2>geom.half</KEYWORD2>
339       <KEYWORD2>geom.tox</KEYWORD2>
340       <KEYWORD2>tx</KEYWORD2>
341       <KEYWORD2>geom.toy</KEYWORD2>
342       <KEYWORD2>ty</KEYWORD2>
343       <KEYWORD2>geom.intersect</KEYWORD2>
344       <KEYWORD2>geom.area</KEYWORD2>
345       <KEYWORD2>geom.centroid</KEYWORD2>
346       <KEYWORD2>geom.intersectlinepath</KEYWORD2>
347       <KEYWORD2>geom.intersectcircles</KEYWORD2>
348       <KEYWORD2>geom.online</KEYWORD2>
349       <KEYWORD2>geom.angle</KEYWORD2>
350       <KEYWORD2>geom.anglerad</KEYWORD2>
351       <KEYWORD2>geom.crossproduct</KEYWORD2>
352       <KEYWORD2>geom.dotproduct</KEYWORD2>
353       <KEYWORD2>geom.rotate</KEYWORD2>
354       <KEYWORD2>geom.polar</KEYWORD2>
355       <KEYWORD2>geom.length</KEYWORD2>
356       <KEYWORD2>geom.abs</KEYWORD2>
357       <KEYWORD2>geom.norm</KEYWORD2>
358       <KEYWORD2>geom.parallel</KEYWORD2>
359       <KEYWORD2>geom.extend</KEYWORD2>
360       <KEYWORD2>geom.distance</KEYWORD2>
361       <KEYWORD2>geom.dist</KEYWORD2>
362       
363       <KEYWORD2>stat.add</KEYWORD2>
364       <KEYWORD2>stat.subtract</KEYWORD2>
365       <KEYWORD2>stat.multiply</KEYWORD2>
366       <KEYWORD2>stat.move</KEYWORD2>
367       <KEYWORD2>stat.move2</KEYWORD2>
368       <KEYWORD2>stat.actionline</KEYWORD2>
369       <KEYWORD2>stat.tip</KEYWORD2>
370       <KEYWORD2>stat.abs</KEYWORD2>
371       <KEYWORD2>stat.distance</KEYWORD2>
372       <KEYWORD2>stat.dist</KEYWORD2>
373       <KEYWORD2>stat.moment</KEYWORD2>
374       <KEYWORD2>stat.mequi</KEYWORD2>
375       <KEYWORD2>stat.equi</KEYWORD2>
376       <KEYWORD2>stat.fequi</KEYWORD2>
377
378       <!-- Global variables-->
379
380       <!-- Common arguments to Drawj2d -->
381       <KEYWORD3>black</KEYWORD3>
382       <KEYWORD3>blue</KEYWORD3>
383       <KEYWORD3>brown</KEYWORD3>
384       <KEYWORD3>cyan</KEYWORD3>
385       <KEYWORD3>darkgray</KEYWORD3>
386       <KEYWORD3>darkgreen</KEYWORD3>
387       <KEYWORD3>darkorange</KEYWORD3>
388       <KEYWORD3>gray</KEYWORD3>
389       <KEYWORD3>green</KEYWORD3>
390       <KEYWORD3>lightgray</KEYWORD3>
391       <KEYWORD3>magenta</KEYWORD3>
392       <KEYWORD3>orange</KEYWORD3>
393       <KEYWORD3>pink</KEYWORD3>
394       <KEYWORD3>purple</KEYWORD3>
395       <KEYWORD3>red</KEYWORD3>
396       <KEYWORD3>violet</KEYWORD3>
397       <KEYWORD3>white</KEYWORD3>
398       <KEYWORD3>yellow</KEYWORD3>
399       <KEYWORD3>dashed</KEYWORD3>
400       <KEYWORD3>dotted</KEYWORD3>
401       <KEYWORD3>dashdotted</KEYWORD3>
402       <KEYWORD3>solid</KEYWORD3>
403       <KEYWORD3>Serif</KEYWORD3>
404       <KEYWORD3>SansSerif</KEYWORD3>
405       <KEYWORD3>Monospaced</KEYWORD3>
406       <KEYWORD3>Tex</KEYWORD3>
407       <KEYWORD3>plain</KEYWORD3>
408       <KEYWORD3>bold</KEYWORD3>
409       <KEYWORD3>italic</KEYWORD3>
410       <KEYWORD3>left</KEYWORD3>
411       <KEYWORD3>justify</KEYWORD3>
412       <KEYWORD3>NE</KEYWORD3>
413       <KEYWORD3>E</KEYWORD3>
414       <KEYWORD3>SE</KEYWORD3>
415       <KEYWORD3>S</KEYWORD3>
416       <KEYWORD3>SW</KEYWORD3>
417       <KEYWORD3>W</KEYWORD3>
418       <KEYWORD3>NW</KEYWORD3>
419       <KEYWORD3>N</KEYWORD3>
420       <KEYWORD3>C</KEYWORD3>
421       <KEYWORD3>BW</KEYWORD3>
422       <KEYWORD3>BC</KEYWORD3>
423       <KEYWORD3>BL</KEYWORD3>
424       <KEYWORD3>BLC</KEYWORD3>
425     </KEYWORDS>
426   </RULES>
427
428   <RULES SET="TCL_COMMENT" DEFAULT="OPERATOR">
429     <!-- Allows catching blocks starting with a comment.
430         or comments following a ; -->
431     <SEQ_REGEXP TYPE="COMMENT1" HASH_CHAR="#" DELEGATE="MAIN">#.*</SEQ_REGEXP>
432   </RULES>
433
434   <RULES SET="TCL_STRING" DEFAULT="LITERAL1" ESCAPE="\">
435     <PROPS>
436       <PROPERTY NAME="indentOpenBrackets" VALUE="" />
437       <PROPERTY NAME="indentCloseBrackets" VALUE="" />
438     </PROPS>
439
440     <!-- Continuation line. Processed before anything else by Tcl.-->
441     <EOL_SPAN_REGEXP TYPE="OPERATOR" HASH_CHAR="\">\\$</EOL_SPAN_REGEXP>
442
443     <!-- Avoid colouring variables substituted inside strings  -->
444     <SPAN_REGEXP TYPE="NULL" HASH_CHAR="$" DELEGATE="MAIN">
445       <BEGIN>\$(\w|::)+\(</BEGIN>
446       <END>)</END>
447     </SPAN_REGEXP>
448     <SPAN_REGEXP TYPE="NULL" HASH_CHAR="$" DELEGATE="MAIN">
449       <BEGIN>\$\{</BEGIN>
450       <END>}</END>
451     </SPAN_REGEXP>
452     <SEQ_REGEXP TYPE="NULL" HASH_CHAR="$">\$(\w|::)+</SEQ_REGEXP>
453
454     <!-- Sub-commands to be substituted -->
455     <SPAN TYPE="OPERATOR" NO_LINE_BREAK="FALSE" DELEGATE="MAIN">
456       <BEGIN>[</BEGIN>
457       <END>]</END>
458     </SPAN>
459
460     <!-- Escaped characters -->
461     <SEQ TYPE="KEYWORD3">\a</SEQ>
462     <SEQ TYPE="KEYWORD3">\b</SEQ>
463     <SEQ TYPE="KEYWORD3">\f</SEQ>
464     <SEQ TYPE="KEYWORD3">\n</SEQ>
465     <SEQ TYPE="KEYWORD3">\r</SEQ>
466     <SEQ TYPE="KEYWORD3">\t</SEQ>
467     <SEQ TYPE="KEYWORD3">\v</SEQ>
468   </RULES>
469 </MODE>