1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1.2 +++ b/src/Tools/jEdit/src/modes/scala.xml Sat Mar 17 17:36:10 2012 +0100
1.3 @@ -0,0 +1,399 @@
1.4 +<?xml version="1.0"?>
1.5 +
1.6 +<!DOCTYPE MODE SYSTEM "xmode.dtd">
1.7 +
1.8 +<MODE>
1.9 + <PROPS>
1.10 + <PROPERTY NAME="indentOpenBrackets" VALUE="{" />
1.11 + <PROPERTY NAME="indentCloseBrackets" VALUE="}" />
1.12 + <PROPERTY NAME="lineUpClosingBracket" VALUE="true" />
1.13 + <PROPERTY NAME="indentPrevLine"
1.14 + VALUE="\s*(((if|while)\s*\(|else\s*(\{|$)|else\s+if\s*\(|case\s+.+:|default:)[^;]*|for\s*\(.*)" />
1.15 + <!-- set this to 'true' if you want to use GNU coding style -->
1.16 + <PROPERTY NAME="doubleBracketIndent" VALUE="false" />
1.17 + <PROPERTY NAME="commentStart" VALUE="/*" />
1.18 + <PROPERTY NAME="commentEnd" VALUE="*/" />
1.19 + <PROPERTY NAME="lineComment" VALUE="//" />
1.20 + <PROPERTY NAME="noTabs" VALUE="true" />
1.21 + <PROPERTY NAME="tabSize" VALUE="2" />
1.22 + <PROPERTY NAME="indentSize" VALUE="2" />
1.23 + <PROPERTY NAME="wordBreakChars" VALUE=",+-=<>/?^&*" />
1.24 + </PROPS>
1.25 +
1.26 + <RULES ESCAPE="\" IGNORE_CASE="FALSE" HIGHLIGHT_DIGITS="TRUE"
1.27 + DIGIT_RE="(0[lL]?|[1-9]\d{0,9}(\d{0,9}[lL])?|0[xX]\p{XDigit}{1,8}(\p{XDigit}{0,8}[lL])?|0[0-7]{1,11}([0-7]{0,11}[lL])?|([0-9]+\.[0-9]*|\.[0-9]+)([eE][+-]?[0-9]+)?[fFdD]?|[0-9]+([eE][+-]?[0-9]+[fFdD]?|([eE][+-]?[0-9]+)?[fFdD]))">
1.28 +
1.29 + <MARK_FOLLOWING TYPE="LABEL">@</MARK_FOLLOWING>
1.30 +
1.31 + <IMPORT DELEGATE="PRIMARY"/>
1.32 + </RULES>
1.33 +
1.34 + <RULES SET="PRIMARY">
1.35 + <!-- Silly comment -->
1.36 + <SEQ TYPE="COMMENT1">/**/</SEQ>
1.37 +
1.38 + <EOL_SPAN TYPE="COMMENT2">//</EOL_SPAN>
1.39 +
1.40 + <!-- Scaladoc comment -->
1.41 + <SPAN TYPE="COMMENT3" DELEGATE="SCALADOC">
1.42 + <BEGIN>/**</BEGIN>
1.43 + <END>*/</END>
1.44 + </SPAN>
1.45 +
1.46 + <!-- Scala comment (Java style) -->
1.47 + <SPAN TYPE="COMMENT1">
1.48 + <BEGIN>/*</BEGIN>
1.49 + <END>*/</END>
1.50 + </SPAN>
1.51 +
1.52 + <!-- start of XML comment (griba2010@ya.com) -->
1.53 + <SEQ_REGEXP HASH_CHAR="<" AT_WHITESPACE_END="TRUE" TYPE="COMMENT2"
1.54 + DELEGATE="XML_COMMENT"><!--</SEQ_REGEXP>
1.55 +
1.56 + <!-- start of xml tag (griba2010@ya.com) -->
1.57 + <SEQ_REGEXP HASH_CHAR="<" AT_WHITESPACE_END="TRUE" TYPE="LITERAL3"
1.58 + DELEGATE="XML_TAG"><\/?\w*</SEQ_REGEXP>
1.59 +
1.60 + <!-- string and character literals -->
1.61 + <SPAN TYPE="LITERAL1" NO_LINE_BREAK="FALSE" ESCAPE="FALSE">
1.62 + <BEGIN>"""</BEGIN>
1.63 + <END>"""</END>
1.64 + </SPAN>
1.65 + <SPAN TYPE="LITERAL1" NO_LINE_BREAK="TRUE">
1.66 + <BEGIN>"</BEGIN>
1.67 + <END>"</END>
1.68 + </SPAN>
1.69 + <SEQ_REGEXP HASH_CHAR="'" TYPE="LITERAL1">'([^']|\\.)'</SEQ_REGEXP>
1.70 +
1.71 + <!-- symbol literals -->
1.72 + <SEQ_REGEXP HASH_CHAR="'" TYPE="LABEL">'[0-9a-zA-Z><=+]([0-9a-zA-Z><=+]|_[0-9a-zA-Z><=+])*</SEQ_REGEXP>
1.73 +
1.74 + <!-- type params between bracket pairs with -->
1.75 + <!-- nested ones within (griba2010@ya.com) -->
1.76 + <SEQ_REGEXP HASH_CHAR="[" TYPE="LITERAL3"
1.77 + >\[[^\[\]]*(\[[^\[\]]*(\[[^\[\]]*\][^\[\]]*)*\][^\[\]]*)*\]</SEQ_REGEXP>
1.78 +
1.79 + <!-- type constraints (griba2010@ya.com) -->
1.80 + <SEQ_REGEXP HASH_CHAR="<" TYPE="LITERAL2"
1.81 + ><:\s*\w+(\.\w+)*(#\w+)?</SEQ_REGEXP>
1.82 + <SEQ_REGEXP HASH_CHAR=">" TYPE="LITERAL2"
1.83 + >>:\s*\w+(\.\w+)*(#\w+)?</SEQ_REGEXP>
1.84 +
1.85 + <SEQ TYPE="OPERATOR">)</SEQ>
1.86 + <SEQ TYPE="OPERATOR">=</SEQ>
1.87 + <SEQ TYPE="OPERATOR">!</SEQ>
1.88 + <SEQ TYPE="OPERATOR">>=</SEQ>
1.89 + <SEQ TYPE="OPERATOR">>:</SEQ>
1.90 + <SEQ TYPE="OPERATOR"><=</SEQ>
1.91 + <SEQ TYPE="OPERATOR"><:</SEQ>
1.92 + <SEQ TYPE="OPERATOR">+</SEQ>
1.93 + <SEQ TYPE="OPERATOR">-</SEQ>
1.94 + <SEQ TYPE="OPERATOR">/</SEQ>
1.95 + <SEQ TYPE="OPERATOR">*</SEQ>
1.96 + <SEQ TYPE="OPERATOR">></SEQ>
1.97 + <SEQ TYPE="OPERATOR"><</SEQ>
1.98 + <SEQ TYPE="OPERATOR">%</SEQ>
1.99 + <SEQ TYPE="OPERATOR">&</SEQ>
1.100 + <SEQ TYPE="OPERATOR">|</SEQ>
1.101 + <SEQ TYPE="OPERATOR">^</SEQ>
1.102 + <SEQ TYPE="OPERATOR">`</SEQ>
1.103 + <SEQ TYPE="OPERATOR">~</SEQ>
1.104 + <SEQ TYPE="OPERATOR">}</SEQ>
1.105 + <SEQ TYPE="OPERATOR">{</SEQ>
1.106 + <SEQ TYPE="NULL">.</SEQ>
1.107 + <SEQ TYPE="NULL">,</SEQ>
1.108 + <SEQ TYPE="NULL">;</SEQ>
1.109 + <SEQ TYPE="NULL">]</SEQ>
1.110 + <SEQ TYPE="NULL">[</SEQ>
1.111 + <SEQ TYPE="NULL">?</SEQ>
1.112 + <SEQ TYPE="NULL">:</SEQ>
1.113 +
1.114 + <!-- after colon type descriptions (griba2010@ya.com) -->
1.115 + <SEQ_REGEXP HASH_CHAR=":" TYPE="LITERAL2"
1.116 + >:\s*\w+(\.\w+)*(#\w+)?</SEQ_REGEXP>
1.117 +
1.118 + <!-- Function calls -->
1.119 + <MARK_PREVIOUS TYPE="FUNCTION" MATCH_TYPE="OPERATOR">(</MARK_PREVIOUS>
1.120 +
1.121 + <SPAN DELEGATE="PATTERN" MATCH_TYPE="KEYWORD1" AT_WORD_START="TRUE" NO_LINE_BREAK="TRUE">
1.122 + <BEGIN>case </BEGIN>
1.123 + <END>=></END>
1.124 + </SPAN>
1.125 +
1.126 + <KEYWORDS>
1.127 + <KEYWORD1>abstract</KEYWORD1>
1.128 + <KEYWORD1>case</KEYWORD1>
1.129 + <KEYWORD1>catch</KEYWORD1>
1.130 + <KEYWORD1>class</KEYWORD1>
1.131 + <KEYWORD1>def</KEYWORD1>
1.132 + <KEYWORD1>do</KEYWORD1>
1.133 + <KEYWORD1>else</KEYWORD1>
1.134 + <KEYWORD1>extends</KEYWORD1>
1.135 + <KEYWORD1>final</KEYWORD1>
1.136 + <KEYWORD1>finally</KEYWORD1>
1.137 + <KEYWORD1>for</KEYWORD1>
1.138 + <KEYWORD1>forSome</KEYWORD1>
1.139 + <KEYWORD1>if</KEYWORD1>
1.140 + <KEYWORD1>implicit</KEYWORD1>
1.141 + <KEYWORD1>import</KEYWORD1>
1.142 + <KEYWORD1>lazy</KEYWORD1>
1.143 + <KEYWORD1>match</KEYWORD1>
1.144 + <KEYWORD1>new</KEYWORD1>
1.145 + <KEYWORD1>object</KEYWORD1>
1.146 + <KEYWORD1>override</KEYWORD1>
1.147 + <KEYWORD1>package</KEYWORD1>
1.148 + <KEYWORD1>private</KEYWORD1>
1.149 + <KEYWORD1>protected</KEYWORD1>
1.150 + <KEYWORD1>requires</KEYWORD1>
1.151 + <KEYWORD1>return</KEYWORD1>
1.152 + <KEYWORD1>sealed</KEYWORD1>
1.153 + <KEYWORD1>throw</KEYWORD1>
1.154 + <KEYWORD1>trait</KEYWORD1>
1.155 + <KEYWORD1>try</KEYWORD1>
1.156 + <KEYWORD1>type</KEYWORD1>
1.157 + <KEYWORD1>val</KEYWORD1>
1.158 + <KEYWORD1>var</KEYWORD1>
1.159 + <KEYWORD1>with</KEYWORD1>
1.160 + <KEYWORD1>while</KEYWORD1>
1.161 + <KEYWORD1>yield</KEYWORD1>
1.162 + <KEYWORD1>=></KEYWORD1>
1.163 +
1.164 + <!-- java.lang.* wrapper types -->
1.165 + <KEYWORD2>Character</KEYWORD2>
1.166 + <KEYWORD2>Integer</KEYWORD2>
1.167 +
1.168 + <!-- scala.* primitive types -->
1.169 + <KEYWORD2>Boolean</KEYWORD2>
1.170 + <KEYWORD2>boolean</KEYWORD2>
1.171 + <KEYWORD2>Byte</KEYWORD2>
1.172 + <KEYWORD2>byte</KEYWORD2>
1.173 + <KEYWORD2>Char</KEYWORD2>
1.174 + <KEYWORD2>char</KEYWORD2>
1.175 + <KEYWORD2>Double</KEYWORD2>
1.176 + <KEYWORD2>double</KEYWORD2>
1.177 + <KEYWORD2>Float</KEYWORD2>
1.178 + <KEYWORD2>float</KEYWORD2>
1.179 + <KEYWORD2>Int</KEYWORD2>
1.180 + <KEYWORD2>int</KEYWORD2>
1.181 + <KEYWORD2>Long</KEYWORD2>
1.182 + <KEYWORD2>long</KEYWORD2>
1.183 + <KEYWORD2>Short</KEYWORD2>
1.184 + <KEYWORD2>short</KEYWORD2>
1.185 + <KEYWORD2>Unit</KEYWORD2>
1.186 + <KEYWORD2>unit</KEYWORD2>
1.187 +
1.188 + <!-- scala.* predefined types -->
1.189 + <KEYWORD3>Actor</KEYWORD3>
1.190 + <KEYWORD3>ActorProxy</KEYWORD3>
1.191 + <KEYWORD3>ActorTask</KEYWORD3>
1.192 + <KEYWORD3>ActorThread</KEYWORD3>
1.193 + <KEYWORD3>AllRef</KEYWORD3>
1.194 + <KEYWORD3>Any</KEYWORD3>
1.195 + <KEYWORD3>AnyRef</KEYWORD3>
1.196 + <KEYWORD3>Application</KEYWORD3>
1.197 + <KEYWORD3>AppliedType</KEYWORD3>
1.198 + <KEYWORD3>Array</KEYWORD3>>
1.199 + <KEYWORD3>ArrayBuffer</KEYWORD3>
1.200 + <KEYWORD3>Attribute</KEYWORD3>
1.201 + <KEYWORD3>BoxedArray</KEYWORD3>
1.202 + <KEYWORD3>BoxedBooleanArray</KEYWORD3>
1.203 + <KEYWORD3>BoxedByteArray</KEYWORD3>
1.204 + <KEYWORD3>BoxedCharArray</KEYWORD3>
1.205 + <KEYWORD3>Buffer</KEYWORD3>
1.206 + <KEYWORD3>BufferedIterator</KEYWORD3>
1.207 + <KEYWORD3>Enumeration</KEYWORD3>
1.208 + <KEYWORD3>Fluid</KEYWORD3>
1.209 + <KEYWORD3>Function</KEYWORD3>
1.210 + <KEYWORD3>IScheduler</KEYWORD3>
1.211 + <KEYWORD3>ImmutableMapAdaptor</KEYWORD3>
1.212 + <KEYWORD3>ImmutableSetAdaptor</KEYWORD3>
1.213 + <KEYWORD3>Iterable</KEYWORD3>
1.214 + <KEYWORD3>List</KEYWORD3>
1.215 + <KEYWORD3>Option</KEYWORD3>
1.216 + <KEYWORD3>Pair</KEYWORD3>
1.217 + <KEYWORD3>PartialFunction</KEYWORD3>
1.218 + <KEYWORD3>Pid</KEYWORD3>
1.219 + <KEYWORD3>PriorityQueue</KEYWORD3>
1.220 + <KEYWORD3>PriorityQueueProxy</KEYWORD3>
1.221 + <KEYWORD3>Reaction</KEYWORD3>
1.222 + <KEYWORD3>Ref</KEYWORD3>
1.223 + <KEYWORD3>Responder</KEYWORD3>
1.224 + <KEYWORD3>RichInt</KEYWORD3>
1.225 + <KEYWORD3>RichString</KEYWORD3>
1.226 + <KEYWORD3>Rule</KEYWORD3>
1.227 + <KEYWORD3>RuleTransformer</KEYWORD3>
1.228 + <KEYWORD3>Script</KEYWORD3>
1.229 + <KEYWORD3>Some</KEYWORD3>
1.230 + <KEYWORD3>Stream</KEYWORD3>
1.231 + <KEYWORD3>String</KEYWORD3>
1.232 + <KEYWORD3>Symbol</KEYWORD3>
1.233 + <KEYWORD3>TcpService</KEYWORD3>
1.234 + <KEYWORD3>TcpServiceWorker</KEYWORD3>
1.235 + <KEYWORD3>WorkerThread</KEYWORD3>
1.236 +
1.237 + <!-- scala.* predefined objects -->
1.238 + <KEYWORD4>Console</KEYWORD4>
1.239 + <KEYWORD4>Nil</KEYWORD4>
1.240 + <KEYWORD4>None</KEYWORD4>
1.241 + <KEYWORD4>Predef</KEYWORD4>
1.242 + <KEYWORD4>RemoteActor</KEYWORD4>
1.243 + <KEYWORD4>SUnit</KEYWORD4>
1.244 + <KEYWORD4>ScalaRunTime</KEYWORD4>
1.245 + <KEYWORD4>Scheduler</KEYWORD4>
1.246 + <KEYWORD4>TIMEOUT</KEYWORD4>
1.247 + <KEYWORD4>TimerThread</KEYWORD4>
1.248 +
1.249 + <LITERAL2>false</LITERAL2>
1.250 + <LITERAL2>null</LITERAL2>
1.251 + <LITERAL2>super</LITERAL2>
1.252 + <LITERAL2>this</LITERAL2>
1.253 + <LITERAL2>true</LITERAL2>
1.254 + </KEYWORDS>
1.255 + </RULES>
1.256 +
1.257 + <RULES SET="PATTERN" DEFAULT="NULL" IGNORE_CASE="FALSE">
1.258 + <IMPORT DELEGATE="PRIMARY"/>
1.259 +
1.260 + <SEQ TYPE="OPERATOR">@</SEQ>
1.261 + </RULES>
1.262 +
1.263 + <RULES SET="SCALADOC" DEFAULT="COMMENT3" IGNORE_CASE="TRUE">
1.264 + <!-- so that @link{...} is highlighted -->
1.265 + <SEQ TYPE="COMMENT3">{</SEQ>
1.266 +
1.267 + <!-- so that *@param is highlighted -->
1.268 + <SEQ TYPE="COMMENT3">*</SEQ>
1.269 +
1.270 + <!-- Javadoc ignores tags inside <pre> -->
1.271 + <SPAN TYPE="MARKUP" DELEGATE="SCALADOC_PRE">
1.272 + <BEGIN><pre></BEGIN>
1.273 + <END></pre></END>
1.274 + </SPAN>
1.275 +
1.276 + <!-- HTML comments -->
1.277 + <SPAN TYPE="COMMENT1">
1.278 + <BEGIN><!--</BEGIN>
1.279 + <END>--></END>
1.280 + </SPAN>
1.281 +
1.282 + <!-- Javadoc allows this -->
1.283 + <SEQ TYPE="COMMENT3"><<</SEQ>
1.284 + <SEQ TYPE="COMMENT3"><=</SEQ>
1.285 + <SEQ TYPE="COMMENT3">< </SEQ>
1.286 +
1.287 + <!-- HTML tags -->
1.288 + <SPAN TYPE="MARKUP" DELEGATE="xml::TAGS">
1.289 + <BEGIN><</BEGIN>
1.290 + <END>></END>
1.291 + </SPAN>
1.292 +
1.293 + <KEYWORDS>
1.294 + <LABEL>@author</LABEL>
1.295 + <LABEL>@beaninfo</LABEL>
1.296 + <LABEL>@history</LABEL>
1.297 + <LABEL>@bug</LABEL>
1.298 + <LABEL>@review</LABEL>
1.299 + <LABEL>@todo</LABEL>
1.300 + <LABEL>@idea</LABEL>
1.301 + <LABEL>@pre</LABEL>
1.302 + <LABEL>@requires</LABEL>
1.303 + <LABEL>@post</LABEL>
1.304 + <LABEL>@ensures</LABEL>
1.305 + <LABEL>@generates</LABEL>
1.306 + <LABEL>@modifies</LABEL>
1.307 + <LABEL>@invariant</LABEL>
1.308 + <LABEL>@exception</LABEL>
1.309 + <LABEL>@hides</LABEL>
1.310 + <LABEL>@overrides</LABEL>
1.311 + <LABEL>@equivalent</LABEL>
1.312 + <LABEL>@bon</LABEL>
1.313 + <LABEL>@access</LABEL>
1.314 + <LABEL>@example</LABEL>
1.315 + <LABEL>@design</LABEL>
1.316 + <LABEL>@serial</LABEL>
1.317 + <LABEL>@references</LABEL>
1.318 + <LABEL>@uses</LABEL>
1.319 + <LABEL>@guard</LABEL>
1.320 + <LABEL>@values</LABEL>
1.321 + <LABEL>@complexity</LABEL>
1.322 + <LABEL>@deprecated</LABEL>
1.323 + <LABEL>@docRoot</LABEL>
1.324 + <LABEL>@exception</LABEL>
1.325 + <LABEL>@link</LABEL>
1.326 + <LABEL>@param</LABEL>
1.327 + <LABEL>@return</LABEL>
1.328 + <LABEL>@see</LABEL>
1.329 + <LABEL>@serialData</LABEL>
1.330 + <LABEL>@serialField</LABEL>
1.331 + <LABEL>@since</LABEL>
1.332 + <LABEL>@throws</LABEL>
1.333 + <LABEL>@version</LABEL>
1.334 + <LABEL>@spec</LABEL>
1.335 + </KEYWORDS>
1.336 + </RULES>
1.337 +
1.338 + <RULES SET="SCALADOC_PRE" DEFAULT="COMMENT3" />
1.339 +
1.340 + <!-- inside xml tag default type label -->
1.341 + <!-- for attribute names (griba2010@ya.com) -->
1.342 + <RULES SET="XML_TAG" DEFAULT="LABEL" IGNORE_CASE="TRUE">
1.343 + <!-- string and character literals -->
1.344 + <SPAN TYPE="LITERAL1" NO_LINE_BREAK="TRUE">
1.345 + <BEGIN>"</BEGIN>
1.346 + <END>"</END>
1.347 + </SPAN>
1.348 +
1.349 + <SPAN TYPE="LITERAL1" NO_LINE_BREAK="TRUE">
1.350 + <BEGIN>'</BEGIN>
1.351 + <END>'</END>
1.352 + </SPAN>
1.353 +
1.354 + <!-- scala attribute value -->
1.355 + <SPAN DELEGATE="MAIN">
1.356 + <BEGIN>{</BEGIN>
1.357 + <END>}</END>
1.358 + </SPAN>
1.359 +
1.360 + <!-- if ">\n" goto main rule set -->
1.361 + <SEQ_REGEXP HASH_CHAR=">" DELEGATE="MAIN" TYPE="LITERAL3"
1.362 + >>$</SEQ_REGEXP>
1.363 +
1.364 + <!-- if ">;" goto main rule set -->
1.365 + <SEQ_REGEXP HASH_CHAR=">" DELEGATE="MAIN" TYPE="LITERAL3"
1.366 + >>\s*;</SEQ_REGEXP>
1.367 +
1.368 + <!-- if ">)" goto main rule set -->
1.369 + <SEQ_REGEXP HASH_CHAR=">" DELEGATE="MAIN" TYPE="LITERAL3"
1.370 + >>\s*\)</SEQ_REGEXP>
1.371 +
1.372 + <!-- if ">" goto xml_text rule set -->
1.373 + <SEQ DELEGATE="XML_TEXT" TYPE="LITERAL3">></SEQ>
1.374 + </RULES>
1.375 +
1.376 + <RULES SET="XML_TEXT" DEFAULT="COMMENT4">
1.377 + <!-- scala expression -->
1.378 + <SPAN DELEGATE="MAIN">
1.379 + <BEGIN>{</BEGIN>
1.380 + <END>}</END>
1.381 + </SPAN>
1.382 +
1.383 + <SEQ_REGEXP HASH_CHAR="<" DELEGATE="XML_COMMENT" TYPE="COMMENT2"
1.384 + ><!--</SEQ_REGEXP>
1.385 + <!-- if "<" goto xml_tag rule set -->
1.386 + <SEQ_REGEXP HASH_CHAR="<" DELEGATE="XML_TAG" TYPE="LITERAL3"
1.387 + ><\/?\w*</SEQ_REGEXP>
1.388 + </RULES>
1.389 +
1.390 + <RULES SET="XML_COMMENT" DEFAULT="COMMENT2">
1.391 + <!-- if end_of_comment with "\n" goto main rule set -->
1.392 + <SEQ_REGEXP HASH_CHAR="-" DELEGATE="MAIN" TYPE="COMMENT2"
1.393 + >-->$</SEQ_REGEXP>
1.394 +
1.395 + <!-- if end_of_comment with ";" goto main rule set -->
1.396 + <SEQ_REGEXP HASH_CHAR="-" DELEGATE="MAIN" TYPE="COMMENT2"
1.397 + >-->\s*;</SEQ_REGEXP>
1.398 +
1.399 + <!-- if end_of_comment goto xml_text rule set -->
1.400 + <SEQ DELEGATE="XML_TEXT" TYPE="COMMENT2">--></SEQ>
1.401 + </RULES>
1.402 +</MODE>