1 <?xml version="1.0"?>
\r
2 <!DOCTYPE MODE SYSTEM "xmode.dtd">
\r
5 <MODE NAME="groovy" FILE="groovy.xml"
\r
6 FILE_NAME_GLOB="*.{groovy,grv}"/>
\r
11 <PROPERTY NAME="commentStart" VALUE="/*" />
\r
12 <PROPERTY NAME="commentEnd" VALUE="*/" />
\r
13 <PROPERTY NAME="lineComment" VALUE="//" />
\r
14 <PROPERTY NAME="indentOpenBrackets" VALUE="{" />
\r
15 <PROPERTY NAME="indentCloseBrackets" VALUE="}" />
\r
16 <PROPERTY NAME="indentNextLine"
\r
17 VALUE="\s*(((if|while)\s*\(|else\s*|else\s+if\s*\(|for\s*\(.*\))[^{;]*)" />
\r
20 <RULES ESCAPE="\" HIGHLIGHT_DIGITS="TRUE" IGNORE_CASE="FALSE">
\r
21 <!-- Silly comment -->
\r
22 <SEQ TYPE="COMMENT1">/**/</SEQ>
\r
24 <!-- Javadoc comment -->
\r
25 <SPAN TYPE="COMMENT3" DELEGATE="GROOVYDOC">
\r
30 <!-- Java comment (C style) -->
\r
31 <SPAN TYPE="COMMENT1">
\r
36 <SPAN TYPE="LITERAL1" DELEGATE="LITERAL">
\r
40 <SPAN TYPE="LITERAL1">
\r
46 <SPAN_REGEXP HASH_CHAR="<<<" TYPE="LITERAL1" DELEGATE="LITERAL">
\r
47 <BEGIN><![CDATA[<<<([\p{Alpha}_][\p{Alnum}_]*)\s*]]></BEGIN>
\r
51 <SEQ TYPE="OPERATOR">=~</SEQ>
\r
52 <SEQ TYPE="OPERATOR">=</SEQ>
\r
53 <SEQ TYPE="OPERATOR">|</SEQ>
\r
54 <SEQ TYPE="OPERATOR">!</SEQ>
\r
55 <SEQ TYPE="OPERATOR"><=></SEQ>
\r
56 <SEQ TYPE="OPERATOR">>=</SEQ>
\r
57 <SEQ TYPE="OPERATOR"><=</SEQ>
\r
58 <SEQ TYPE="OPERATOR">+</SEQ>
\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
64 <!-- workaround to stop "*" from being colorized
\r
65 in import statements. -->
\r
66 <SEQ TYPE="NULL">.*</SEQ>
\r
69 <EOL_SPAN TYPE="COMMENT1">//</EOL_SPAN>
\r
71 <!-- Function calls -->
\r
72 <MARK_PREVIOUS TYPE="FUNCTION" MATCH_TYPE="OPERATOR">(</MARK_PREVIOUS>
\r
73 <SEQ TYPE="OPERATOR">)</SEQ>
\r
76 <KEYWORD1>abstract</KEYWORD1>
\r
77 <KEYWORD1>break</KEYWORD1>
\r
78 <KEYWORD1>case</KEYWORD1>
\r
79 <KEYWORD1>catch</KEYWORD1>
\r
80 <KEYWORD1>continue</KEYWORD1>
\r
81 <KEYWORD1>default</KEYWORD1>
\r
82 <KEYWORD1>do</KEYWORD1>
\r
83 <KEYWORD1>else</KEYWORD1>
\r
84 <KEYWORD1>extends</KEYWORD1>
\r
85 <KEYWORD1>final</KEYWORD1>
\r
86 <KEYWORD1>finally</KEYWORD1>
\r
87 <KEYWORD1>for</KEYWORD1>
\r
88 <KEYWORD1>if</KEYWORD1>
\r
89 <KEYWORD1>implements</KEYWORD1>
\r
90 <KEYWORD1>instanceof</KEYWORD1>
\r
91 <KEYWORD1>native</KEYWORD1>
\r
92 <KEYWORD1>new</KEYWORD1>
\r
93 <KEYWORD1>private</KEYWORD1>
\r
94 <KEYWORD1>protected</KEYWORD1>
\r
95 <KEYWORD1>public</KEYWORD1>
\r
96 <KEYWORD1>return</KEYWORD1>
\r
97 <KEYWORD1>static</KEYWORD1>
\r
98 <KEYWORD1>switch</KEYWORD1>
\r
99 <KEYWORD1>synchronized</KEYWORD1>
\r
100 <KEYWORD1>throw</KEYWORD1>
\r
101 <KEYWORD1>throws</KEYWORD1>
\r
102 <KEYWORD1>transient</KEYWORD1>
\r
103 <KEYWORD1>try</KEYWORD1>
\r
104 <KEYWORD1>volatile</KEYWORD1>
\r
105 <KEYWORD1>while</KEYWORD1>
\r
107 <KEYWORD1>strictfp</KEYWORD1>
\r
109 <KEYWORD1>package</KEYWORD1>
\r
110 <KEYWORD1>import</KEYWORD1>
\r
112 <!-- groovy keywords -->
\r
113 <KEYWORD2>as</KEYWORD2>
\r
114 <KEYWORD2>assert</KEYWORD2>
\r
115 <KEYWORD2>def</KEYWORD2>
\r
116 <KEYWORD2>mixin</KEYWORD2>
\r
117 <KEYWORD2>property</KEYWORD2>
\r
118 <KEYWORD2>test</KEYWORD2>
\r
119 <KEYWORD2>using</KEYWORD2>
\r
120 <KEYWORD2>in</KEYWORD2>
\r
123 <KEYWORD3>boolean</KEYWORD3>
\r
124 <KEYWORD3>byte</KEYWORD3>
\r
125 <KEYWORD3>char</KEYWORD3>
\r
126 <KEYWORD3>class</KEYWORD3>
\r
127 <KEYWORD3>double</KEYWORD3>
\r
128 <KEYWORD3>float</KEYWORD3>
\r
129 <KEYWORD3>int</KEYWORD3>
\r
130 <KEYWORD3>interface</KEYWORD3>
\r
131 <KEYWORD3>long</KEYWORD3>
\r
132 <KEYWORD3>short</KEYWORD3>
\r
133 <KEYWORD3>void</KEYWORD3>
\r
135 <!-- Groovy JDK stuff -->
\r
136 <KEYWORD4>abs</KEYWORD4>
\r
137 <KEYWORD4>any</KEYWORD4>
\r
138 <KEYWORD4>append</KEYWORD4>
\r
139 <KEYWORD4>asList</KEYWORD4>
\r
140 <KEYWORD4>asWritable</KEYWORD4>
\r
141 <KEYWORD4>call</KEYWORD4>
\r
142 <KEYWORD4>collect</KEYWORD4>
\r
143 <KEYWORD4>compareTo</KEYWORD4>
\r
144 <KEYWORD4>count</KEYWORD4>
\r
145 <KEYWORD4>div</KEYWORD4>
\r
146 <KEYWORD4>dump</KEYWORD4>
\r
147 <KEYWORD4>each</KEYWORD4>
\r
148 <KEYWORD4>eachByte</KEYWORD4>
\r
149 <KEYWORD4>eachFile</KEYWORD4>
\r
150 <KEYWORD4>eachLine</KEYWORD4>
\r
151 <KEYWORD4>every</KEYWORD4>
\r
152 <KEYWORD4>find</KEYWORD4>
\r
153 <KEYWORD4>findAll</KEYWORD4>
\r
154 <KEYWORD4>flatten</KEYWORD4>
\r
155 <KEYWORD4>getAt</KEYWORD4>
\r
156 <KEYWORD4>getErr</KEYWORD4>
\r
157 <KEYWORD4>getIn</KEYWORD4>
\r
158 <KEYWORD4>getOut</KEYWORD4>
\r
159 <KEYWORD4>getText</KEYWORD4>
\r
160 <KEYWORD4>grep</KEYWORD4>
\r
161 <KEYWORD4>immutable</KEYWORD4>
\r
162 <KEYWORD4>inject</KEYWORD4>
\r
163 <KEYWORD4>inspect</KEYWORD4>
\r
164 <KEYWORD4>intersect</KEYWORD4>
\r
165 <KEYWORD4>invokeMethods</KEYWORD4>
\r
166 <KEYWORD4>isCase</KEYWORD4>
\r
167 <KEYWORD4>join</KEYWORD4>
\r
168 <KEYWORD4>leftShift</KEYWORD4>
\r
169 <KEYWORD4>minus</KEYWORD4>
\r
170 <KEYWORD4>multiply</KEYWORD4>
\r
171 <KEYWORD4>newInputStream</KEYWORD4>
\r
172 <KEYWORD4>newOutputStream</KEYWORD4>
\r
173 <KEYWORD4>newPrintWriter</KEYWORD4>
\r
174 <KEYWORD4>newReader</KEYWORD4>
\r
175 <KEYWORD4>newWriter</KEYWORD4>
\r
176 <KEYWORD4>next</KEYWORD4>
\r
177 <KEYWORD4>plus</KEYWORD4>
\r
178 <KEYWORD4>pop</KEYWORD4>
\r
179 <KEYWORD4>power</KEYWORD4>
\r
180 <KEYWORD4>previous</KEYWORD4>
\r
181 <KEYWORD4>print</KEYWORD4>
\r
182 <KEYWORD4>println</KEYWORD4>
\r
183 <KEYWORD4>push</KEYWORD4>
\r
184 <KEYWORD4>putAt</KEYWORD4>
\r
185 <KEYWORD4>read</KEYWORD4>
\r
186 <KEYWORD4>readBytes</KEYWORD4>
\r
187 <KEYWORD4>readLines</KEYWORD4>
\r
188 <KEYWORD4>reverse</KEYWORD4>
\r
189 <KEYWORD4>reverseEach</KEYWORD4>
\r
190 <KEYWORD4>round</KEYWORD4>
\r
191 <KEYWORD4>size</KEYWORD4>
\r
192 <KEYWORD4>sort</KEYWORD4>
\r
193 <KEYWORD4>splitEachLine</KEYWORD4>
\r
194 <KEYWORD4>step</KEYWORD4>
\r
195 <KEYWORD4>subMap</KEYWORD4>
\r
196 <KEYWORD4>times</KEYWORD4>
\r
197 <KEYWORD4>toInteger</KEYWORD4>
\r
198 <KEYWORD4>toList</KEYWORD4>
\r
199 <KEYWORD4>tokenize</KEYWORD4>
\r
200 <KEYWORD4>upto</KEYWORD4>
\r
201 <KEYWORD4>waitForOrKill</KEYWORD4>
\r
202 <KEYWORD4>withPrintWriter</KEYWORD4>
\r
203 <KEYWORD4>withReader</KEYWORD4>
\r
204 <KEYWORD4>withStream</KEYWORD4>
\r
205 <KEYWORD4>withWriter</KEYWORD4>
\r
206 <KEYWORD4>withWriterAppend</KEYWORD4>
\r
207 <KEYWORD4>write</KEYWORD4>
\r
208 <KEYWORD4>writeLine</KEYWORD4>
\r
210 <LITERAL2>false</LITERAL2>
\r
211 <LITERAL2>null</LITERAL2>
\r
212 <LITERAL2>super</LITERAL2>
\r
213 <LITERAL2>this</LITERAL2>
\r
214 <LITERAL2>true</LITERAL2>
\r
216 <!-- this is specific to groovy, treat like `this`? -->
\r
217 <LITERAL3>it</LITERAL3>
\r
219 <INVALID>goto</INVALID>
\r
220 <INVALID>const</INVALID>
\r
224 <RULES SET="LITERAL" DEFAULT="LITERAL1" ESCAPE="\">
\r
226 <SPAN TYPE="KEYWORD2" NO_LINE_BREAK="TRUE">
\r
231 <MARK_FOLLOWING TYPE="KEYWORD2">$</MARK_FOLLOWING>
\r
234 <RULES SET="GROOVYDOC" DEFAULT="COMMENT3" IGNORE_CASE="TRUE">
\r
235 <!-- so that @link{...} is highlighted -->
\r
236 <SEQ TYPE="COMMENT3">{</SEQ>
\r
238 <!-- so that *@param is highlighted -->
\r
239 <SEQ TYPE="COMMENT3">*</SEQ>
\r
241 <!-- HTML comments -->
\r
242 <SPAN TYPE="COMMENT1">
\r
243 <BEGIN><!--</BEGIN>
\r
247 <!-- Javadoc allows this -->
\r
248 <SEQ TYPE="COMMENT3"><<</SEQ>
\r
249 <SEQ TYPE="COMMENT3"><=</SEQ>
\r
250 <SEQ TYPE="COMMENT3">< </SEQ>
\r
253 <SPAN TYPE="MARKUP" DELEGATE="xml::TAGS"
\r
254 NO_LINE_BREAK="TRUE">
\r
255 <BEGIN><</BEGIN>
\r
259 <MARK_FOLLOWING TYPE="LABEL">@</MARK_FOLLOWING>
\r