]> gitweb.factorcode.org Git - factor.git/blob - basis/xmode/modes/haskell.xml
b38b42db87bb746fe472ba4644ff8cbda67eed47
[factor.git] / basis / xmode / modes / haskell.xml
1 <?xml version="1.0"?>\r
2 \r
3 <!DOCTYPE MODE SYSTEM "xmode.dtd">\r
4 \r
5 <!--\r
6         Haskell mode by Kristian Ovaska (kristian.ovaska@helsinki.fi)\r
7         Based on Haskell 98\r
8 -->\r
9 \r
10 <MODE>\r
11 \r
12         <PROPS>\r
13                 <PROPERTY NAME="commentStart" VALUE="{-" />\r
14                 <PROPERTY NAME="commentEnd" VALUE="-}" />\r
15                 <PROPERTY NAME="lineComment" VALUE="--" />\r
16                 <!-- apparently, this is required... -->\r
17                 <PROPERTY NAME="tabSize" VALUE="8" />\r
18                 <PROPERTY NAME="indentSize" VALUE="8" />\r
19         </PROPS>\r
20 \r
21         <RULES IGNORE_CASE="FALSE" HIGHLIGHT_DIGITS="TRUE" ESCAPE="\">\r
22                 <!-- Pragmas. -->\r
23                 <SPAN TYPE="COMMENT2">\r
24                         <BEGIN>{-#</BEGIN>\r
25                         <END>#-}</END>\r
26                 </SPAN>\r
27 \r
28                 <SPAN TYPE="COMMENT1">\r
29                         <BEGIN>{-</BEGIN>\r
30                         <END>-}</END>\r
31                 </SPAN>\r
32 \r
33                 <EOL_SPAN TYPE="COMMENT1">--</EOL_SPAN>\r
34 \r
35                 <SPAN TYPE="LITERAL1" NO_LINE_BREAK="TRUE">\r
36                         <BEGIN>"</BEGIN>\r
37                         <END>"</END>\r
38                 </SPAN>\r
39 \r
40                 <!-- ' causes problems because not all ' are character\r
41                 definitions. I implemented an ugly and partial workaround. -->\r
42                 <SEQ TYPE="LITERAL1">' '</SEQ>\r
43                 <SEQ TYPE="LITERAL1">'!'</SEQ>\r
44                 <SEQ TYPE="LITERAL1">'"'</SEQ>\r
45                 <SEQ TYPE="LITERAL1">'$'</SEQ>\r
46                 <SEQ TYPE="LITERAL1">'%'</SEQ>\r
47                 <SEQ TYPE="LITERAL1">'/'</SEQ>\r
48                 <SEQ TYPE="LITERAL1">'('</SEQ>\r
49                 <SEQ TYPE="LITERAL1">')'</SEQ>\r
50                 <SEQ TYPE="LITERAL1">'['</SEQ>\r
51                 <SEQ TYPE="LITERAL1">']'</SEQ>\r
52                 <SEQ TYPE="LITERAL1">'+'</SEQ>\r
53                 <SEQ TYPE="LITERAL1">'-'</SEQ>\r
54                 <SEQ TYPE="LITERAL1">'*'</SEQ>\r
55                 <SEQ TYPE="LITERAL1">'='</SEQ>\r
56                 <SEQ TYPE="LITERAL1">'/'</SEQ>\r
57                 <SEQ TYPE="LITERAL1">'^'</SEQ>\r
58                 <SEQ TYPE="LITERAL1">'.'</SEQ>\r
59                 <SEQ TYPE="LITERAL1">','</SEQ>\r
60                 <SEQ TYPE="LITERAL1">':'</SEQ>\r
61                 <SEQ TYPE="LITERAL1">';'</SEQ>\r
62                 <SEQ TYPE="LITERAL1">'&lt;'</SEQ>\r
63                 <SEQ TYPE="LITERAL1">'&gt;'</SEQ>\r
64                 <SEQ TYPE="LITERAL1">'|'</SEQ>\r
65                 <SEQ TYPE="LITERAL1">'@'</SEQ>\r
66 \r
67                 <SPAN TYPE="LITERAL1" NO_WORD_BREAK="TRUE">\r
68                         <BEGIN>'</BEGIN>\r
69                         <END>'</END>\r
70                 </SPAN>\r
71 \r
72                 <SEQ TYPE="OPERATOR">..</SEQ>\r
73                 <SEQ TYPE="OPERATOR">&amp;&amp;</SEQ>\r
74                 <SEQ TYPE="OPERATOR">::</SEQ>\r
75 \r
76                 <SEQ TYPE="OPERATOR">&lt;</SEQ>\r
77                 <SEQ TYPE="OPERATOR">&gt;</SEQ>\r
78                 <SEQ TYPE="OPERATOR">+</SEQ>\r
79                 <SEQ TYPE="OPERATOR">-</SEQ>\r
80                 <SEQ TYPE="OPERATOR">*</SEQ>\r
81                 <SEQ TYPE="OPERATOR">/</SEQ>\r
82                 <SEQ TYPE="OPERATOR">%</SEQ>\r
83                 <SEQ TYPE="OPERATOR">^</SEQ>\r
84                 <SEQ TYPE="OPERATOR">=</SEQ>\r
85                 <SEQ TYPE="OPERATOR">|</SEQ>\r
86                 <SEQ TYPE="OPERATOR">@</SEQ>\r
87                 <SEQ TYPE="OPERATOR">~</SEQ>\r
88                 <SEQ TYPE="OPERATOR">!</SEQ>\r
89                 <SEQ TYPE="OPERATOR">$</SEQ>\r
90 \r
91                 <!-- Defining this as OPERATOR causes float numbers not to be\r
92                 highlighted... Which is more important? -->\r
93                 <!-- <SEQ TYPE="NULL">.</SEQ> -->\r
94 \r
95                 <KEYWORDS>\r
96                         <!-- Reserved words. -->\r
97                         <KEYWORD1>case</KEYWORD1>\r
98                         <KEYWORD1>class</KEYWORD1>\r
99                         <KEYWORD1>data</KEYWORD1>\r
100                         <KEYWORD1>default</KEYWORD1>\r
101                         <KEYWORD1>deriving</KEYWORD1>\r
102                         <KEYWORD1>do</KEYWORD1>\r
103                         <KEYWORD1>else</KEYWORD1>\r
104                         <KEYWORD1>if</KEYWORD1>\r
105                         <KEYWORD1>import</KEYWORD1>\r
106                         <KEYWORD1>in</KEYWORD1>\r
107                         <KEYWORD1>infix</KEYWORD1>\r
108                         <KEYWORD1>infixl</KEYWORD1>\r
109                         <KEYWORD1>infixr</KEYWORD1>\r
110                         <KEYWORD1>instance</KEYWORD1>\r
111                         <KEYWORD1>let</KEYWORD1>\r
112                         <KEYWORD1>module</KEYWORD1>\r
113                         <KEYWORD1>newtype</KEYWORD1>\r
114                         <KEYWORD1>of</KEYWORD1>\r
115                         <KEYWORD1>then</KEYWORD1>\r
116                         <KEYWORD1>type</KEYWORD1>\r
117                         <KEYWORD1>where</KEYWORD1>\r
118                         <KEYWORD1>_</KEYWORD1>\r
119                         <KEYWORD1>as</KEYWORD1>\r
120                         <KEYWORD1>qualified</KEYWORD1>\r
121                         <KEYWORD1>hiding</KEYWORD1>\r
122 \r
123                         <KEYWORD3>Addr</KEYWORD3>\r
124                         <KEYWORD3>Bool</KEYWORD3>\r
125                         <KEYWORD3>Bounded</KEYWORD3>\r
126                         <KEYWORD3>Char</KEYWORD3>\r
127                         <KEYWORD3>Double</KEYWORD3>\r
128                         <KEYWORD3>Either</KEYWORD3>\r
129                         <KEYWORD3>Enum</KEYWORD3>\r
130                         <KEYWORD3>Eq</KEYWORD3>\r
131                         <KEYWORD3>FilePath</KEYWORD3>\r
132                         <KEYWORD3>Float</KEYWORD3>\r
133                         <KEYWORD3>Floating</KEYWORD3>\r
134                         <KEYWORD3>Fractional</KEYWORD3>\r
135                         <KEYWORD3>Functor</KEYWORD3>\r
136                         <KEYWORD3>IO</KEYWORD3>\r
137                         <KEYWORD3>IOError</KEYWORD3>\r
138                         <KEYWORD3>IOResult</KEYWORD3>\r
139                         <KEYWORD3>Int</KEYWORD3>\r
140                         <KEYWORD3>Integer</KEYWORD3>\r
141                         <KEYWORD3>Integral</KEYWORD3>\r
142                         <KEYWORD3>Ix</KEYWORD3>\r
143                         <KEYWORD3>Maybe</KEYWORD3>\r
144                         <KEYWORD3>Monad</KEYWORD3>\r
145                         <KEYWORD3>Num</KEYWORD3>\r
146                         <KEYWORD3>Ord</KEYWORD3>\r
147                         <KEYWORD3>Ordering</KEYWORD3>\r
148                         <KEYWORD3>Ratio</KEYWORD3>\r
149                         <KEYWORD3>Rational</KEYWORD3>\r
150                         <KEYWORD3>Read</KEYWORD3>\r
151                         <KEYWORD3>ReadS</KEYWORD3>\r
152                         <KEYWORD3>Real</KEYWORD3>\r
153                         <KEYWORD3>RealFloat</KEYWORD3>\r
154                         <KEYWORD3>RealFrac</KEYWORD3>\r
155                         <KEYWORD3>Show</KEYWORD3>\r
156                         <KEYWORD3>ShowS</KEYWORD3>\r
157                         <KEYWORD3>String</KEYWORD3>\r
158 \r
159                         <LITERAL2>:</LITERAL2>\r
160                         <LITERAL2>EQ</LITERAL2>\r
161                         <LITERAL2>False</LITERAL2>\r
162                         <LITERAL2>GT</LITERAL2>\r
163                         <LITERAL2>Just</LITERAL2>\r
164                         <LITERAL2>LT</LITERAL2>\r
165                         <LITERAL2>Left</LITERAL2>\r
166                         <LITERAL2>Nothing</LITERAL2>\r
167                         <LITERAL2>Right</LITERAL2>\r
168                         <LITERAL2>True</LITERAL2>\r
169 \r
170                         <OPERATOR>quot</OPERATOR>\r
171                         <OPERATOR>rem</OPERATOR>\r
172                         <OPERATOR>div</OPERATOR>\r
173                         <OPERATOR>mod</OPERATOR>\r
174                         <OPERATOR>elem</OPERATOR>\r
175                         <OPERATOR>notElem</OPERATOR>\r
176                         <OPERATOR>seq</OPERATOR>\r
177                 </KEYWORDS>\r
178         </RULES>\r
179 \r
180 </MODE>\r