PageRenderTime 128ms CodeModel.GetById 114ms app.highlight 9ms RepoModel.GetById 1ms app.codeStats 0ms

/www/tags/NOV_07_2009/htdocs/ruby/ruby.xml

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