blob: ced8e96d91a1fa92aead470f7f87a72167c49852 [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>
Bram Moolenaar269ec652004-07-29 08:43:53 +00005" Last Change: 2004 July 7
Bram Moolenaar071d4272004-06-13 20:20:40 +00006
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
Bram Moolenaarf4b8e572004-06-24 15:53:16 +000058syn match logtalkCloseEntityDir ":- end_\(object\|protocol\|category\)\."
Bram Moolenaar071d4272004-06-13 20:20:40 +000059
60
61" Logtalk entity relations
62
63syn region logtalkEntityRel matchgroup=logtalkEntityRelTag start="instantiates(" matchgroup=logtalkEntityRelTag end=")" contains=logtalkEntity contained
64syn region logtalkEntityRel matchgroup=logtalkEntityRelTag start="specializes(" matchgroup=logtalkEntityRelTag end=")" contains=logtalkEntity contained
65syn region logtalkEntityRel matchgroup=logtalkEntityRelTag start="extends(" matchgroup=logtalkEntityRelTag end=")" contains=logtalkEntity contained
66syn region logtalkEntityRel matchgroup=logtalkEntityRelTag start="imports(" matchgroup=logtalkEntityRelTag end=")" contains=logtalkEntity contained
67syn region logtalkEntityRel matchgroup=logtalkEntityRelTag start="implements(" matchgroup=logtalkEntityRelTag end=")" contains=logtalkEntity contained
68
69
70" Logtalk directives
71
72syn region logtalkDir matchgroup=logtalkDirTag start=":- initialization(" matchgroup=logtalkDirTag end=")\." contains=ALL
73syn region logtalkDir matchgroup=logtalkDirTag start=":- info(" matchgroup=logtalkDirTag end=")\." contains=ALL
74syn region logtalkDir matchgroup=logtalkDirTag start=":- mode(" matchgroup=logtalkDirTag end=")\." contains=logtalkOperator,logtalkAtom
75syn region logtalkDir matchgroup=logtalkDirTag start=":- dynamic(" matchgroup=logtalkDirTag end=")\." contains=ALL
76syn match logtalkDirTag ":- dynamic\."
77syn region logtalkDir matchgroup=logtalkDirTag start=":- discontiguous(" matchgroup=logtalkDirTag end=")\." contains=ALL
Bram Moolenaar269ec652004-07-29 08:43:53 +000078syn region logtalkDir matchgroup=logtalkDirTag start=":- multifile(" matchgroup=logtalkDirTag end=")\." contains=ALL
Bram Moolenaar071d4272004-06-13 20:20:40 +000079syn region logtalkDir matchgroup=logtalkDirTag start=":- public(" matchgroup=logtalkDirTag end=")\." contains=ALL
80syn region logtalkDir matchgroup=logtalkDirTag start=":- protected(" matchgroup=logtalkDirTag end=")\." contains=ALL
81syn region logtalkDir matchgroup=logtalkDirTag start=":- private(" matchgroup=logtalkDirTag end=")\." contains=ALL
82syn region logtalkDir matchgroup=logtalkDirTag start=":- metapredicate(" matchgroup=logtalkDirTag end=")\." contains=ALL
83syn region logtalkDir matchgroup=logtalkDirTag start=":- op(" matchgroup=logtalkDirTag end=")\." contains=ALL
84syn region logtalkDir matchgroup=logtalkDirTag start=":- calls(" matchgroup=logtalkDirTag end=")\." contains=ALL
85syn region logtalkDir matchgroup=logtalkDirTag start=":- uses(" matchgroup=logtalkDirTag end=")\." contains=ALL
86
87
88" Logtalk built-in predicates
89
Bram Moolenaarf4b8e572004-06-24 15:53:16 +000090syn match logtalkBuiltIn "\<current_\(object\|protocol\|category\)\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +000091
Bram Moolenaarf4b8e572004-06-24 15:53:16 +000092syn match logtalkBuiltIn "\<create_\(object\|protocol\|category\)\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +000093
Bram Moolenaarf4b8e572004-06-24 15:53:16 +000094syn match logtalkBuiltIn "\<\(object\|protocol\|category\)_property\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +000095
Bram Moolenaarf4b8e572004-06-24 15:53:16 +000096syn match logtalkBuiltIn "\<abolish_\(object\|protocol\|category\)\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +000097
Bram Moolenaarf4b8e572004-06-24 15:53:16 +000098syn match logtalkBuiltIn "\<extends_\(object\|protocol\)\ze("
99syn match logtalkBuiltIn "\<imp\(orts_category\|lements_protocol\)\ze("
100syn match logtalkBuiltIn "\<\(instantiates\|specializes\)_class\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000101
Bram Moolenaarf4b8e572004-06-24 15:53:16 +0000102syn match logtalkBuiltIn "\<\(abolish\|define\)_events\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000103syn match logtalkBuiltIn "\<current_event\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000104
Bram Moolenaarf4b8e572004-06-24 15:53:16 +0000105syn match logtalkBuiltIn "\<\(current\|set\)_logtalk_flag\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000106
Bram Moolenaarf4b8e572004-06-24 15:53:16 +0000107syn match logtalkBuiltIn "\<logtalk_\(compile\|load\)\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000108
109syn match logtalkBuiltIn "\<forall\ze("
110syn match logtalkBuiltIn "\<retractall\ze("
111
112
113" Logtalk built-in methods
114
115syn match logtalkBuiltInMethod "\<parameter\ze("
Bram Moolenaarf4b8e572004-06-24 15:53:16 +0000116syn match logtalkBuiltInMethod "\<se\(lf\|nder\)\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000117syn match logtalkBuiltInMethod "\<this\ze("
118
119syn match logtalkBuiltInMethod "\<current_predicate\ze("
120syn match logtalkBuiltInMethod "\<predicate_property\ze("
121
122syn match logtalkBuiltInMethod "\<abolish\ze("
Bram Moolenaarf4b8e572004-06-24 15:53:16 +0000123syn match logtalkBuiltInMethod "\<assert\(a\|z\)\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000124syn match logtalkBuiltInMethod "\<clause\ze("
125syn match logtalkBuiltInMethod "\<retract\ze("
126syn match logtalkBuiltInMethod "\<retractall\ze("
127
Bram Moolenaarf4b8e572004-06-24 15:53:16 +0000128syn match logtalkBuiltInMethod "\<\(bag\|set\)of\ze("
129syn match logtalkBuiltInMethod "\<f\(ind\|or\)all\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000130
131syn match logtalkBuiltInMethod "\<before\ze("
132syn match logtalkBuiltInMethod "\<after\ze("
133
134syn match logtalkBuiltInMethod "\<phrase\ze("
135
136
137" Mode operators
138
139syn match logtalkOperator "?"
140syn match logtalkOperator "@"
141
142
143" Control constructs
144
145syn match logtalkKeyword "\<true\>"
146syn match logtalkKeyword "\<fail\>"
Bram Moolenaarf4b8e572004-06-24 15:53:16 +0000147syn match logtalkKeyword "\<ca\(ll\|tch\)\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000148syn match logtalkOperator "!"
Bram Moolenaarf4b8e572004-06-24 15:53:16 +0000149" syn match logtalkOperator ","
Bram Moolenaar071d4272004-06-13 20:20:40 +0000150syn match logtalkOperator ";"
151syn match logtalkOperator "-->"
152syn match logtalkOperator "->"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000153syn match logtalkKeyword "\<throw\ze("
154
155
156" Term unification
157
158syn match logtalkOperator "="
159syn match logtalkKeyword "\<unify_with_occurs_check\ze("
160syn match logtalkOperator "\\="
161
162
163" Term testing
164
165syn match logtalkKeyword "\<var\ze("
166syn match logtalkKeyword "\<atom\ze("
167syn match logtalkKeyword "\<integer\ze("
168syn match logtalkKeyword "\<float\ze("
169syn match logtalkKeyword "\<atomic\ze("
170syn match logtalkKeyword "\<compound\ze("
Bram Moolenaarf4b8e572004-06-24 15:53:16 +0000171syn match logtalkKeyword "\<n\(onvar\|umber\)\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000172
173
174" Term comparison
175
176syn match logtalkOperator "@=<"
177syn match logtalkOperator "=="
178syn match logtalkOperator "\\=="
179syn match logtalkOperator "@<"
180syn match logtalkOperator "@>"
181syn match logtalkOperator "@>="
182
183
184" Term creation and decomposition
185
186syn match logtalkKeyword "\<functor\ze("
187syn match logtalkKeyword "\<arg\ze("
188syn match logtalkOperator "=\.\."
189syn match logtalkKeyword "\<copy_term\ze("
190
191
192" Arithemtic evaluation
193
194syn keyword logtalkOperator is
195
196
197" Arithemtic comparison
198
199syn match logtalkOperator "=:="
200syn match logtalkOperator "=\\="
201syn match logtalkOperator "<"
202syn match logtalkOperator "=<"
203syn match logtalkOperator ">"
204syn match logtalkOperator ">="
205
206
207" Stream selection and control
208
Bram Moolenaarf4b8e572004-06-24 15:53:16 +0000209syn match logtalkKeyword "\<current_\(input\|output\)\ze("
210syn match logtalkKeyword "\<set_\(input\|output\)\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000211syn match logtalkKeyword "\<open\ze("
212syn match logtalkKeyword "\<close\ze("
213syn match logtalkKeyword "\<flush_output\ze("
214syn match logtalkKeyword "\<flush_output\>"
215syn match logtalkKeyword "\<stream_property\ze("
216syn match logtalkKeyword "\<at_end_of_stream\ze("
217syn match logtalkKeyword "\<at_end_of_stream\>"
218syn match logtalkKeyword "\<set_stream_position\ze("
219
220
Bram Moolenaarf4b8e572004-06-24 15:53:16 +0000221" Character and byte input/output
Bram Moolenaar071d4272004-06-13 20:20:40 +0000222
Bram Moolenaarf4b8e572004-06-24 15:53:16 +0000223syn match logtalkKeyword "\<\(get\|peek\|put\)_\(char\|code\|byte\)\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000224syn match logtalkKeyword "\<nl\ze("
225syn match logtalkKeyword "\<nl\>"
226
227
Bram Moolenaar071d4272004-06-13 20:20:40 +0000228" Term input/output
229
230syn match logtalkKeyword "\<read_term\ze("
231syn match logtalkKeyword "\<read\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000232syn match logtalkKeyword "\<write\ze("
233syn match logtalkKeyword "\<writeq\ze("
Bram Moolenaarf4b8e572004-06-24 15:53:16 +0000234syn match logtalkKeyword "\<write_\(canonical\|term\)\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000235syn match logtalkKeyword "\<op\ze("
236syn match logtalkKeyword "\<current_op\ze("
237syn match logtalkKeyword "\<char_conversion\ze("
238syn match logtalkKeyword "\<current_char_conversion\ze("
239
240
241" Logic and control
242
243syn match logtalkOperator "\\+"
244syn match logtalkKeyword "\<once\ze("
245syn match logtalkKeyword "\<repeat\>"
246
247
248" Atomic term processing
249
Bram Moolenaarf4b8e572004-06-24 15:53:16 +0000250syn match logtalkKeyword "\<atom_\(length\|concat\|chars\|codes\)\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000251syn match logtalkKeyword "\<sub_atom\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000252syn match logtalkKeyword "\<char_code\ze("
Bram Moolenaarf4b8e572004-06-24 15:53:16 +0000253syn match logtalkKeyword "\<number_\(chars\|codes\)\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000254
255
256" Implementation defined hooks functions
257
Bram Moolenaarf4b8e572004-06-24 15:53:16 +0000258syn match logtalkKeyword "\<\(current\|set\)_prolog_flag\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000259syn match logtalkKeyword "\<halt\ze("
260syn match logtalkKeyword "\<halt\>"
261
262
263" Evaluable functors
264
265syn match logtalkOperator "+"
266syn match logtalkOperator "-"
267syn match logtalkOperator "\*"
268syn match logtalkOperator "//"
269syn match logtalkOperator "/"
270syn match logtalkKeyword "\<rem(?=[(])"
271syn match logtalkKeyword "\<rem\>"
272syn match logtalkKeyword "\<mod\ze("
273syn match logtalkKeyword "\<mod\>"
274syn match logtalkKeyword "\<abs\ze("
275syn match logtalkKeyword "\<sign\ze("
Bram Moolenaarf4b8e572004-06-24 15:53:16 +0000276syn match logtalkKeyword "\<float_\(integer\|fractional\)_part\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000277syn match logtalkKeyword "\<float\ze("
278syn match logtalkKeyword "\<floor\ze("
279syn match logtalkKeyword "\<truncate\ze("
280syn match logtalkKeyword "\<round\ze("
281syn match logtalkKeyword "\<ceiling\ze("
282
283
284" Other arithemtic functors
285
286syn match logtalkOperator "\*\*"
Bram Moolenaarf4b8e572004-06-24 15:53:16 +0000287syn match logtalkKeyword "\<s\(in\|qrt\)\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000288syn match logtalkKeyword "\<cos\ze("
289syn match logtalkKeyword "\<atan\ze("
290syn match logtalkKeyword "\<exp\ze("
291syn match logtalkKeyword "\<log\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000292
293
294" Bitwise functors
295
296syn match logtalkOperator ">>"
297syn match logtalkOperator "<<"
298syn match logtalkOperator "/\\"
299syn match logtalkOperator "\\/"
300syn match logtalkOperator "\\"
301
302
303" Logtalk end-of-clause
304
305syn match logtalkOperator "\."
306
307
308" Logtalk list operator
309
310syn match logtalkOperator "|"
311
312
313" Logtalk comments
314
315syn region logtalkBlockComment start="/\*" end="\*/"
316syn match logtalkLineComment "%.*"
317
318
319" Logtalk numbers
320
321syn match logtalkNumber "\<[0-9]\+\>"
322syn match logtalkNumber "\<[0-9]\+\.[0-9]\+\>"
323syn match logtalkNumber "\<[0-9]\+\.[0-9]\+[eE][-+][0-9]+\>"
324syn match logtalkNumber "\<0'[0-9a-zA-Z]\>"
325syn match logtalkNumber "\<0b[0-1]\+\>"
326syn match logtalkNumber "\<0o[0-7]\+\>"
327syn match logtalkNumber "\<0x[0-9a-fA-F]\+\>"
328
329
330syn sync ccomment maxlines=50
331
332
333" Define the default highlighting.
334" For version 5.7 and earlier: only when not done already
335" For version 5.8 and later: only when an item doesn't have highlighting yet
336
337if version >= 508 || !exists("did_logtalk_syn_inits")
338 if version < 508
339 let did_logtalk_syn_inits = 1
340 command -nargs=+ HiLink hi link <args>
341 else
342 command -nargs=+ HiLink hi def link <args>
343 endif
344
345 HiLink logtalkBlockComment Comment
346 HiLink logtalkLineComment Comment
347
348 HiLink logtalkOpenEntityDir Normal
349 HiLink logtalkOpenEntityDirTag PreProc
350
351 HiLink logtalkEntity Normal
352
353 HiLink logtalkEntityRel Normal
354 HiLink logtalkEntityRelTag PreProc
355
356 HiLink logtalkCloseEntityDir PreProc
357
358 HiLink logtalkDir Normal
359 HiLink logtalkDirTag PreProc
360
361 HiLink logtalkAtom String
362 HiLink logtalkString String
363
364 HiLink logtalkNumber Number
365
366 HiLink logtalkKeyword Keyword
367
368 HiLink logtalkBuiltIn Keyword
369 HiLink logtalkBuiltInMethod Keyword
370
371 HiLink logtalkOperator Operator
372
373 HiLink logtalkExtCall Normal
374 HiLink logtalkExtCallTag Operator
375
376 HiLink logtalkVariable Identifier
377
378 delcommand HiLink
379
380endif
381
382
383let b:current_syntax = "logtalk"
384
385setlocal ts=4