]> gitweb.factorcode.org Git - factor.git/blob - basis/xmode/modes/ml.xml
xmode.modes: updating with recent xmode files
[factor.git] / basis / xmode / modes / ml.xml
1 <?xml version="1.0"?>
2
3 <!DOCTYPE MODE SYSTEM "xmode.dtd">
4
5 <!-- SML MODE 1.0.1 by Lucas Dixon, based on Ingmar Stein's ml mode -->
6 <MODE>
7   <PROPS>
8     <PROPERTY NAME="commentStart" VALUE="(*"/>
9     <PROPERTY NAME="commentEnd" VALUE="*)"/>
10     <PROPERTY NAME="wordBreakChars" VALUE=",+-=&lt;&gt;/?^&amp;*\\/(){}" />
11 <!-- JEdit's indent mechanism is not expressive enough for ML.
12      It is best not to even try to have automated indentation for ML until significant improvements are made to the indent language. -->
13 <!--
14     <PROPERTY NAME="doubleBracketIndent" VALUE="false" />
15     <PROPERTY NAME="lineUpClosingBracket" VALUE="true" />
16     <PROPERTY NAME="unalignedOpenBrackets" VALUE="([{" />
17     <PROPERTY NAME="unalignedCloseBrackets" VALUE=")]}" />
18     <PROPERTY NAME="indentOpenBrackets" VALUE="([{" />
19     <PROPERTY NAME="indentCloseBrackets" VALUE=")]}" />
20     <PROPERTY NAME="indentNextLines"
21       VALUE="(^|.*\s+)(let|sig|struct|local)(\W+.*|)$" />
22     <PROPERTY NAME="unindentNextLines"
23       VALUE="(^|.*\s+)(end)(\W+.*|)$" />
24     <PROPERTY NAME="unindentThisLine"
25       VALUE="(^|\s+)(local|val|fun|end|in|open)(\W+.*|)$" />
26 -->
27   </PROPS>
28
29   <RULES IGNORE_CASE="FALSE" HIGHLIGHT_DIGITS="TRUE">
30     <!-- comments -->
31     <SPAN TYPE="COMMENT1">
32       <BEGIN>(*</BEGIN>
33       <END>*)</END>
34     </SPAN>
35
36     <!-- character literals -->
37     <SPAN TYPE="LITERAL1" ESCAPE="\" NO_LINE_BREAK="TRUE">
38       <BEGIN>#"</BEGIN>
39       <END>"</END>
40     </SPAN>
41
42     <!-- string literals -->
43     <SPAN TYPE="LITERAL1" ESCAPE="\" NO_LINE_BREAK="TRUE">
44       <BEGIN>"</BEGIN>
45       <END>"</END>
46     </SPAN>
47
48     <!-- built-in operators -->
49
50     <!-- infix precedence 7 -->
51     <SEQ TYPE="OPERATOR">/</SEQ>
52     <SEQ TYPE="OPERATOR">*</SEQ>
53
54     <!-- reserved & operator characters -->
55     <SEQ TYPE="OPERATOR">+</SEQ>
56     <SEQ TYPE="OPERATOR">-</SEQ>
57     <SEQ TYPE="OPERATOR">^</SEQ>
58     <SEQ TYPE="OPERATOR">@</SEQ>
59     <SEQ TYPE="OPERATOR">=</SEQ>
60     <SEQ TYPE="OPERATOR">&lt;</SEQ>
61     <SEQ TYPE="OPERATOR">&gt;</SEQ>
62     <SEQ TYPE="OPERATOR">(</SEQ>
63     <SEQ TYPE="OPERATOR">)</SEQ>
64     <SEQ TYPE="OPERATOR">[</SEQ>
65     <SEQ TYPE="OPERATOR">]</SEQ>
66     <SEQ TYPE="OPERATOR">{</SEQ>
67     <SEQ TYPE="OPERATOR">}</SEQ>
68     <SEQ TYPE="OPERATOR">,</SEQ>
69     <SEQ TYPE="OPERATOR">:</SEQ>
70     <SEQ TYPE="OPERATOR">;</SEQ>
71     <SEQ TYPE="OPERATOR">|</SEQ>
72     <SEQ TYPE="OPERATOR">#</SEQ>
73
74
75     <MARK_FOLLOWING TYPE="FUNCTION"
76     MATCH_TYPE="KEYWORD1">fun </MARK_FOLLOWING>
77     <MARK_FOLLOWING TYPE="FUNCTION"
78     MATCH_TYPE="KEYWORD1">val </MARK_FOLLOWING>
79     <MARK_FOLLOWING TYPE="FUNCTION"
80     MATCH_TYPE="KEYWORD1">exception </MARK_FOLLOWING>
81
82     <MARK_FOLLOWING TYPE="FUNCTION"
83     MATCH_TYPE="KEYWORD1">type </MARK_FOLLOWING>
84     <MARK_FOLLOWING TYPE="FUNCTION"
85     MATCH_TYPE="KEYWORD1">abstype </MARK_FOLLOWING>
86      <MARK_FOLLOWING TYPE="FUNCTION"
87     MATCH_TYPE="KEYWORD1">eqtype </MARK_FOLLOWING>
88     <MARK_FOLLOWING TYPE="FUNCTION"
89     MATCH_TYPE="KEYWORD1">datatype </MARK_FOLLOWING>
90
91     <MARK_FOLLOWING TYPE="LITERAL3"
92     MATCH_TYPE="KEYWORD1">functor </MARK_FOLLOWING>
93     <MARK_FOLLOWING TYPE="LITERAL3"
94     MATCH_TYPE="KEYWORD1">structure </MARK_FOLLOWING>
95     <MARK_FOLLOWING TYPE="LITERAL3"
96     MATCH_TYPE="KEYWORD1">signature </MARK_FOLLOWING>
97
98     <!-- reserved words -->
99     <KEYWORDS>
100       <!-- built-in operators -->
101
102       <!-- infix precedence 7 -->
103       <OPERATOR>div</OPERATOR>
104       <OPERATOR>mod</OPERATOR>
105
106       <!-- infix precedence 3 -->
107       <OPERATOR>o</OPERATOR>
108
109       <!-- infix precedence 0 -->
110       <OPERATOR>before</OPERATOR>
111
112       <!-- type def -->
113       <KEYWORD1>abstype</KEYWORD1>
114       <KEYWORD1>datatype</KEYWORD1>
115       <KEYWORD1>eqtype</KEYWORD1>
116       <KEYWORD1>type</KEYWORD1>
117
118       <!-- value definitions -->
119       <KEYWORD1>exception</KEYWORD1>
120       <KEYWORD1>fun</KEYWORD1>
121       <KEYWORD1>val</KEYWORD1>
122       <KEYWORD1>fn</KEYWORD1>
123
124       <!-- generic definitional -->
125       <KEYWORD1>and</KEYWORD1>
126       <KEYWORD1>end</KEYWORD1>
127       <KEYWORD1>in</KEYWORD1>
128       <KEYWORD1>infix</KEYWORD1>
129       <KEYWORD1>infixr</KEYWORD1>
130       <KEYWORD1>let</KEYWORD1>
131       <KEYWORD1>local</KEYWORD1>
132       <KEYWORD1>as</KEYWORD1>
133       <KEYWORD1>of</KEYWORD1>
134       <KEYWORD1>op</KEYWORD1>
135
136       <!-- module level -->
137       <KEYWORD1>functor</KEYWORD1>
138       <KEYWORD1>include</KEYWORD1>
139       <KEYWORD1>open</KEYWORD1>
140       <KEYWORD1>sharing</KEYWORD1>
141       <KEYWORD1>sig</KEYWORD1>
142       <KEYWORD1>signature</KEYWORD1>
143       <KEYWORD1>struct</KEYWORD1>
144       <KEYWORD1>structure</KEYWORD1>
145       <KEYWORD1>where</KEYWORD1>
146       <KEYWORD1>with</KEYWORD1>
147
148       <!-- logic/control flow -->
149       <KEYWORD1>andalso</KEYWORD1>
150       <KEYWORD1>orelse</KEYWORD1>
151       <KEYWORD1>else</KEYWORD1>
152       <KEYWORD1>if</KEYWORD1>
153       <KEYWORD1>case</KEYWORD1>
154       <KEYWORD1>handle</KEYWORD1>
155       <KEYWORD1>raise</KEYWORD1>
156       <KEYWORD1>then</KEYWORD1>
157
158       <!--- other -->
159       <KEYWORD1>do</KEYWORD1>
160       <KEYWORD1>nonfix</KEYWORD1>
161       <KEYWORD1>rec</KEYWORD1>
162       <KEYWORD1>withtype</KEYWORD1>
163       <KEYWORD1>while</KEYWORD1>
164
165       <!-- built-in types -->
166       <KEYWORD3>array</KEYWORD3>
167       <KEYWORD3>bool</KEYWORD3>
168       <KEYWORD3>char</KEYWORD3>
169       <KEYWORD3>exn</KEYWORD3>
170       <KEYWORD3>frag</KEYWORD3>
171       <KEYWORD3>int</KEYWORD3>
172       <KEYWORD3>list</KEYWORD3>
173       <KEYWORD3>option</KEYWORD3>
174       <KEYWORD3>order</KEYWORD3>
175       <KEYWORD3>real</KEYWORD3>
176       <KEYWORD3>ref</KEYWORD3>
177       <KEYWORD3>string</KEYWORD3>
178       <KEYWORD3>substring</KEYWORD3>
179       <KEYWORD3>unit</KEYWORD3>
180       <KEYWORD3>vector</KEYWORD3>
181       <KEYWORD3>word</KEYWORD3>
182       <KEYWORD3>word8</KEYWORD3>
183
184       <!-- build-in exception constructors -->
185       <KEYWORD2>Bind</KEYWORD2>
186       <KEYWORD2>Chr</KEYWORD2>
187       <KEYWORD2>Domain</KEYWORD2>
188       <KEYWORD2>Div</KEYWORD2>
189       <KEYWORD2>Fail</KEYWORD2>
190       <KEYWORD2>Graphic</KEYWORD2>
191       <KEYWORD2>Interrupt</KEYWORD2>
192       <KEYWORD2>Io</KEYWORD2>
193       <KEYWORD2>Match</KEYWORD2>
194       <KEYWORD2>Option</KEYWORD2>
195       <KEYWORD2>Ord</KEYWORD2>
196       <KEYWORD2>Overflow</KEYWORD2>
197       <KEYWORD2>Size</KEYWORD2>
198       <KEYWORD2>Subscript</KEYWORD2>
199       <KEYWORD2>SysErr</KEYWORD2>
200
201       <!-- built-in literals -->
202       <LITERAL2>false</LITERAL2>
203       <LITERAL2>true</LITERAL2>
204       <LITERAL2>QUOTE</LITERAL2>
205       <LITERAL2>ANTIQUOTE</LITERAL2>
206       <LITERAL2>nil</LITERAL2>
207       <LITERAL2>NONE</LITERAL2>
208       <LITERAL2>SOME</LITERAL2>
209       <LITERAL2>LESS</LITERAL2>
210       <LITERAL2>EQUAL</LITERAL2>
211       <LITERAL2>GREATER</LITERAL2>
212     </KEYWORDS>
213
214   </RULES>
215 </MODE>
216