blob: b8218da3eff809adfad3c3b0aad05e1dc428e617 [file] [log] [blame]
Bram Moolenaar071d4272004-06-13 20:20:40 +00001" Vim syntax file
2"
3" Language: Logtalk
4" Maintainer: Paulo Moura <pmoura@logtalk.org>
5" Last Change: 2004 May 16
6
7
8" Quit when a syntax file was already loaded:
9
10if version < 600
11 syntax clear
12elseif exists("b:current_syntax")
13 finish
14endif
15
16
17" Logtalk is case sensitive:
18
19syn case match
20
21
22" Logtalk variables
23
24syn match logtalkVariable "\<\(\u\|_\)\(\w\)*\>"
25
26
27" Logtalk clause functor
28
29syn match logtalkOperator ":-"
30
31
32" Logtalk quoted atoms and strings
33
34syn region logtalkString start=+"+ skip=+\\"+ end=+"+
35syn region logtalkAtom start=+'+ skip=+\\'+ end=+'+
36
37
38" Logtalk message sending operators
39
40syn match logtalkOperator "::"
41syn match logtalkOperator "\^\^"
42
43
44" Logtalk external call
45
46syn region logtalkExtCall matchgroup=logtalkExtCallTag start="{" matchgroup=logtalkExtCallTag end="}" contains=ALL
47
48
49" Logtalk opening entity directives
50
51syn region logtalkOpenEntityDir matchgroup=logtalkOpenEntityDirTag start=":- object(" matchgroup=logtalkOpenEntityDirTag end=")\." contains=ALL
52syn region logtalkOpenEntityDir matchgroup=logtalkOpenEntityDirTag start=":- protocol(" matchgroup=logtalkOpenEntityDirTag end=")\." contains=ALL
53syn region logtalkOpenEntityDir matchgroup=logtalkOpenEntityDirTag start=":- category(" matchgroup=logtalkOpenEntityDirTag end=")\." contains=ALL
54
55
56" Logtalk closing entity directives
57
58syn match logtalkCloseEntityDir ":- end_object\."
59syn match logtalkCloseEntityDir ":- end_protocol\."
60syn match logtalkCloseEntityDir ":- end_category\."
61
62
63" Logtalk entity relations
64
65syn region logtalkEntityRel matchgroup=logtalkEntityRelTag start="instantiates(" matchgroup=logtalkEntityRelTag end=")" contains=logtalkEntity contained
66syn region logtalkEntityRel matchgroup=logtalkEntityRelTag start="specializes(" matchgroup=logtalkEntityRelTag end=")" contains=logtalkEntity contained
67syn region logtalkEntityRel matchgroup=logtalkEntityRelTag start="extends(" matchgroup=logtalkEntityRelTag end=")" contains=logtalkEntity contained
68syn region logtalkEntityRel matchgroup=logtalkEntityRelTag start="imports(" matchgroup=logtalkEntityRelTag end=")" contains=logtalkEntity contained
69syn region logtalkEntityRel matchgroup=logtalkEntityRelTag start="implements(" matchgroup=logtalkEntityRelTag end=")" contains=logtalkEntity contained
70
71
72" Logtalk directives
73
74syn region logtalkDir matchgroup=logtalkDirTag start=":- initialization(" matchgroup=logtalkDirTag end=")\." contains=ALL
75syn region logtalkDir matchgroup=logtalkDirTag start=":- info(" matchgroup=logtalkDirTag end=")\." contains=ALL
76syn region logtalkDir matchgroup=logtalkDirTag start=":- mode(" matchgroup=logtalkDirTag end=")\." contains=logtalkOperator,logtalkAtom
77syn region logtalkDir matchgroup=logtalkDirTag start=":- dynamic(" matchgroup=logtalkDirTag end=")\." contains=ALL
78syn match logtalkDirTag ":- dynamic\."
79syn region logtalkDir matchgroup=logtalkDirTag start=":- discontiguous(" matchgroup=logtalkDirTag end=")\." contains=ALL
80syn region logtalkDir matchgroup=logtalkDirTag start=":- public(" matchgroup=logtalkDirTag end=")\." contains=ALL
81syn region logtalkDir matchgroup=logtalkDirTag start=":- protected(" matchgroup=logtalkDirTag end=")\." contains=ALL
82syn region logtalkDir matchgroup=logtalkDirTag start=":- private(" matchgroup=logtalkDirTag end=")\." contains=ALL
83syn region logtalkDir matchgroup=logtalkDirTag start=":- metapredicate(" matchgroup=logtalkDirTag end=")\." contains=ALL
84syn region logtalkDir matchgroup=logtalkDirTag start=":- op(" matchgroup=logtalkDirTag end=")\." contains=ALL
85syn region logtalkDir matchgroup=logtalkDirTag start=":- calls(" matchgroup=logtalkDirTag end=")\." contains=ALL
86syn region logtalkDir matchgroup=logtalkDirTag start=":- uses(" matchgroup=logtalkDirTag end=")\." contains=ALL
87
88
89" Logtalk built-in predicates
90
91syn match logtalkBuiltIn "\<current_object\ze("
92syn match logtalkBuiltIn "\<current_protocol\ze("
93syn match logtalkBuiltIn "\<current_category\ze("
94
95syn match logtalkBuiltIn "\<create_object\ze("
96syn match logtalkBuiltIn "\<create_protocol\ze("
97syn match logtalkBuiltIn "\<create_category\ze("
98
99syn match logtalkBuiltIn "\<object_property\ze("
100syn match logtalkBuiltIn "\<protocol_property\ze("
101syn match logtalkBuiltIn "\<category_property\ze("
102
103syn match logtalkBuiltIn "\<abolish_object\ze("
104syn match logtalkBuiltIn "\<abolish_protocol\ze("
105syn match logtalkBuiltIn "\<abolish_category\ze("
106
107syn match logtalkBuiltIn "\<extends_object\ze("
108syn match logtalkBuiltIn "\<extends_protocol\ze("
109syn match logtalkBuiltIn "\<implements_protocol\ze("
110syn match logtalkBuiltIn "\<instantiates_class\ze("
111syn match logtalkBuiltIn "\<specializes_class\ze("
112syn match logtalkBuiltIn "\<imports_category\ze("
113
114syn match logtalkBuiltIn "\<abolish_events\ze("
115syn match logtalkBuiltIn "\<current_event\ze("
116syn match logtalkBuiltIn "\<define_events\ze("
117
118syn match logtalkBuiltIn "\<current_logtalk_flag\ze("
119syn match logtalkBuiltIn "\<set_logtalk_flag\ze("
120
121syn match logtalkBuiltIn "\<logtalk_compile\ze("
122syn match logtalkBuiltIn "\<logtalk_load\ze("
123
124syn match logtalkBuiltIn "\<forall\ze("
125syn match logtalkBuiltIn "\<retractall\ze("
126
127
128" Logtalk built-in methods
129
130syn match logtalkBuiltInMethod "\<parameter\ze("
131syn match logtalkBuiltInMethod "\<self\ze("
132syn match logtalkBuiltInMethod "\<sender\ze("
133syn match logtalkBuiltInMethod "\<this\ze("
134
135syn match logtalkBuiltInMethod "\<current_predicate\ze("
136syn match logtalkBuiltInMethod "\<predicate_property\ze("
137
138syn match logtalkBuiltInMethod "\<abolish\ze("
139syn match logtalkBuiltInMethod "\<asserta\ze("
140syn match logtalkBuiltInMethod "\<assertz\ze("
141syn match logtalkBuiltInMethod "\<clause\ze("
142syn match logtalkBuiltInMethod "\<retract\ze("
143syn match logtalkBuiltInMethod "\<retractall\ze("
144
145syn match logtalkBuiltInMethod "\<bagof\ze("
146syn match logtalkBuiltInMethod "\<findall\ze("
147syn match logtalkBuiltInMethod "\<forall\ze("
148syn match logtalkBuiltInMethod "\<setof\ze("
149
150syn match logtalkBuiltInMethod "\<before\ze("
151syn match logtalkBuiltInMethod "\<after\ze("
152
153syn match logtalkBuiltInMethod "\<phrase\ze("
154
155
156" Mode operators
157
158syn match logtalkOperator "?"
159syn match logtalkOperator "@"
160
161
162" Control constructs
163
164syn match logtalkKeyword "\<true\>"
165syn match logtalkKeyword "\<fail\>"
166syn match logtalkKeyword "\<call\ze("
167syn match logtalkOperator "!"
168syn match logtalkOperator ","
169syn match logtalkOperator ";"
170syn match logtalkOperator "-->"
171syn match logtalkOperator "->"
172syn match logtalkKeyword "\<catch\ze("
173syn match logtalkKeyword "\<throw\ze("
174
175
176" Term unification
177
178syn match logtalkOperator "="
179syn match logtalkKeyword "\<unify_with_occurs_check\ze("
180syn match logtalkOperator "\\="
181
182
183" Term testing
184
185syn match logtalkKeyword "\<var\ze("
186syn match logtalkKeyword "\<atom\ze("
187syn match logtalkKeyword "\<integer\ze("
188syn match logtalkKeyword "\<float\ze("
189syn match logtalkKeyword "\<atomic\ze("
190syn match logtalkKeyword "\<compound\ze("
191syn match logtalkKeyword "\<nonvar\ze("
192syn match logtalkKeyword "\<number\ze("
193
194
195" Term comparison
196
197syn match logtalkOperator "@=<"
198syn match logtalkOperator "=="
199syn match logtalkOperator "\\=="
200syn match logtalkOperator "@<"
201syn match logtalkOperator "@>"
202syn match logtalkOperator "@>="
203
204
205" Term creation and decomposition
206
207syn match logtalkKeyword "\<functor\ze("
208syn match logtalkKeyword "\<arg\ze("
209syn match logtalkOperator "=\.\."
210syn match logtalkKeyword "\<copy_term\ze("
211
212
213" Arithemtic evaluation
214
215syn keyword logtalkOperator is
216
217
218" Arithemtic comparison
219
220syn match logtalkOperator "=:="
221syn match logtalkOperator "=\\="
222syn match logtalkOperator "<"
223syn match logtalkOperator "=<"
224syn match logtalkOperator ">"
225syn match logtalkOperator ">="
226
227
228" Stream selection and control
229
230syn match logtalkKeyword "\<current_input\ze("
231syn match logtalkKeyword "\<current_output\ze("
232syn match logtalkKeyword "\<set_input\ze("
233syn match logtalkKeyword "\<set_output\ze("
234syn match logtalkKeyword "\<open\ze("
235syn match logtalkKeyword "\<close\ze("
236syn match logtalkKeyword "\<flush_output\ze("
237syn match logtalkKeyword "\<flush_output\>"
238syn match logtalkKeyword "\<stream_property\ze("
239syn match logtalkKeyword "\<at_end_of_stream\ze("
240syn match logtalkKeyword "\<at_end_of_stream\>"
241syn match logtalkKeyword "\<set_stream_position\ze("
242
243
244" Character input/output
245
246syn match logtalkKeyword "\<get_char\ze("
247syn match logtalkKeyword "\<get_code\ze("
248syn match logtalkKeyword "\<peek_char\ze("
249syn match logtalkKeyword "\<peek_code\ze("
250syn match logtalkKeyword "\<put_char\ze("
251syn match logtalkKeyword "\<put_code\ze("
252syn match logtalkKeyword "\<nl\ze("
253syn match logtalkKeyword "\<nl\>"
254
255
256" Byte input/output
257
258syn match logtalkKeyword "\<get_byte\ze("
259syn match logtalkKeyword "\<peek_byte\ze("
260syn match logtalkKeyword "\<put_byte\ze("
261
262
263" Term input/output
264
265syn match logtalkKeyword "\<read_term\ze("
266syn match logtalkKeyword "\<read\ze("
267syn match logtalkKeyword "\<write_term\ze("
268syn match logtalkKeyword "\<write\ze("
269syn match logtalkKeyword "\<writeq\ze("
270syn match logtalkKeyword "\<write_canonical\ze("
271syn match logtalkKeyword "\<op\ze("
272syn match logtalkKeyword "\<current_op\ze("
273syn match logtalkKeyword "\<char_conversion\ze("
274syn match logtalkKeyword "\<current_char_conversion\ze("
275
276
277" Logic and control
278
279syn match logtalkOperator "\\+"
280syn match logtalkKeyword "\<once\ze("
281syn match logtalkKeyword "\<repeat\>"
282
283
284" Atomic term processing
285
286syn match logtalkKeyword "\<atom_length\ze("
287syn match logtalkKeyword "\<atom_concat\ze("
288syn match logtalkKeyword "\<sub_atom\ze("
289syn match logtalkKeyword "\<atom_chars\ze("
290syn match logtalkKeyword "\<atom_codes\ze("
291syn match logtalkKeyword "\<char_code\ze("
292syn match logtalkKeyword "\<number_chars\ze("
293syn match logtalkKeyword "\<number_codes\ze("
294
295
296" Implementation defined hooks functions
297
298syn match logtalkKeyword "\<set_prolog_flag\ze("
299syn match logtalkKeyword "\<current_prolog_flag\ze("
300syn match logtalkKeyword "\<halt\ze("
301syn match logtalkKeyword "\<halt\>"
302
303
304" Evaluable functors
305
306syn match logtalkOperator "+"
307syn match logtalkOperator "-"
308syn match logtalkOperator "\*"
309syn match logtalkOperator "//"
310syn match logtalkOperator "/"
311syn match logtalkKeyword "\<rem(?=[(])"
312syn match logtalkKeyword "\<rem\>"
313syn match logtalkKeyword "\<mod\ze("
314syn match logtalkKeyword "\<mod\>"
315syn match logtalkKeyword "\<abs\ze("
316syn match logtalkKeyword "\<sign\ze("
317syn match logtalkKeyword "\<float_integer_part\ze("
318syn match logtalkKeyword "\<float_fractional_part\ze("
319syn match logtalkKeyword "\<float\ze("
320syn match logtalkKeyword "\<floor\ze("
321syn match logtalkKeyword "\<truncate\ze("
322syn match logtalkKeyword "\<round\ze("
323syn match logtalkKeyword "\<ceiling\ze("
324
325
326" Other arithemtic functors
327
328syn match logtalkOperator "\*\*"
329syn match logtalkKeyword "\<sin\ze("
330syn match logtalkKeyword "\<cos\ze("
331syn match logtalkKeyword "\<atan\ze("
332syn match logtalkKeyword "\<exp\ze("
333syn match logtalkKeyword "\<log\ze("
334syn match logtalkKeyword "\<sqrt\ze("
335
336
337" Bitwise functors
338
339syn match logtalkOperator ">>"
340syn match logtalkOperator "<<"
341syn match logtalkOperator "/\\"
342syn match logtalkOperator "\\/"
343syn match logtalkOperator "\\"
344
345
346" Logtalk end-of-clause
347
348syn match logtalkOperator "\."
349
350
351" Logtalk list operator
352
353syn match logtalkOperator "|"
354
355
356" Logtalk comments
357
358syn region logtalkBlockComment start="/\*" end="\*/"
359syn match logtalkLineComment "%.*"
360
361
362" Logtalk numbers
363
364syn match logtalkNumber "\<[0-9]\+\>"
365syn match logtalkNumber "\<[0-9]\+\.[0-9]\+\>"
366syn match logtalkNumber "\<[0-9]\+\.[0-9]\+[eE][-+][0-9]+\>"
367syn match logtalkNumber "\<0'[0-9a-zA-Z]\>"
368syn match logtalkNumber "\<0b[0-1]\+\>"
369syn match logtalkNumber "\<0o[0-7]\+\>"
370syn match logtalkNumber "\<0x[0-9a-fA-F]\+\>"
371
372
373syn sync ccomment maxlines=50
374
375
376" Define the default highlighting.
377" For version 5.7 and earlier: only when not done already
378" For version 5.8 and later: only when an item doesn't have highlighting yet
379
380if version >= 508 || !exists("did_logtalk_syn_inits")
381 if version < 508
382 let did_logtalk_syn_inits = 1
383 command -nargs=+ HiLink hi link <args>
384 else
385 command -nargs=+ HiLink hi def link <args>
386 endif
387
388 HiLink logtalkBlockComment Comment
389 HiLink logtalkLineComment Comment
390
391 HiLink logtalkOpenEntityDir Normal
392 HiLink logtalkOpenEntityDirTag PreProc
393
394 HiLink logtalkEntity Normal
395
396 HiLink logtalkEntityRel Normal
397 HiLink logtalkEntityRelTag PreProc
398
399 HiLink logtalkCloseEntityDir PreProc
400
401 HiLink logtalkDir Normal
402 HiLink logtalkDirTag PreProc
403
404 HiLink logtalkAtom String
405 HiLink logtalkString String
406
407 HiLink logtalkNumber Number
408
409 HiLink logtalkKeyword Keyword
410
411 HiLink logtalkBuiltIn Keyword
412 HiLink logtalkBuiltInMethod Keyword
413
414 HiLink logtalkOperator Operator
415
416 HiLink logtalkExtCall Normal
417 HiLink logtalkExtCallTag Operator
418
419 HiLink logtalkVariable Identifier
420
421 delcommand HiLink
422
423endif
424
425
426let b:current_syntax = "logtalk"
427
428setlocal ts=4