]> gitweb.factorcode.org Git - factor.git/blob - basis/xmode/modes/ruby.xml
2d29c2d13dfd6ed5451e6593d30884992793f720
[factor.git] / basis / xmode / modes / ruby.xml
1 <?xml version="1.0"?>\r
2 <!DOCTYPE MODE SYSTEM "xmode.dtd">\r
3 <!-- Ruby mode by Ian Maclean (Ruby edit mode v0.6.2) -->\r
4 <!-- tweakage by Chris Morris - clabs.org -->\r
5 <!-- further tweakage by Christophe Grandsire -->\r
6 <!-- further tweakage by Robert McKinnon 2004 -->\r
7 <!-- Major overhaul by Karl von Laudermann -->\r
8 <!-- recommended mode catalog entry:\r
9     <MODE NAME="ruby" FILE="ruby.xml" FILE_NAME_GLOB="*.{rb,rbw}" FIRST_LINE_GLOB="#!*/*ruby*" /> -->\r
10 <MODE>\r
11     <PROPS>\r
12         <PROPERTY NAME="indentOpenBrackets" VALUE=""/>\r
13         <PROPERTY NAME="indentCloseBrackets" VALUE="}"/>\r
14         <PROPERTY NAME="lineUpClosingBracket" VALUE="true"/>\r
15         <PROPERTY NAME="commentStart" VALUE="=begin"/>\r
16         <PROPERTY NAME="commentEnd" VALUE="=end"/>\r
17         <PROPERTY NAME="lineComment" VALUE="#"/>\r
18         <PROPERTY NAME="indentNextLines" VALUE="\s*((if\s+.*|elsif\s+.*|else\s*|do(\s*|\s+.*)|case\s+.*|when\s+.*|while\s+.*|for\s+.*|until\s+.*|loop\s+.*|def\s+.*|class\s+.*|module\s+.*|begin.*|unless\s+.*)*)"/>\r
19     </PROPS>\r
20     <RULES ESCAPE="\" IGNORE_CASE="FALSE" HIGHLIGHT_DIGITS="TRUE" DIGIT_RE="(0b[01]([01_]*[01])?)|(0x[\p{XDigit}]([\p{XDigit}_]*[\p{XDigit}])?)|(0([0-7_]*[0-7])?)|(0d[0-9]([0-9_]*[0-9])?)|([1-9]([0-9_]*[0-9])?)|([0-9]([0-9_]*[0-9])?[Ee]([0-9]([0-9_]*[0-9])?)?)">\r
21         <!--       ^ Binary literal    | ^ Hex literal                               | ^ Octal literal  | ^ "0d" Style Dec lit   | ^ Normal Dec literal | ^ Float literal w/out dec point, with exp. -->\r
22 \r
23         <!-- Ruby comment (Inline Documentation ) -->\r
24         <SPAN TYPE="COMMENT2">\r
25             <BEGIN>=begin</BEGIN>\r
26             <END>=end</END>\r
27         </SPAN>\r
28 \r
29         <!-- Class and instance vars -->\r
30         <MARK_FOLLOWING TYPE="KEYWORD4">@</MARK_FOLLOWING>\r
31 \r
32                 <!-- Perl-style regexps - from perl.xml -->\r
33                 <SEQ_REGEXP TYPE="MARKUP" HASH_CHAR="/" AT_WORD_START="TRUE"\r
34                 >/[^\p{Blank}]*?/</SEQ_REGEXP>\r
35 \r
36         <!-- String literals -->\r
37 \r
38         <SPAN TYPE="LITERAL1" DELEGATE="doubleQuoteLiteral">\r
39             <BEGIN>"</BEGIN>\r
40             <END>"</END>\r
41         </SPAN>\r
42 \r
43         <SPAN TYPE="LITERAL1">\r
44             <BEGIN>'</BEGIN>\r
45             <END>'</END>\r
46         </SPAN>\r
47 \r
48         <!-- %Q(Hello world) %(Hello world)-->\r
49         <SPAN_REGEXP HASH_CHAR="%" TYPE="LITERAL1" DELEGATE="doubleQuoteLiteral">\r
50             <BEGIN>%Q?\(</BEGIN>\r
51             <END>)</END>\r
52         </SPAN_REGEXP>\r
53 \r
54         <!-- %q(Hello world) -->\r
55         <SPAN TYPE="LITERAL1">\r
56             <BEGIN>%q(</BEGIN>\r
57             <END>)</END>\r
58         </SPAN>\r
59 \r
60         <!-- %Q{Hello world} %{Hello world} -->\r
61         <SPAN_REGEXP HASH_CHAR="%" TYPE="LITERAL1" DELEGATE="doubleQuoteLiteral">\r
62             <BEGIN>%Q?\{</BEGIN>\r
63             <END>}</END>\r
64         </SPAN_REGEXP>\r
65 \r
66         <!-- %q{Hello world} -->\r
67         <SPAN TYPE="LITERAL1">\r
68             <BEGIN>%q{</BEGIN>\r
69             <END>}</END>\r
70         </SPAN>\r
71 \r
72         <!-- %Q[Hello world] %[Hello world] -->\r
73         <SPAN_REGEXP HASH_CHAR="%" TYPE="LITERAL1" DELEGATE="doubleQuoteLiteral">\r
74             <BEGIN>%Q?\[</BEGIN>\r
75             <END>]</END>\r
76         </SPAN_REGEXP>\r
77 \r
78         <!-- %q[Hello world] -->\r
79         <SPAN TYPE="LITERAL1">\r
80             <BEGIN>%q[</BEGIN>\r
81             <END>]</END>\r
82         </SPAN>\r
83 \r
84         <!-- %Q<Hello world> %<Hello world> -->\r
85         <SPAN_REGEXP HASH_CHAR="%" TYPE="LITERAL1" DELEGATE="doubleQuoteLiteral">\r
86             <BEGIN>%Q?&lt;</BEGIN>\r
87             <END>&gt;</END>\r
88         </SPAN_REGEXP>\r
89 \r
90         <!-- %q<Hello world> -->\r
91         <SPAN TYPE="LITERAL1">\r
92             <BEGIN>%q&lt;</BEGIN>\r
93             <END>&gt;</END>\r
94         </SPAN>\r
95 \r
96         <!-- I made the next three forms as three instead of two, because the\r
97          first two actually support whitespace as a delimiter, and the third\r
98          one doesn't. -->\r
99         <!-- %Q$Hello world$ -->\r
100         <SPAN_REGEXP HASH_CHAR="%Q" TYPE="LITERAL1" DELEGATE="doubleQuoteLiteral">\r
101             <BEGIN>%Q([^\p{Alnum}])</BEGIN>\r
102             <END>$1</END>\r
103         </SPAN_REGEXP>\r
104 \r
105         <!-- %q$Hello world$ -->\r
106         <SPAN_REGEXP HASH_CHAR="%q" TYPE="LITERAL1">\r
107             <BEGIN>%q([^\p{Alnum}])</BEGIN>\r
108             <END>$1</END>\r
109         </SPAN_REGEXP>\r
110 \r
111         <!-- %$Hello world$ -->\r
112         <SPAN_REGEXP HASH_CHAR="%" TYPE="LITERAL1" DELEGATE="doubleQuoteLiteral">\r
113             <BEGIN>%([^\p{Alnum}\p{Space}])</BEGIN>\r
114             <END>$1</END>\r
115         </SPAN_REGEXP>\r
116 \r
117         <!-- %W(Array of strings) -->\r
118         <SPAN TYPE="LITERAL1" DELEGATE="doubleQuoteLiteral">\r
119             <BEGIN>%W(</BEGIN>\r
120             <END>)</END>\r
121         </SPAN>\r
122 \r
123         <!-- %w(Array of strings) -->\r
124         <SPAN TYPE="LITERAL1">\r
125             <BEGIN>%w(</BEGIN>\r
126             <END>)</END>\r
127         </SPAN>\r
128 \r
129         <!-- %W{Array of strings} -->\r
130         <SPAN TYPE="LITERAL1" DELEGATE="doubleQuoteLiteral">\r
131             <BEGIN>%W{</BEGIN>\r
132             <END>}</END>\r
133         </SPAN>\r
134 \r
135         <!-- %w{Array of strings} -->\r
136         <SPAN TYPE="LITERAL1">\r
137             <BEGIN>%w{</BEGIN>\r
138             <END>}</END>\r
139         </SPAN>\r
140 \r
141         <!-- %W[Array of strings] -->\r
142         <SPAN TYPE="LITERAL1" DELEGATE="doubleQuoteLiteral">\r
143             <BEGIN>%W[</BEGIN>\r
144             <END>]</END>\r
145         </SPAN>\r
146 \r
147         <!-- %w[Array of strings] -->\r
148         <SPAN TYPE="LITERAL1">\r
149             <BEGIN>%w[</BEGIN>\r
150             <END>]</END>\r
151         </SPAN>\r
152 \r
153         <!-- %W<Array of strings>  -->\r
154         <SPAN TYPE="LITERAL1" DELEGATE="doubleQuoteLiteral">\r
155             <BEGIN>%W&lt;</BEGIN>\r
156             <END>&gt;</END>\r
157         </SPAN>\r
158 \r
159         <!-- %w<Array of strings> -->\r
160         <SPAN TYPE="LITERAL1">\r
161             <BEGIN>%w&lt;</BEGIN>\r
162             <END>&gt;</END>\r
163         </SPAN>\r
164 \r
165         <!-- %W$Array of strings$ -->\r
166         <SPAN_REGEXP HASH_CHAR="%W" TYPE="LITERAL1" DELEGATE="doubleQuoteLiteral">\r
167             <BEGIN>%W([^\p{Alnum}\p{Space}])</BEGIN>\r
168             <END>$1</END>\r
169         </SPAN_REGEXP>\r
170 \r
171         <!-- %w@Array of strings@ -->\r
172         <SPAN_REGEXP HASH_CHAR="%w" TYPE="LITERAL1">\r
173             <BEGIN>%w([^\p{Alnum}\p{Space}])</BEGIN>\r
174             <END>$1</END>\r
175         </SPAN_REGEXP>\r
176 \r
177         <!-- Here documents <<"FOO" <<-"FOO" -->\r
178         <!-- Unfortunately, in a SPAN_REGEXP element only the <BEGIN> tag takes\r
179          a regex, not the <END> tag. So an instance of FOO anywhere in the here\r
180          document will terminate highlighting; I couldn't make it smarter. -->\r
181         <SPAN_REGEXP HASH_CHAR="&lt;&lt;" TYPE="LITERAL1" DELEGATE="doubleQuoteLiteral">\r
182             <BEGIN>&lt;&lt;-?"([\p{Graph}]+)"</BEGIN>\r
183             <END>$1</END>\r
184         </SPAN_REGEXP>\r
185 \r
186         <!-- Here documents <<'FOO' <<-'FOO' -->\r
187         <!-- Unfortunately, in a SPAN_REGEXP element only the <BEGIN> tag takes\r
188          a regex, not the <END> tag. So an instance of FOO anywhere in the here\r
189          document will terminate highlighting; I couldn't make it smarter. -->\r
190         <SPAN_REGEXP HASH_CHAR="&lt;&lt;" TYPE="LITERAL1">\r
191             <BEGIN>&lt;&lt;-?'([\p{Graph}]+)'</BEGIN>\r
192             <END>$1</END>\r
193         </SPAN_REGEXP>\r
194 \r
195         <!-- Here documents <<FOO <<-FOO -->\r
196         <!-- Unfortunately, in a SPAN_REGEXP element only the <BEGIN> tag takes\r
197          a regex, not the <END> tag. So an instance of FOO anywhere in the here\r
198          document will terminate highlighting; I couldn't make it smarter. -->\r
199         <SPAN_REGEXP HASH_CHAR="&lt;&lt;" TYPE="LITERAL1" DELEGATE="doubleQuoteLiteral">\r
200             <BEGIN>&lt;&lt;-?([A-Za-z_]+)</BEGIN>\r
201             <END>$1</END>\r
202         </SPAN_REGEXP>\r
203 \r
204         <!-- Shell command strings -->\r
205 \r
206         <!-- `echo foo` -->\r
207         <SPAN TYPE="LITERAL2" DELEGATE="BackquoteLiteral">\r
208             <BEGIN>`</BEGIN>\r
209             <END>`</END>\r
210         </SPAN>\r
211 \r
212         <!-- %x(echo foo) -->\r
213         <SPAN TYPE="LITERAL2" DELEGATE="BackquoteLiteral">\r
214             <BEGIN>%x(</BEGIN>\r
215             <END>)</END>\r
216         </SPAN>\r
217 \r
218         <!-- %x{echo foo} -->\r
219         <SPAN TYPE="LITERAL2" DELEGATE="BackquoteLiteral">\r
220             <BEGIN>%x{</BEGIN>\r
221             <END>}</END>\r
222         </SPAN>\r
223 \r
224         <!-- %x[echo foo] -->\r
225         <SPAN TYPE="LITERAL2" DELEGATE="BackquoteLiteral">\r
226             <BEGIN>%x[</BEGIN>\r
227             <END>]</END>\r
228         </SPAN>\r
229 \r
230         <!-- %x<echo foo> -->\r
231         <SPAN TYPE="LITERAL2" DELEGATE="BackquoteLiteral">\r
232             <BEGIN>%x&lt;</BEGIN>\r
233             <END>&gt;</END>\r
234         </SPAN>\r
235 \r
236         <!-- %x$echo foo$ -->\r
237         <SPAN_REGEXP HASH_CHAR="%x" TYPE="LITERAL2" DELEGATE="BackquoteLiteral">\r
238             <BEGIN>%x([^\p{Alnum}\p{Space}])</BEGIN>\r
239             <END>$1</END>\r
240         </SPAN_REGEXP>\r
241 \r
242         <!-- Regular expressions   -->\r
243 \r
244         <!-- /regexp?/i -->\r
245         <!-- This doesn't really work well, because it can't distinguish a regexp\r
246          from multiple instances of the "/" division operator on the same line. -->\r
247         <!-- <SEQ_REGEXP HASH_CHAR="/" AT_WORD_START="TRUE"\r
248             TYPE="LITERAL3">/[^/]+/[iomx]*</SEQ_REGEXP> -->\r
249 \r
250         <!-- %r(regexp?) -->\r
251         <SPAN TYPE="LITERAL3" DELEGATE="RegexpLiteral">\r
252             <BEGIN>%r(</BEGIN>\r
253             <END>)</END>\r
254         </SPAN>\r
255 \r
256         <!-- %r{regexp?} -->\r
257         <SPAN TYPE="LITERAL3" DELEGATE="RegexpLiteral">\r
258             <BEGIN>%r{</BEGIN>\r
259             <END>}</END>\r
260         </SPAN>\r
261 \r
262         <!-- %r[regexp?] -->\r
263         <SPAN TYPE="LITERAL3" DELEGATE="RegexpLiteral">\r
264             <BEGIN>%r[</BEGIN>\r
265             <END>]</END>\r
266         </SPAN>\r
267 \r
268         <!-- %r<regexp?> -->\r
269         <SPAN TYPE="LITERAL3" DELEGATE="RegexpLiteral">\r
270             <BEGIN>%r&lt;</BEGIN>\r
271             <END>&gt;</END>\r
272         </SPAN>\r
273 \r
274         <!-- %r$regexp?$ -->\r
275         <SPAN_REGEXP HASH_CHAR="%r" TYPE="LITERAL3" DELEGATE="RegexpLiteral">\r
276             <BEGIN>%r([^\p{Alnum}\p{Space}])</BEGIN>\r
277             <END>$1</END>\r
278         </SPAN_REGEXP>\r
279 \r
280         <!-- (/regexp/) -->\r
281         <SPAN DELEGATE="RegexpLiteral" MATCH_TYPE="OPERATOR" TYPE="LITERAL3">\r
282             <BEGIN>(/</BEGIN>\r
283             <END>/</END>\r
284         </SPAN>\r
285 \r
286         <!-- Nested code block -->\r
287         <!-- I included this just because it can appear in a "/" delimited\r
288         regular expression, handling of which is commented out above. So this\r
289         would otherwise be colored as a comment. -->\r
290         <SPAN TYPE="OPERATOR" DELEGATE="MAIN">\r
291             <BEGIN>#{</BEGIN>\r
292             <END>}</END>\r
293         </SPAN>\r
294 \r
295         <!-- Std Comment -->\r
296         <EOL_SPAN TYPE="COMMENT1">#</EOL_SPAN>\r
297 \r
298         <!-- Predefined global variables -->\r
299         <SEQ_REGEXP HASH_CHAR="$-" TYPE="KEYWORD3" AT_WORD_START="TRUE">\$-[0adFiIKlpvw](?![\p{Alnum}_])</SEQ_REGEXP>\r
300 \r
301         <SEQ_REGEXP HASH_CHAR="$" TYPE="KEYWORD3" AT_WORD_START="TRUE">\$[0-9!@&amp;\+`'=~/\\,\.;&lt;&gt;_\*"\$\?\:F](?![\p{Alnum}_])</SEQ_REGEXP>\r
302 \r
303         <!-- Because of the ? char, this can't be done as a KEYWORD element -->\r
304         <SEQ TYPE="KEYWORD1" AT_WORD_START="TRUE">defined?</SEQ>\r
305 \r
306         <!-- Highlight "include" but not "include?" -->\r
307         <SEQ_REGEXP HASH_CHAR="include" TYPE="KEYWORD2" AT_WORD_START="TRUE">include(?![\p{Alnum}_\?])</SEQ_REGEXP>\r
308 \r
309         <!-- Not Operators but like the syntax highlight to match operators -->\r
310         <SEQ TYPE="OPERATOR">{</SEQ>\r
311         <SEQ TYPE="OPERATOR">}</SEQ>\r
312         <SEQ TYPE="OPERATOR">(</SEQ>\r
313         <SEQ TYPE="OPERATOR">)</SEQ>\r
314 \r
315         <!-- Arithmetic operators -->\r
316         <SEQ TYPE="OPERATOR">::</SEQ>\r
317         <SEQ TYPE="OPERATOR">===</SEQ>\r
318         <SEQ TYPE="OPERATOR">=</SEQ>\r
319         <SEQ TYPE="OPERATOR">&gt;&gt;</SEQ>\r
320         <SEQ TYPE="OPERATOR">&lt;&lt;</SEQ>\r
321         <SEQ TYPE="OPERATOR">&lt;=</SEQ>\r
322         <SEQ TYPE="OPERATOR">+</SEQ>\r
323         <SEQ TYPE="OPERATOR">-</SEQ>\r
324         <SEQ TYPE="OPERATOR">/</SEQ>\r
325 \r
326         <SEQ TYPE="OPERATOR">**</SEQ>\r
327         <SEQ TYPE="OPERATOR">*</SEQ>\r
328 \r
329         <SEQ TYPE="OPERATOR">%</SEQ>\r
330 \r
331         <!-- Logical Operators -->\r
332         <SEQ TYPE="OPERATOR">&amp;</SEQ>\r
333         <SEQ TYPE="OPERATOR">|</SEQ>\r
334         <SEQ TYPE="OPERATOR">!</SEQ>\r
335         <SEQ TYPE="OPERATOR">&gt;</SEQ>\r
336         <SEQ TYPE="OPERATOR">&lt;</SEQ>\r
337         <SEQ TYPE="OPERATOR">^</SEQ>\r
338         <SEQ TYPE="OPERATOR">~</SEQ>\r
339 \r
340         <!-- Range operators -->\r
341         <SEQ TYPE="OPERATOR">...</SEQ>\r
342         <SEQ TYPE="OPERATOR">..</SEQ>\r
343 \r
344         <SEQ TYPE="OPERATOR">]</SEQ>\r
345         <SEQ TYPE="OPERATOR">[</SEQ>\r
346         <SEQ TYPE="OPERATOR">?</SEQ>\r
347 \r
348         <!-- Symbols -->\r
349         <SEQ_REGEXP AT_WORD_START="TRUE" HASH_CHAR=":" TYPE="LABEL">:[\p{Alpha}_][\p{Alnum}_]*</SEQ_REGEXP>\r
350 \r
351         <SEQ TYPE="OPERATOR">:</SEQ>\r
352 \r
353         <KEYWORDS>\r
354             <KEYWORD1>BEGIN</KEYWORD1>\r
355             <KEYWORD1>END</KEYWORD1>\r
356             <KEYWORD1>alias</KEYWORD1>\r
357             <KEYWORD1>begin</KEYWORD1>\r
358             <KEYWORD1>break</KEYWORD1>\r
359             <KEYWORD1>case</KEYWORD1>\r
360             <KEYWORD1>class</KEYWORD1>\r
361             <KEYWORD1>def</KEYWORD1>\r
362             <KEYWORD1>do</KEYWORD1>\r
363             <KEYWORD1>else</KEYWORD1>\r
364             <KEYWORD1>elsif</KEYWORD1>\r
365             <KEYWORD1>end</KEYWORD1>\r
366             <KEYWORD1>ensure</KEYWORD1>\r
367             <KEYWORD1>for</KEYWORD1>\r
368             <KEYWORD1>if</KEYWORD1>\r
369             <KEYWORD1>in</KEYWORD1>\r
370             <KEYWORD1>module</KEYWORD1>\r
371             <KEYWORD1>next</KEYWORD1>\r
372             <KEYWORD1>redo</KEYWORD1>\r
373             <KEYWORD1>rescue</KEYWORD1>\r
374             <KEYWORD1>retry</KEYWORD1>\r
375             <KEYWORD1>return</KEYWORD1>\r
376             <KEYWORD1>then</KEYWORD1>\r
377             <KEYWORD1>undef</KEYWORD1>\r
378             <KEYWORD1>unless</KEYWORD1>\r
379             <KEYWORD1>until</KEYWORD1>\r
380             <KEYWORD1>when</KEYWORD1>\r
381             <KEYWORD1>while</KEYWORD1>\r
382             <KEYWORD1>yield</KEYWORD1>\r
383 \r
384             <KEYWORD2>load</KEYWORD2>\r
385             <KEYWORD2>require</KEYWORD2>\r
386 \r
387             <OPERATOR>and</OPERATOR>\r
388             <OPERATOR>not</OPERATOR>\r
389             <OPERATOR>or</OPERATOR>\r
390 \r
391             <KEYWORD3>false</KEYWORD3>\r
392             <KEYWORD3>nil</KEYWORD3>\r
393             <KEYWORD3>self</KEYWORD3>\r
394             <KEYWORD3>super</KEYWORD3>\r
395             <KEYWORD3>true</KEYWORD3>\r
396 \r
397             <KEYWORD3>$defout</KEYWORD3>\r
398             <KEYWORD3>$deferr</KEYWORD3>\r
399             <KEYWORD3>$stderr</KEYWORD3>\r
400             <KEYWORD3>$stdin</KEYWORD3>\r
401             <KEYWORD3>$stdout</KEYWORD3>\r
402             <KEYWORD3>$DEBUG</KEYWORD3>\r
403             <KEYWORD3>$FILENAME</KEYWORD3>\r
404             <KEYWORD3>$LOAD_PATH</KEYWORD3>\r
405             <KEYWORD3>$SAFE</KEYWORD3>\r
406             <KEYWORD3>$VERBOSE</KEYWORD3>\r
407             <KEYWORD3>__FILE__</KEYWORD3>\r
408             <KEYWORD3>__LINE__</KEYWORD3>\r
409             <KEYWORD3>ARGF</KEYWORD3>\r
410             <KEYWORD3>ARGV</KEYWORD3>\r
411             <KEYWORD3>ENV</KEYWORD3>\r
412             <KEYWORD3>DATA</KEYWORD3>\r
413             <KEYWORD3>FALSE</KEYWORD3>\r
414             <KEYWORD3>NIL</KEYWORD3>\r
415             <KEYWORD3>RUBY_PLATFORM</KEYWORD3>\r
416             <KEYWORD3>RUBY_RELEASE_DATE</KEYWORD3>\r
417             <KEYWORD3>RUBY_VERSION</KEYWORD3>\r
418             <KEYWORD3>STDERR</KEYWORD3>\r
419             <KEYWORD3>STDIN</KEYWORD3>\r
420             <KEYWORD3>STDOUT</KEYWORD3>\r
421             <KEYWORD3>SCRIPT_LINES__</KEYWORD3>\r
422             <KEYWORD3>TOPLEVEL_BINDING</KEYWORD3>\r
423             <KEYWORD3>TRUE</KEYWORD3>\r
424         </KEYWORDS>\r
425     </RULES>\r
426 \r
427     <!-- Delegate contents of #{} expression in double quotes to MAIN so that\r
428      it will be syntax highlighted as well -->\r
429     <RULES DEFAULT="LITERAL1" SET="doubleQuoteLiteral">\r
430         <SPAN DELEGATE="MAIN" TYPE="OPERATOR">\r
431             <BEGIN>#{</BEGIN>\r
432             <END>}</END>\r
433         </SPAN>\r
434         <MARK_FOLLOWING TYPE="KEYWORD4">#@@</MARK_FOLLOWING>\r
435         <MARK_FOLLOWING TYPE="KEYWORD4">#@</MARK_FOLLOWING>\r
436         <MARK_FOLLOWING TYPE="NULL">#$</MARK_FOLLOWING>\r
437     </RULES>\r
438 \r
439     <!-- Delegate contents of #{} expression in backquotes to MAIN so that\r
440      it will be syntax highlighted as well -->\r
441     <RULES DEFAULT="LITERAL2" SET="BackquoteLiteral">\r
442         <SPAN DELEGATE="MAIN" TYPE="OPERATOR">\r
443             <BEGIN>#{</BEGIN>\r
444             <END>}</END>\r
445         </SPAN>\r
446         <MARK_FOLLOWING TYPE="KEYWORD4">#@@</MARK_FOLLOWING>\r
447         <MARK_FOLLOWING TYPE="KEYWORD4">#@</MARK_FOLLOWING>\r
448         <MARK_FOLLOWING TYPE="NULL">#$</MARK_FOLLOWING>\r
449     </RULES>\r
450 \r
451     <!-- Delegate contents of #{} expression in a regexp to MAIN so that\r
452      it will be syntax highlighted as well -->\r
453     <RULES DEFAULT="LITERAL3" SET="RegexpLiteral">\r
454         <SPAN DELEGATE="MAIN" TYPE="OPERATOR">\r
455             <BEGIN>#{</BEGIN>\r
456             <END>}</END>\r
457         </SPAN>\r
458         <MARK_FOLLOWING TYPE="KEYWORD4">#@@</MARK_FOLLOWING>\r
459         <MARK_FOLLOWING TYPE="KEYWORD4">#@</MARK_FOLLOWING>\r
460         <MARK_FOLLOWING TYPE="NULL">#$</MARK_FOLLOWING>\r
461     </RULES>\r
462 </MODE>\r