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