blob: 753df4e317ac383c0a964cc10236836608251110 [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 Moolenaar0e6830e2005-05-27 20:23:44 +00005" Last Change: April 5, 2005
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
Bram Moolenaara0084652005-03-16 09:57:51 +000072syn region logtalkDir matchgroup=logtalkDirTag start=":- alias(" matchgroup=logtalkDirTag end=")\." contains=ALL
Bram Moolenaar0e6830e2005-05-27 20:23:44 +000073syn region logtalkDir matchgroup=logtalkDirTag start=":- encoding(" matchgroup=logtalkDirTag end=")\." contains=ALL
Bram Moolenaar071d4272004-06-13 20:20:40 +000074syn region logtalkDir matchgroup=logtalkDirTag start=":- initialization(" matchgroup=logtalkDirTag end=")\." contains=ALL
75syn region logtalkDir matchgroup=logtalkDirTag start=":- info(" matchgroup=logtalkDirTag end=")\." contains=ALL
Bram Moolenaara0084652005-03-16 09:57:51 +000076syn region logtalkDir matchgroup=logtalkDirTag start=":- mode(" matchgroup=logtalkDirTag end=")\." contains=logtalkOperator, logtalkAtom
Bram Moolenaar071d4272004-06-13 20:20:40 +000077syn 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
Bram Moolenaara0084652005-03-16 09:57:51 +000080syn region logtalkDir matchgroup=logtalkDirTag start=":- multifile(" matchgroup=logtalkDirTag end=")\." contains=ALL
Bram Moolenaar071d4272004-06-13 20:20:40 +000081syn region logtalkDir matchgroup=logtalkDirTag start=":- public(" matchgroup=logtalkDirTag end=")\." contains=ALL
82syn region logtalkDir matchgroup=logtalkDirTag start=":- protected(" matchgroup=logtalkDirTag end=")\." contains=ALL
83syn region logtalkDir matchgroup=logtalkDirTag start=":- private(" matchgroup=logtalkDirTag end=")\." contains=ALL
84syn region logtalkDir matchgroup=logtalkDirTag start=":- metapredicate(" matchgroup=logtalkDirTag end=")\." contains=ALL
85syn region logtalkDir matchgroup=logtalkDirTag start=":- op(" matchgroup=logtalkDirTag end=")\." contains=ALL
86syn region logtalkDir matchgroup=logtalkDirTag start=":- calls(" matchgroup=logtalkDirTag end=")\." contains=ALL
87syn region logtalkDir matchgroup=logtalkDirTag start=":- uses(" matchgroup=logtalkDirTag end=")\." contains=ALL
88
89
90" Logtalk built-in predicates
91
Bram Moolenaarf4b8e572004-06-24 15:53:16 +000092syn match logtalkBuiltIn "\<current_\(object\|protocol\|category\)\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +000093
Bram Moolenaarf4b8e572004-06-24 15:53:16 +000094syn match logtalkBuiltIn "\<create_\(object\|protocol\|category\)\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +000095
Bram Moolenaarf4b8e572004-06-24 15:53:16 +000096syn match logtalkBuiltIn "\<\(object\|protocol\|category\)_property\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +000097
Bram Moolenaarf4b8e572004-06-24 15:53:16 +000098syn match logtalkBuiltIn "\<abolish_\(object\|protocol\|category\)\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +000099
Bram Moolenaarf4b8e572004-06-24 15:53:16 +0000100syn match logtalkBuiltIn "\<extends_\(object\|protocol\)\ze("
101syn match logtalkBuiltIn "\<imp\(orts_category\|lements_protocol\)\ze("
102syn match logtalkBuiltIn "\<\(instantiates\|specializes\)_class\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000103
Bram Moolenaarf4b8e572004-06-24 15:53:16 +0000104syn match logtalkBuiltIn "\<\(abolish\|define\)_events\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000105syn match logtalkBuiltIn "\<current_event\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000106
Bram Moolenaarf4b8e572004-06-24 15:53:16 +0000107syn match logtalkBuiltIn "\<\(current\|set\)_logtalk_flag\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000108
Bram Moolenaara0084652005-03-16 09:57:51 +0000109syn match logtalkBuiltIn "\<logtalk_\(compile\|l\(ibrary_path\|oad\)\)\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000110
Bram Moolenaara0084652005-03-16 09:57:51 +0000111syn match logtalkBuiltIn "\<\(for\|retract\)all\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000112
113
114" Logtalk built-in methods
115
116syn match logtalkBuiltInMethod "\<parameter\ze("
Bram Moolenaarf4b8e572004-06-24 15:53:16 +0000117syn match logtalkBuiltInMethod "\<se\(lf\|nder\)\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000118syn match logtalkBuiltInMethod "\<this\ze("
119
120syn match logtalkBuiltInMethod "\<current_predicate\ze("
121syn match logtalkBuiltInMethod "\<predicate_property\ze("
122
123syn match logtalkBuiltInMethod "\<abolish\ze("
Bram Moolenaarf4b8e572004-06-24 15:53:16 +0000124syn match logtalkBuiltInMethod "\<assert\(a\|z\)\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000125syn match logtalkBuiltInMethod "\<clause\ze("
126syn match logtalkBuiltInMethod "\<retract\ze("
127syn match logtalkBuiltInMethod "\<retractall\ze("
128
Bram Moolenaarf4b8e572004-06-24 15:53:16 +0000129syn match logtalkBuiltInMethod "\<\(bag\|set\)of\ze("
130syn match logtalkBuiltInMethod "\<f\(ind\|or\)all\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000131
132syn match logtalkBuiltInMethod "\<before\ze("
133syn match logtalkBuiltInMethod "\<after\ze("
134
Bram Moolenaara0084652005-03-16 09:57:51 +0000135syn match logtalkBuiltInMethod "\<expand_term\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000136syn match logtalkBuiltInMethod "\<phrase\ze("
137
138
139" Mode operators
140
141syn match logtalkOperator "?"
142syn match logtalkOperator "@"
143
144
145" Control constructs
146
147syn match logtalkKeyword "\<true\>"
148syn match logtalkKeyword "\<fail\>"
Bram Moolenaarf4b8e572004-06-24 15:53:16 +0000149syn match logtalkKeyword "\<ca\(ll\|tch\)\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000150syn match logtalkOperator "!"
Bram Moolenaarf4b8e572004-06-24 15:53:16 +0000151" syn match logtalkOperator ","
Bram Moolenaar071d4272004-06-13 20:20:40 +0000152syn match logtalkOperator ";"
153syn match logtalkOperator "-->"
154syn match logtalkOperator "->"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000155syn match logtalkKeyword "\<throw\ze("
156
157
158" Term unification
159
160syn match logtalkOperator "="
161syn match logtalkKeyword "\<unify_with_occurs_check\ze("
162syn match logtalkOperator "\\="
163
164
165" Term testing
166
167syn match logtalkKeyword "\<var\ze("
168syn match logtalkKeyword "\<atom\ze("
169syn match logtalkKeyword "\<integer\ze("
170syn match logtalkKeyword "\<float\ze("
171syn match logtalkKeyword "\<atomic\ze("
172syn match logtalkKeyword "\<compound\ze("
Bram Moolenaarf4b8e572004-06-24 15:53:16 +0000173syn match logtalkKeyword "\<n\(onvar\|umber\)\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000174
175
176" Term comparison
177
178syn match logtalkOperator "@=<"
179syn match logtalkOperator "=="
180syn match logtalkOperator "\\=="
181syn match logtalkOperator "@<"
182syn match logtalkOperator "@>"
183syn match logtalkOperator "@>="
184
185
186" Term creation and decomposition
187
188syn match logtalkKeyword "\<functor\ze("
189syn match logtalkKeyword "\<arg\ze("
190syn match logtalkOperator "=\.\."
191syn match logtalkKeyword "\<copy_term\ze("
192
193
194" Arithemtic evaluation
195
Bram Moolenaara0084652005-03-16 09:57:51 +0000196syn match logtalkOperator "\<is\>"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000197
198
199" Arithemtic comparison
200
201syn match logtalkOperator "=:="
202syn match logtalkOperator "=\\="
203syn match logtalkOperator "<"
204syn match logtalkOperator "=<"
205syn match logtalkOperator ">"
206syn match logtalkOperator ">="
207
208
209" Stream selection and control
210
Bram Moolenaarf4b8e572004-06-24 15:53:16 +0000211syn match logtalkKeyword "\<current_\(input\|output\)\ze("
212syn match logtalkKeyword "\<set_\(input\|output\)\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000213syn match logtalkKeyword "\<open\ze("
214syn match logtalkKeyword "\<close\ze("
215syn match logtalkKeyword "\<flush_output\ze("
216syn match logtalkKeyword "\<flush_output\>"
217syn match logtalkKeyword "\<stream_property\ze("
218syn match logtalkKeyword "\<at_end_of_stream\ze("
219syn match logtalkKeyword "\<at_end_of_stream\>"
220syn match logtalkKeyword "\<set_stream_position\ze("
221
222
Bram Moolenaarf4b8e572004-06-24 15:53:16 +0000223" Character and byte input/output
Bram Moolenaar071d4272004-06-13 20:20:40 +0000224
Bram Moolenaarf4b8e572004-06-24 15:53:16 +0000225syn match logtalkKeyword "\<\(get\|peek\|put\)_\(char\|code\|byte\)\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000226syn match logtalkKeyword "\<nl\ze("
227syn match logtalkKeyword "\<nl\>"
228
229
Bram Moolenaar071d4272004-06-13 20:20:40 +0000230" Term input/output
231
232syn match logtalkKeyword "\<read_term\ze("
233syn match logtalkKeyword "\<read\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000234syn match logtalkKeyword "\<write\ze("
235syn match logtalkKeyword "\<writeq\ze("
Bram Moolenaarf4b8e572004-06-24 15:53:16 +0000236syn match logtalkKeyword "\<write_\(canonical\|term\)\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000237syn match logtalkKeyword "\<op\ze("
238syn match logtalkKeyword "\<current_op\ze("
239syn match logtalkKeyword "\<char_conversion\ze("
240syn match logtalkKeyword "\<current_char_conversion\ze("
241
242
243" Logic and control
244
245syn match logtalkOperator "\\+"
246syn match logtalkKeyword "\<once\ze("
247syn match logtalkKeyword "\<repeat\>"
248
249
250" Atomic term processing
251
Bram Moolenaarf4b8e572004-06-24 15:53:16 +0000252syn match logtalkKeyword "\<atom_\(length\|concat\|chars\|codes\)\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000253syn match logtalkKeyword "\<sub_atom\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000254syn match logtalkKeyword "\<char_code\ze("
Bram Moolenaarf4b8e572004-06-24 15:53:16 +0000255syn match logtalkKeyword "\<number_\(chars\|codes\)\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000256
257
258" Implementation defined hooks functions
259
Bram Moolenaarf4b8e572004-06-24 15:53:16 +0000260syn match logtalkKeyword "\<\(current\|set\)_prolog_flag\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000261syn match logtalkKeyword "\<halt\ze("
262syn match logtalkKeyword "\<halt\>"
263
264
265" Evaluable functors
266
267syn match logtalkOperator "+"
268syn match logtalkOperator "-"
269syn match logtalkOperator "\*"
270syn match logtalkOperator "//"
271syn match logtalkOperator "/"
272syn match logtalkKeyword "\<rem(?=[(])"
273syn match logtalkKeyword "\<rem\>"
274syn match logtalkKeyword "\<mod\ze("
275syn match logtalkKeyword "\<mod\>"
276syn match logtalkKeyword "\<abs\ze("
277syn match logtalkKeyword "\<sign\ze("
Bram Moolenaarf4b8e572004-06-24 15:53:16 +0000278syn match logtalkKeyword "\<float_\(integer\|fractional\)_part\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000279syn match logtalkKeyword "\<float\ze("
280syn match logtalkKeyword "\<floor\ze("
281syn match logtalkKeyword "\<truncate\ze("
282syn match logtalkKeyword "\<round\ze("
283syn match logtalkKeyword "\<ceiling\ze("
284
285
286" Other arithemtic functors
287
288syn match logtalkOperator "\*\*"
Bram Moolenaarf4b8e572004-06-24 15:53:16 +0000289syn match logtalkKeyword "\<s\(in\|qrt\)\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000290syn match logtalkKeyword "\<cos\ze("
291syn match logtalkKeyword "\<atan\ze("
292syn match logtalkKeyword "\<exp\ze("
293syn match logtalkKeyword "\<log\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000294
295
296" Bitwise functors
297
298syn match logtalkOperator ">>"
299syn match logtalkOperator "<<"
300syn match logtalkOperator "/\\"
301syn match logtalkOperator "\\/"
302syn match logtalkOperator "\\"
303
304
305" Logtalk end-of-clause
306
307syn match logtalkOperator "\."
308
309
310" Logtalk list operator
311
312syn match logtalkOperator "|"
313
314
315" Logtalk comments
316
317syn region logtalkBlockComment start="/\*" end="\*/"
318syn match logtalkLineComment "%.*"
319
320
321" Logtalk numbers
322
323syn match logtalkNumber "\<[0-9]\+\>"
324syn match logtalkNumber "\<[0-9]\+\.[0-9]\+\>"
325syn match logtalkNumber "\<[0-9]\+\.[0-9]\+[eE][-+][0-9]+\>"
326syn match logtalkNumber "\<0'[0-9a-zA-Z]\>"
327syn match logtalkNumber "\<0b[0-1]\+\>"
328syn match logtalkNumber "\<0o[0-7]\+\>"
329syn match logtalkNumber "\<0x[0-9a-fA-F]\+\>"
330
331
Bram Moolenaara0084652005-03-16 09:57:51 +0000332syn sync ccomment logtalkBlockComment maxlines=50
Bram Moolenaar071d4272004-06-13 20:20:40 +0000333
334
335" Define the default highlighting.
336" For version 5.7 and earlier: only when not done already
337" For version 5.8 and later: only when an item doesn't have highlighting yet
338
339if version >= 508 || !exists("did_logtalk_syn_inits")
340 if version < 508
341 let did_logtalk_syn_inits = 1
342 command -nargs=+ HiLink hi link <args>
343 else
344 command -nargs=+ HiLink hi def link <args>
345 endif
346
347 HiLink logtalkBlockComment Comment
348 HiLink logtalkLineComment Comment
349
350 HiLink logtalkOpenEntityDir Normal
351 HiLink logtalkOpenEntityDirTag PreProc
352
353 HiLink logtalkEntity Normal
354
355 HiLink logtalkEntityRel Normal
356 HiLink logtalkEntityRelTag PreProc
357
358 HiLink logtalkCloseEntityDir PreProc
359
360 HiLink logtalkDir Normal
361 HiLink logtalkDirTag PreProc
362
363 HiLink logtalkAtom String
364 HiLink logtalkString String
365
366 HiLink logtalkNumber Number
367
368 HiLink logtalkKeyword Keyword
369
370 HiLink logtalkBuiltIn Keyword
371 HiLink logtalkBuiltInMethod Keyword
372
373 HiLink logtalkOperator Operator
374
375 HiLink logtalkExtCall Normal
376 HiLink logtalkExtCallTag Operator
377
378 HiLink logtalkVariable Identifier
379
380 delcommand HiLink
381
382endif
383
384
385let b:current_syntax = "logtalk"
386
387setlocal ts=4