7
|
1 " Vim syntax file
|
|
2 "
|
|
3 " Language: Logtalk
|
|
4 " Maintainer: Paulo Moura <pmoura@logtalk.org>
|
308
|
5 " Last Change: June 6, 2005
|
7
|
6
|
|
7
|
|
8 " Quit when a syntax file was already loaded:
|
|
9
|
|
10 if version < 600
|
|
11 syntax clear
|
|
12 elseif exists("b:current_syntax")
|
|
13 finish
|
|
14 endif
|
|
15
|
|
16
|
|
17 " Logtalk is case sensitive:
|
|
18
|
|
19 syn case match
|
|
20
|
|
21
|
|
22 " Logtalk variables
|
|
23
|
|
24 syn match logtalkVariable "\<\(\u\|_\)\(\w\)*\>"
|
|
25
|
|
26
|
|
27 " Logtalk clause functor
|
|
28
|
|
29 syn match logtalkOperator ":-"
|
|
30
|
|
31
|
|
32 " Logtalk quoted atoms and strings
|
|
33
|
|
34 syn region logtalkString start=+"+ skip=+\\"+ end=+"+
|
|
35 syn region logtalkAtom start=+'+ skip=+\\'+ end=+'+
|
|
36
|
|
37
|
|
38 " Logtalk message sending operators
|
|
39
|
|
40 syn match logtalkOperator "::"
|
|
41 syn match logtalkOperator "\^\^"
|
|
42
|
|
43
|
|
44 " Logtalk external call
|
|
45
|
|
46 syn region logtalkExtCall matchgroup=logtalkExtCallTag start="{" matchgroup=logtalkExtCallTag end="}" contains=ALL
|
|
47
|
|
48
|
|
49 " Logtalk opening entity directives
|
|
50
|
308
|
51 syn region logtalkOpenEntityDir matchgroup=logtalkOpenEntityDirTag start=":- object(" matchgroup=logtalkOpenEntityDirTag end=")\." contains=logtalkEntity,logtalkVariable,logtalkNumber,logtalkOperator,logtalkEntityRel
|
|
52 syn region logtalkOpenEntityDir matchgroup=logtalkOpenEntityDirTag start=":- protocol(" matchgroup=logtalkOpenEntityDirTag end=")\." contains=logtalkEntity,logtalkVariable,logtalkNumber,logtalkOperator,logtalkEntityRel
|
|
53 syn region logtalkOpenEntityDir matchgroup=logtalkOpenEntityDirTag start=":- category(" matchgroup=logtalkOpenEntityDirTag end=")\." contains=logtalkEntity,logtalkVariable,logtalkNumber,logtalkOperator,logtalkEntityRel
|
7
|
54
|
|
55
|
|
56 " Logtalk closing entity directives
|
|
57
|
308
|
58 syn match logtalkCloseEntityDir ":- end_object\."
|
|
59 syn match logtalkCloseEntityDir ":- end_protocol\."
|
|
60 syn match logtalkCloseEntityDir ":- end_category\."
|
7
|
61
|
|
62
|
|
63 " Logtalk entity relations
|
|
64
|
308
|
65 syn region logtalkEntityRel matchgroup=logtalkEntityRelTag start="instantiates(" matchgroup=logtalkEntityRelTag end=")" contains=logtalkEntity,logtalkVariable,logtalkNumber,logtalkOperator contained
|
|
66 syn region logtalkEntityRel matchgroup=logtalkEntityRelTag start="specializes(" matchgroup=logtalkEntityRelTag end=")" contains=logtalkEntity,logtalkVariable,logtalkNumber,logtalkOperator contained
|
|
67 syn region logtalkEntityRel matchgroup=logtalkEntityRelTag start="extends(" matchgroup=logtalkEntityRelTag end=")" contains=logtalkEntity,logtalkVariable,logtalkNumber,logtalkOperator contained
|
|
68 syn region logtalkEntityRel matchgroup=logtalkEntityRelTag start="imports(" matchgroup=logtalkEntityRelTag end=")" contains=logtalkEntity,logtalkVariable,logtalkNumber,logtalkOperator contained
|
|
69 syn region logtalkEntityRel matchgroup=logtalkEntityRelTag start="implements(" matchgroup=logtalkEntityRelTag end=")" contains=logtalkEntity,logtalkVariable,logtalkNumber,logtalkOperator contained
|
7
|
70
|
|
71
|
|
72 " Logtalk directives
|
|
73
|
214
|
74 syn region logtalkDir matchgroup=logtalkDirTag start=":- alias(" matchgroup=logtalkDirTag end=")\." contains=ALL
|
289
|
75 syn region logtalkDir matchgroup=logtalkDirTag start=":- encoding(" matchgroup=logtalkDirTag end=")\." contains=ALL
|
7
|
76 syn region logtalkDir matchgroup=logtalkDirTag start=":- initialization(" matchgroup=logtalkDirTag end=")\." contains=ALL
|
|
77 syn region logtalkDir matchgroup=logtalkDirTag start=":- info(" matchgroup=logtalkDirTag end=")\." contains=ALL
|
214
|
78 syn region logtalkDir matchgroup=logtalkDirTag start=":- mode(" matchgroup=logtalkDirTag end=")\." contains=logtalkOperator, logtalkAtom
|
7
|
79 syn region logtalkDir matchgroup=logtalkDirTag start=":- dynamic(" matchgroup=logtalkDirTag end=")\." contains=ALL
|
|
80 syn match logtalkDirTag ":- dynamic\."
|
|
81 syn region logtalkDir matchgroup=logtalkDirTag start=":- discontiguous(" matchgroup=logtalkDirTag end=")\." contains=ALL
|
214
|
82 syn region logtalkDir matchgroup=logtalkDirTag start=":- multifile(" matchgroup=logtalkDirTag end=")\." contains=ALL
|
7
|
83 syn region logtalkDir matchgroup=logtalkDirTag start=":- public(" matchgroup=logtalkDirTag end=")\." contains=ALL
|
|
84 syn region logtalkDir matchgroup=logtalkDirTag start=":- protected(" matchgroup=logtalkDirTag end=")\." contains=ALL
|
|
85 syn region logtalkDir matchgroup=logtalkDirTag start=":- private(" matchgroup=logtalkDirTag end=")\." contains=ALL
|
|
86 syn region logtalkDir matchgroup=logtalkDirTag start=":- metapredicate(" matchgroup=logtalkDirTag end=")\." contains=ALL
|
|
87 syn region logtalkDir matchgroup=logtalkDirTag start=":- op(" matchgroup=logtalkDirTag end=")\." contains=ALL
|
|
88 syn region logtalkDir matchgroup=logtalkDirTag start=":- calls(" matchgroup=logtalkDirTag end=")\." contains=ALL
|
|
89 syn region logtalkDir matchgroup=logtalkDirTag start=":- uses(" matchgroup=logtalkDirTag end=")\." contains=ALL
|
|
90
|
|
91
|
|
92 " Logtalk built-in predicates
|
|
93
|
294
|
94 syn match logtalkBuiltIn "\<\(abolish\|c\(reate\|urrent\)\)_\(object\|protocol\|category\)\ze("
|
7
|
95
|
10
|
96 syn match logtalkBuiltIn "\<\(object\|protocol\|category\)_property\ze("
|
7
|
97
|
10
|
98 syn match logtalkBuiltIn "\<extends_\(object\|protocol\)\ze("
|
|
99 syn match logtalkBuiltIn "\<imp\(orts_category\|lements_protocol\)\ze("
|
|
100 syn match logtalkBuiltIn "\<\(instantiates\|specializes\)_class\ze("
|
7
|
101
|
10
|
102 syn match logtalkBuiltIn "\<\(abolish\|define\)_events\ze("
|
7
|
103 syn match logtalkBuiltIn "\<current_event\ze("
|
|
104
|
10
|
105 syn match logtalkBuiltIn "\<\(current\|set\)_logtalk_flag\ze("
|
7
|
106
|
214
|
107 syn match logtalkBuiltIn "\<logtalk_\(compile\|l\(ibrary_path\|oad\)\)\ze("
|
7
|
108
|
214
|
109 syn match logtalkBuiltIn "\<\(for\|retract\)all\ze("
|
7
|
110
|
|
111
|
|
112 " Logtalk built-in methods
|
|
113
|
|
114 syn match logtalkBuiltInMethod "\<parameter\ze("
|
10
|
115 syn match logtalkBuiltInMethod "\<se\(lf\|nder\)\ze("
|
7
|
116 syn match logtalkBuiltInMethod "\<this\ze("
|
|
117
|
|
118 syn match logtalkBuiltInMethod "\<current_predicate\ze("
|
|
119 syn match logtalkBuiltInMethod "\<predicate_property\ze("
|
|
120
|
294
|
121 syn match logtalkBuiltInMethod "\<a\(bolish\|ssert\(a\|z\)\)\ze("
|
7
|
122 syn match logtalkBuiltInMethod "\<clause\ze("
|
294
|
123 syn match logtalkBuiltInMethod "\<retract\(all\)\?\ze("
|
7
|
124
|
10
|
125 syn match logtalkBuiltInMethod "\<\(bag\|set\)of\ze("
|
|
126 syn match logtalkBuiltInMethod "\<f\(ind\|or\)all\ze("
|
7
|
127
|
|
128 syn match logtalkBuiltInMethod "\<before\ze("
|
|
129 syn match logtalkBuiltInMethod "\<after\ze("
|
|
130
|
214
|
131 syn match logtalkBuiltInMethod "\<expand_term\ze("
|
7
|
132 syn match logtalkBuiltInMethod "\<phrase\ze("
|
|
133
|
|
134
|
|
135 " Mode operators
|
|
136
|
|
137 syn match logtalkOperator "?"
|
|
138 syn match logtalkOperator "@"
|
|
139
|
|
140
|
|
141 " Control constructs
|
|
142
|
|
143 syn match logtalkKeyword "\<true\>"
|
|
144 syn match logtalkKeyword "\<fail\>"
|
10
|
145 syn match logtalkKeyword "\<ca\(ll\|tch\)\ze("
|
7
|
146 syn match logtalkOperator "!"
|
10
|
147 " syn match logtalkOperator ","
|
7
|
148 syn match logtalkOperator ";"
|
|
149 syn match logtalkOperator "-->"
|
|
150 syn match logtalkOperator "->"
|
|
151 syn match logtalkKeyword "\<throw\ze("
|
|
152
|
|
153
|
|
154 " Term unification
|
|
155
|
|
156 syn match logtalkOperator "="
|
|
157 syn match logtalkKeyword "\<unify_with_occurs_check\ze("
|
|
158 syn match logtalkOperator "\\="
|
|
159
|
|
160
|
|
161 " Term testing
|
|
162
|
|
163 syn match logtalkKeyword "\<var\ze("
|
294
|
164 syn match logtalkKeyword "\<atom\(ic\)\?\ze("
|
7
|
165 syn match logtalkKeyword "\<integer\ze("
|
|
166 syn match logtalkKeyword "\<float\ze("
|
|
167 syn match logtalkKeyword "\<compound\ze("
|
10
|
168 syn match logtalkKeyword "\<n\(onvar\|umber\)\ze("
|
7
|
169
|
|
170
|
|
171 " Term comparison
|
|
172
|
|
173 syn match logtalkOperator "@=<"
|
|
174 syn match logtalkOperator "=="
|
|
175 syn match logtalkOperator "\\=="
|
|
176 syn match logtalkOperator "@<"
|
|
177 syn match logtalkOperator "@>"
|
|
178 syn match logtalkOperator "@>="
|
|
179
|
|
180
|
|
181 " Term creation and decomposition
|
|
182
|
|
183 syn match logtalkKeyword "\<functor\ze("
|
|
184 syn match logtalkKeyword "\<arg\ze("
|
|
185 syn match logtalkOperator "=\.\."
|
|
186 syn match logtalkKeyword "\<copy_term\ze("
|
|
187
|
|
188
|
|
189 " Arithemtic evaluation
|
|
190
|
214
|
191 syn match logtalkOperator "\<is\>"
|
7
|
192
|
|
193
|
|
194 " Arithemtic comparison
|
|
195
|
|
196 syn match logtalkOperator "=:="
|
|
197 syn match logtalkOperator "=\\="
|
|
198 syn match logtalkOperator "<"
|
|
199 syn match logtalkOperator "=<"
|
|
200 syn match logtalkOperator ">"
|
|
201 syn match logtalkOperator ">="
|
|
202
|
|
203
|
|
204 " Stream selection and control
|
|
205
|
294
|
206 syn match logtalkKeyword "\<\(current\|set\)_\(in\|out\)put\ze("
|
7
|
207 syn match logtalkKeyword "\<open\ze("
|
|
208 syn match logtalkKeyword "\<close\ze("
|
|
209 syn match logtalkKeyword "\<flush_output\ze("
|
|
210 syn match logtalkKeyword "\<flush_output\>"
|
|
211 syn match logtalkKeyword "\<stream_property\ze("
|
|
212 syn match logtalkKeyword "\<at_end_of_stream\ze("
|
|
213 syn match logtalkKeyword "\<at_end_of_stream\>"
|
|
214 syn match logtalkKeyword "\<set_stream_position\ze("
|
|
215
|
|
216
|
10
|
217 " Character and byte input/output
|
7
|
218
|
294
|
219 syn match logtalkKeyword "\<\(get\|p\(eek\|ut\)\)_\(c\(har\|ode\)\|byte\)\ze("
|
7
|
220 syn match logtalkKeyword "\<nl\ze("
|
|
221 syn match logtalkKeyword "\<nl\>"
|
|
222
|
|
223
|
|
224 " Term input/output
|
|
225
|
294
|
226 syn match logtalkKeyword "\<read\(_term\)\?\ze("
|
|
227 syn match logtalkKeyword "\<write\(q\|_\(canonical\|term\)\)\?\ze("
|
|
228 syn match logtalkKeyword "\<\(current_\)\?op\ze("
|
|
229 syn match logtalkKeyword "\<\(current\)\?char_conversion\ze("
|
7
|
230
|
|
231
|
|
232 " Logic and control
|
|
233
|
|
234 syn match logtalkOperator "\\+"
|
|
235 syn match logtalkKeyword "\<once\ze("
|
|
236 syn match logtalkKeyword "\<repeat\>"
|
|
237
|
|
238
|
|
239 " Atomic term processing
|
|
240
|
294
|
241 syn match logtalkKeyword "\<atom_\(length\|c\(hars\|o\(ncat\|des\)\)\)\ze("
|
7
|
242 syn match logtalkKeyword "\<sub_atom\ze("
|
|
243 syn match logtalkKeyword "\<char_code\ze("
|
294
|
244 syn match logtalkKeyword "\<number_\(c\(hars\|odes\)\)\ze("
|
7
|
245
|
|
246
|
|
247 " Implementation defined hooks functions
|
|
248
|
10
|
249 syn match logtalkKeyword "\<\(current\|set\)_prolog_flag\ze("
|
7
|
250 syn match logtalkKeyword "\<halt\ze("
|
|
251 syn match logtalkKeyword "\<halt\>"
|
|
252
|
|
253
|
|
254 " Evaluable functors
|
|
255
|
|
256 syn match logtalkOperator "+"
|
|
257 syn match logtalkOperator "-"
|
|
258 syn match logtalkOperator "\*"
|
|
259 syn match logtalkOperator "//"
|
|
260 syn match logtalkOperator "/"
|
294
|
261 syn match logtalkKeyword "\<r\(ound\|em\)\ze("
|
7
|
262 syn match logtalkKeyword "\<rem\>"
|
|
263 syn match logtalkKeyword "\<mod\ze("
|
|
264 syn match logtalkKeyword "\<mod\>"
|
|
265 syn match logtalkKeyword "\<abs\ze("
|
|
266 syn match logtalkKeyword "\<sign\ze("
|
294
|
267 syn match logtalkKeyword "\<flo\(or\|at\(_\(integer\|fractional\)_part\)\?\)\ze("
|
7
|
268 syn match logtalkKeyword "\<truncate\ze("
|
|
269 syn match logtalkKeyword "\<ceiling\ze("
|
|
270
|
|
271
|
|
272 " Other arithemtic functors
|
|
273
|
|
274 syn match logtalkOperator "\*\*"
|
10
|
275 syn match logtalkKeyword "\<s\(in\|qrt\)\ze("
|
7
|
276 syn match logtalkKeyword "\<cos\ze("
|
|
277 syn match logtalkKeyword "\<atan\ze("
|
|
278 syn match logtalkKeyword "\<exp\ze("
|
|
279 syn match logtalkKeyword "\<log\ze("
|
|
280
|
|
281
|
|
282 " Bitwise functors
|
|
283
|
|
284 syn match logtalkOperator ">>"
|
|
285 syn match logtalkOperator "<<"
|
|
286 syn match logtalkOperator "/\\"
|
|
287 syn match logtalkOperator "\\/"
|
|
288 syn match logtalkOperator "\\"
|
|
289
|
|
290
|
294
|
291 " Logtalk list operator
|
|
292
|
|
293 syn match logtalkOperator "|"
|
|
294
|
|
295
|
|
296 " Logtalk numbers
|
|
297
|
|
298 syn match logtalkNumber "\<\d\+\>"
|
|
299 syn match logtalkNumber "\<\d\+\.\d\+\>"
|
|
300 syn match logtalkNumber "\<\d\+[eE][-+]\=\d\+\>"
|
|
301 syn match logtalkNumber "\<\d\+\.\d\+[eE][-+]\=\d\+\>"
|
308
|
302 syn match logtalkNumber "\<0'.\>"
|
294
|
303 syn match logtalkNumber "\<0b[0-1]\+\>"
|
308
|
304 syn match logtalkNumber "\<0o\o\+\>"
|
294
|
305 syn match logtalkNumber "\<0x\x\+\>"
|
|
306
|
|
307
|
7
|
308 " Logtalk end-of-clause
|
|
309
|
|
310 syn match logtalkOperator "\."
|
|
311
|
|
312
|
|
313 " Logtalk comments
|
|
314
|
308
|
315 syn region logtalkBlockComment start="/\*" end="\*/" fold
|
7
|
316 syn match logtalkLineComment "%.*"
|
|
317
|
|
318
|
308
|
319 " Logtalk entity folding
|
|
320
|
|
321 syn region logtalkEntity transparent fold keepend start=":- object(" end=":- end_object\." contains=ALL
|
|
322 syn region logtalkEntity transparent fold keepend start=":- protocol(" end=":- end_protocol\." contains=ALL
|
|
323 syn region logtalkEntity transparent fold keepend start=":- category(" end=":- end_category\." contains=ALL
|
|
324
|
|
325
|
214
|
326 syn sync ccomment logtalkBlockComment maxlines=50
|
7
|
327
|
|
328
|
|
329 " Define the default highlighting.
|
|
330 " For version 5.7 and earlier: only when not done already
|
|
331 " For version 5.8 and later: only when an item doesn't have highlighting yet
|
|
332
|
|
333 if version >= 508 || !exists("did_logtalk_syn_inits")
|
|
334 if version < 508
|
|
335 let did_logtalk_syn_inits = 1
|
|
336 command -nargs=+ HiLink hi link <args>
|
|
337 else
|
|
338 command -nargs=+ HiLink hi def link <args>
|
|
339 endif
|
294
|
340
|
7
|
341 HiLink logtalkBlockComment Comment
|
|
342 HiLink logtalkLineComment Comment
|
|
343
|
|
344 HiLink logtalkOpenEntityDir Normal
|
|
345 HiLink logtalkOpenEntityDirTag PreProc
|
|
346
|
|
347 HiLink logtalkEntity Normal
|
|
348
|
|
349 HiLink logtalkEntityRel Normal
|
|
350 HiLink logtalkEntityRelTag PreProc
|
|
351
|
|
352 HiLink logtalkCloseEntityDir PreProc
|
|
353
|
|
354 HiLink logtalkDir Normal
|
|
355 HiLink logtalkDirTag PreProc
|
|
356
|
|
357 HiLink logtalkAtom String
|
|
358 HiLink logtalkString String
|
|
359
|
|
360 HiLink logtalkNumber Number
|
|
361
|
|
362 HiLink logtalkKeyword Keyword
|
|
363
|
|
364 HiLink logtalkBuiltIn Keyword
|
|
365 HiLink logtalkBuiltInMethod Keyword
|
|
366
|
|
367 HiLink logtalkOperator Operator
|
|
368
|
|
369 HiLink logtalkExtCall Normal
|
|
370 HiLink logtalkExtCallTag Operator
|
|
371
|
|
372 HiLink logtalkVariable Identifier
|
|
373
|
|
374 delcommand HiLink
|
|
375
|
|
376 endif
|
|
377
|
|
378
|
|
379 let b:current_syntax = "logtalk"
|
|
380
|
|
381 setlocal ts=4
|
308
|
382 setlocal fdm=syntax
|
|
383 setlocal fdc=2
|