...
1<lexer>
2 <config>
3 <name>Haskell</name>
4 <alias>haskell</alias>
5 <alias>hs</alias>
6 <filename>*.hs</filename>
7 <mime_type>text/x-haskell</mime_type>
8 </config>
9 <rules>
10 <state name="escape">
11 <rule pattern="[abfnrtv"\'&\\]">
12 <token type="LiteralStringEscape"/>
13 <pop depth="1"/>
14 </rule>
15 <rule pattern="\^[][\p{Lu}@^_]">
16 <token type="LiteralStringEscape"/>
17 <pop depth="1"/>
18 </rule>
19 <rule pattern="NUL|SOH|[SE]TX|EOT|ENQ|ACK|BEL|BS|HT|LF|VT|FF|CR|S[OI]|DLE|DC[1-4]|NAK|SYN|ETB|CAN|EM|SUB|ESC|[FGRU]S|SP|DEL">
20 <token type="LiteralStringEscape"/>
21 <pop depth="1"/>
22 </rule>
23 <rule pattern="o[0-7]+">
24 <token type="LiteralStringEscape"/>
25 <pop depth="1"/>
26 </rule>
27 <rule pattern="x[\da-fA-F]+">
28 <token type="LiteralStringEscape"/>
29 <pop depth="1"/>
30 </rule>
31 <rule pattern="\d+">
32 <token type="LiteralStringEscape"/>
33 <pop depth="1"/>
34 </rule>
35 <rule pattern="\s+\\">
36 <token type="LiteralStringEscape"/>
37 <pop depth="1"/>
38 </rule>
39 </state>
40 <state name="root">
41 <rule pattern="\s+">
42 <token type="Text"/>
43 </rule>
44 <rule pattern="--(?![!#$%&*+./<=>?@^|_~:\\]).*?$">
45 <token type="CommentSingle"/>
46 </rule>
47 <rule pattern="\{-">
48 <token type="CommentMultiline"/>
49 <push state="comment"/>
50 </rule>
51 <rule pattern="\bimport\b">
52 <token type="KeywordReserved"/>
53 <push state="import"/>
54 </rule>
55 <rule pattern="\bmodule\b">
56 <token type="KeywordReserved"/>
57 <push state="module"/>
58 </rule>
59 <rule pattern="\berror\b">
60 <token type="NameException"/>
61 </rule>
62 <rule pattern="\b(case|class|data|default|deriving|do|else|family|if|in|infix[lr]?|instance|let|newtype|of|then|type|where|_)(?!\')\b">
63 <token type="KeywordReserved"/>
64 </rule>
65 <rule pattern="'[^\\]'">
66 <token type="LiteralStringChar"/>
67 </rule>
68 <rule pattern="^[_\p{Ll}][\w\']*">
69 <token type="NameFunction"/>
70 </rule>
71 <rule pattern="'?[_\p{Ll}][\w']*">
72 <token type="Name"/>
73 </rule>
74 <rule pattern="('')?[\p{Lu}][\w\']*">
75 <token type="KeywordType"/>
76 </rule>
77 <rule pattern="(')[\p{Lu}][\w\']*">
78 <token type="KeywordType"/>
79 </rule>
80 <rule pattern="(')\[[^\]]*\]">
81 <token type="KeywordType"/>
82 </rule>
83 <rule pattern="(')\([^)]*\)">
84 <token type="KeywordType"/>
85 </rule>
86 <rule pattern="\\(?![:!#$%&*+.\\/<=>?@^|~-]+)">
87 <token type="NameFunction"/>
88 </rule>
89 <rule pattern="(<-|::|->|=>|=)(?![:!#$%&*+.\\/<=>?@^|~-]+)">
90 <token type="OperatorWord"/>
91 </rule>
92 <rule pattern=":[:!#$%&*+.\\/<=>?@^|~-]*">
93 <token type="KeywordType"/>
94 </rule>
95 <rule pattern="[:!#$%&*+.\\/<=>?@^|~-]+">
96 <token type="Operator"/>
97 </rule>
98 <rule pattern="\d+[eE][+-]?\d+">
99 <token type="LiteralNumberFloat"/>
100 </rule>
101 <rule pattern="\d+\.\d+([eE][+-]?\d+)?">
102 <token type="LiteralNumberFloat"/>
103 </rule>
104 <rule pattern="0[oO][0-7]+">
105 <token type="LiteralNumberOct"/>
106 </rule>
107 <rule pattern="0[xX][\da-fA-F]+">
108 <token type="LiteralNumberHex"/>
109 </rule>
110 <rule pattern="\d+">
111 <token type="LiteralNumberInteger"/>
112 </rule>
113 <rule pattern="'">
114 <token type="LiteralStringChar"/>
115 <push state="character"/>
116 </rule>
117 <rule pattern=""">
118 <token type="LiteralString"/>
119 <push state="string"/>
120 </rule>
121 <rule pattern="\[\]">
122 <token type="KeywordType"/>
123 </rule>
124 <rule pattern="\(\)">
125 <token type="NameBuiltin"/>
126 </rule>
127 <rule pattern="[][(),;`{}]">
128 <token type="Punctuation"/>
129 </rule>
130 </state>
131 <state name="import">
132 <rule pattern="\s+">
133 <token type="Text"/>
134 </rule>
135 <rule pattern=""">
136 <token type="LiteralString"/>
137 <push state="string"/>
138 </rule>
139 <rule pattern="\)">
140 <token type="Punctuation"/>
141 <pop depth="1"/>
142 </rule>
143 <rule pattern="qualified\b">
144 <token type="Keyword"/>
145 </rule>
146 <rule pattern="([\p{Lu}][\w.]*)(\s+)(as)(\s+)([\p{Lu}][\w.]*)">
147 <bygroups>
148 <token type="NameNamespace"/>
149 <token type="Text"/>
150 <token type="Keyword"/>
151 <token type="Text"/>
152 <token type="Name"/>
153 </bygroups>
154 <pop depth="1"/>
155 </rule>
156 <rule pattern="([\p{Lu}][\w.]*)(\s+)(hiding)(\s+)(\()">
157 <bygroups>
158 <token type="NameNamespace"/>
159 <token type="Text"/>
160 <token type="Keyword"/>
161 <token type="Text"/>
162 <token type="Punctuation"/>
163 </bygroups>
164 <push state="funclist"/>
165 </rule>
166 <rule pattern="([\p{Lu}][\w.]*)(\s+)(\()">
167 <bygroups>
168 <token type="NameNamespace"/>
169 <token type="Text"/>
170 <token type="Punctuation"/>
171 </bygroups>
172 <push state="funclist"/>
173 </rule>
174 <rule pattern="[\w.]+">
175 <token type="NameNamespace"/>
176 <pop depth="1"/>
177 </rule>
178 </state>
179 <state name="module">
180 <rule pattern="\s+">
181 <token type="Text"/>
182 </rule>
183 <rule pattern="([\p{Lu}][\w.]*)(\s+)(\()">
184 <bygroups>
185 <token type="NameNamespace"/>
186 <token type="Text"/>
187 <token type="Punctuation"/>
188 </bygroups>
189 <push state="funclist"/>
190 </rule>
191 <rule pattern="[\p{Lu}][\w.]*">
192 <token type="NameNamespace"/>
193 <pop depth="1"/>
194 </rule>
195 </state>
196 <state name="funclist">
197 <rule pattern="\s+">
198 <token type="Text"/>
199 </rule>
200 <rule pattern="[\p{Lu}]\w*">
201 <token type="KeywordType"/>
202 </rule>
203 <rule pattern="(_[\w\']+|[\p{Ll}][\w\']*)">
204 <token type="NameFunction"/>
205 </rule>
206 <rule pattern="--(?![!#$%&*+./<=>?@^|_~:\\]).*?$">
207 <token type="CommentSingle"/>
208 </rule>
209 <rule pattern="\{-">
210 <token type="CommentMultiline"/>
211 <push state="comment"/>
212 </rule>
213 <rule pattern=",">
214 <token type="Punctuation"/>
215 </rule>
216 <rule pattern="[:!#$%&*+.\\/<=>?@^|~-]+">
217 <token type="Operator"/>
218 </rule>
219 <rule pattern="\(">
220 <token type="Punctuation"/>
221 <push state="funclist" state="funclist"/>
222 </rule>
223 <rule pattern="\)">
224 <token type="Punctuation"/>
225 <pop depth="2"/>
226 </rule>
227 </state>
228 <state name="comment">
229 <rule pattern="[^-{}]+">
230 <token type="CommentMultiline"/>
231 </rule>
232 <rule pattern="\{-">
233 <token type="CommentMultiline"/>
234 <push/>
235 </rule>
236 <rule pattern="-\}">
237 <token type="CommentMultiline"/>
238 <pop depth="1"/>
239 </rule>
240 <rule pattern="[-{}]">
241 <token type="CommentMultiline"/>
242 </rule>
243 </state>
244 <state name="character">
245 <rule pattern="[^\\']'">
246 <token type="LiteralStringChar"/>
247 <pop depth="1"/>
248 </rule>
249 <rule pattern="\\">
250 <token type="LiteralStringEscape"/>
251 <push state="escape"/>
252 </rule>
253 <rule pattern="'">
254 <token type="LiteralStringChar"/>
255 <pop depth="1"/>
256 </rule>
257 </state>
258 <state name="string">
259 <rule pattern="[^\\"]+">
260 <token type="LiteralString"/>
261 </rule>
262 <rule pattern="\\">
263 <token type="LiteralStringEscape"/>
264 <push state="escape"/>
265 </rule>
266 <rule pattern=""">
267 <token type="LiteralString"/>
268 <pop depth="1"/>
269 </rule>
270 </state>
271 </rules>
272</lexer>
View as plain text