blob: 78691710f5ccd09561d296ac6075b7da3db45180 [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 Moolenaara0084652005-03-16 09:57:51 +00005" Last Change: March 12, 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 Moolenaar071d4272004-06-13 20:20:40 +000073syn region logtalkDir matchgroup=logtalkDirTag start=":- initialization(" matchgroup=logtalkDirTag end=")\." contains=ALL
74syn region logtalkDir matchgroup=logtalkDirTag start=":- info(" matchgroup=logtalkDirTag end=")\." contains=ALL
Bram Moolenaara0084652005-03-16 09:57:51 +000075syn region logtalkDir matchgroup=logtalkDirTag start=":- mode(" matchgroup=logtalkDirTag end=")\." contains=logtalkOperator, logtalkAtom
Bram Moolenaar071d4272004-06-13 20:20:40 +000076syn region logtalkDir matchgroup=logtalkDirTag start=":- dynamic(" matchgroup=logtalkDirTag end=")\." contains=ALL
77syn match logtalkDirTag ":- dynamic\."
78syn region logtalkDir matchgroup=logtalkDirTag start=":- discontiguous(" matchgroup=logtalkDirTag end=")\." contains=ALL
Bram Moolenaara0084652005-03-16 09:57:51 +000079syn region logtalkDir matchgroup=logtalkDirTag start=":- multifile(" matchgroup=logtalkDirTag end=")\." contains=ALL
Bram Moolenaar071d4272004-06-13 20:20:40 +000080syn 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
Bram Moolenaarf4b8e572004-06-24 15:53:16 +000091syn match logtalkBuiltIn "\<current_\(object\|protocol\|category\)\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +000092
Bram Moolenaarf4b8e572004-06-24 15:53:16 +000093syn match logtalkBuiltIn "\<create_\(object\|protocol\|category\)\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +000094
Bram Moolenaarf4b8e572004-06-24 15:53:16 +000095syn match logtalkBuiltIn "\<\(object\|protocol\|category\)_property\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +000096
Bram Moolenaarf4b8e572004-06-24 15:53:16 +000097syn match logtalkBuiltIn "\<abolish_\(object\|protocol\|category\)\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +000098
Bram Moolenaarf4b8e572004-06-24 15:53:16 +000099syn match logtalkBuiltIn "\<extends_\(object\|protocol\)\ze("
100syn match logtalkBuiltIn "\<imp\(orts_category\|lements_protocol\)\ze("
101syn match logtalkBuiltIn "\<\(instantiates\|specializes\)_class\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000102
Bram Moolenaarf4b8e572004-06-24 15:53:16 +0000103syn match logtalkBuiltIn "\<\(abolish\|define\)_events\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000104syn match logtalkBuiltIn "\<current_event\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000105
Bram Moolenaarf4b8e572004-06-24 15:53:16 +0000106syn match logtalkBuiltIn "\<\(current\|set\)_logtalk_flag\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000107
Bram Moolenaara0084652005-03-16 09:57:51 +0000108syn match logtalkBuiltIn "\<logtalk_\(compile\|l\(ibrary_path\|oad\)\)\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000109
Bram Moolenaara0084652005-03-16 09:57:51 +0000110syn match logtalkBuiltIn "\<\(for\|retract\)all\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000111
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
Bram Moolenaara0084652005-03-16 09:57:51 +0000134syn match logtalkBuiltInMethod "\<expand_term\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000135syn match logtalkBuiltInMethod "\<phrase\ze("
136
137
138" Mode operators
139
140syn match logtalkOperator "?"
141syn match logtalkOperator "@"
142
143
144" Control constructs
145
146syn match logtalkKeyword "\<true\>"
147syn match logtalkKeyword "\<fail\>"
Bram Moolenaarf4b8e572004-06-24 15:53:16 +0000148syn match logtalkKeyword "\<ca\(ll\|tch\)\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000149syn match logtalkOperator "!"
Bram Moolenaarf4b8e572004-06-24 15:53:16 +0000150" syn match logtalkOperator ","
Bram Moolenaar071d4272004-06-13 20:20:40 +0000151syn match logtalkOperator ";"
152syn match logtalkOperator "-->"
153syn match logtalkOperator "->"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000154syn match logtalkKeyword "\<throw\ze("
155
156
157" Term unification
158
159syn match logtalkOperator "="
160syn match logtalkKeyword "\<unify_with_occurs_check\ze("
161syn match logtalkOperator "\\="
162
163
164" Term testing
165
166syn match logtalkKeyword "\<var\ze("
167syn match logtalkKeyword "\<atom\ze("
168syn match logtalkKeyword "\<integer\ze("
169syn match logtalkKeyword "\<float\ze("
170syn match logtalkKeyword "\<atomic\ze("
171syn match logtalkKeyword "\<compound\ze("
Bram Moolenaarf4b8e572004-06-24 15:53:16 +0000172syn match logtalkKeyword "\<n\(onvar\|umber\)\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000173
174
175" Term comparison
176
177syn match logtalkOperator "@=<"
178syn match logtalkOperator "=="
179syn match logtalkOperator "\\=="
180syn match logtalkOperator "@<"
181syn match logtalkOperator "@>"
182syn match logtalkOperator "@>="
183
184
185" Term creation and decomposition
186
187syn match logtalkKeyword "\<functor\ze("
188syn match logtalkKeyword "\<arg\ze("
189syn match logtalkOperator "=\.\."
190syn match logtalkKeyword "\<copy_term\ze("
191
192
193" Arithemtic evaluation
194
Bram Moolenaara0084652005-03-16 09:57:51 +0000195syn match logtalkOperator "\<is\>"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000196
197
198" Arithemtic comparison
199
200syn match logtalkOperator "=:="
201syn match logtalkOperator "=\\="
202syn match logtalkOperator "<"
203syn match logtalkOperator "=<"
204syn match logtalkOperator ">"
205syn match logtalkOperator ">="
206
207
208" Stream selection and control
209
Bram Moolenaarf4b8e572004-06-24 15:53:16 +0000210syn match logtalkKeyword "\<current_\(input\|output\)\ze("
211syn match logtalkKeyword "\<set_\(input\|output\)\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000212syn match logtalkKeyword "\<open\ze("
213syn match logtalkKeyword "\<close\ze("
214syn match logtalkKeyword "\<flush_output\ze("
215syn match logtalkKeyword "\<flush_output\>"
216syn match logtalkKeyword "\<stream_property\ze("
217syn match logtalkKeyword "\<at_end_of_stream\ze("
218syn match logtalkKeyword "\<at_end_of_stream\>"
219syn match logtalkKeyword "\<set_stream_position\ze("
220
221
Bram Moolenaarf4b8e572004-06-24 15:53:16 +0000222" Character and byte input/output
Bram Moolenaar071d4272004-06-13 20:20:40 +0000223
Bram Moolenaarf4b8e572004-06-24 15:53:16 +0000224syn match logtalkKeyword "\<\(get\|peek\|put\)_\(char\|code\|byte\)\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000225syn match logtalkKeyword "\<nl\ze("
226syn match logtalkKeyword "\<nl\>"
227
228
Bram Moolenaar071d4272004-06-13 20:20:40 +0000229" Term input/output
230
231syn match logtalkKeyword "\<read_term\ze("
232syn match logtalkKeyword "\<read\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000233syn match logtalkKeyword "\<write\ze("
234syn match logtalkKeyword "\<writeq\ze("
Bram Moolenaarf4b8e572004-06-24 15:53:16 +0000235syn match logtalkKeyword "\<write_\(canonical\|term\)\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000236syn match logtalkKeyword "\<op\ze("
237syn match logtalkKeyword "\<current_op\ze("
238syn match logtalkKeyword "\<char_conversion\ze("
239syn match logtalkKeyword "\<current_char_conversion\ze("
240
241
242" Logic and control
243
244syn match logtalkOperator "\\+"
245syn match logtalkKeyword "\<once\ze("
246syn match logtalkKeyword "\<repeat\>"
247
248
249" Atomic term processing
250
Bram Moolenaarf4b8e572004-06-24 15:53:16 +0000251syn match logtalkKeyword "\<atom_\(length\|concat\|chars\|codes\)\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000252syn match logtalkKeyword "\<sub_atom\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000253syn match logtalkKeyword "\<char_code\ze("
Bram Moolenaarf4b8e572004-06-24 15:53:16 +0000254syn match logtalkKeyword "\<number_\(chars\|codes\)\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000255
256
257" Implementation defined hooks functions
258
Bram Moolenaarf4b8e572004-06-24 15:53:16 +0000259syn match logtalkKeyword "\<\(current\|set\)_prolog_flag\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000260syn match logtalkKeyword "\<halt\ze("
261syn match logtalkKeyword "\<halt\>"
262
263
264" Evaluable functors
265
266syn match logtalkOperator "+"
267syn match logtalkOperator "-"
268syn match logtalkOperator "\*"
269syn match logtalkOperator "//"
270syn match logtalkOperator "/"
271syn match logtalkKeyword "\<rem(?=[(])"
272syn match logtalkKeyword "\<rem\>"
273syn match logtalkKeyword "\<mod\ze("
274syn match logtalkKeyword "\<mod\>"
275syn match logtalkKeyword "\<abs\ze("
276syn match logtalkKeyword "\<sign\ze("
Bram Moolenaarf4b8e572004-06-24 15:53:16 +0000277syn match logtalkKeyword "\<float_\(integer\|fractional\)_part\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000278syn match logtalkKeyword "\<float\ze("
279syn match logtalkKeyword "\<floor\ze("
280syn match logtalkKeyword "\<truncate\ze("
281syn match logtalkKeyword "\<round\ze("
282syn match logtalkKeyword "\<ceiling\ze("
283
284
285" Other arithemtic functors
286
287syn match logtalkOperator "\*\*"
Bram Moolenaarf4b8e572004-06-24 15:53:16 +0000288syn match logtalkKeyword "\<s\(in\|qrt\)\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000289syn match logtalkKeyword "\<cos\ze("
290syn match logtalkKeyword "\<atan\ze("
291syn match logtalkKeyword "\<exp\ze("
292syn match logtalkKeyword "\<log\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000293
294
295" Bitwise functors
296
297syn match logtalkOperator ">>"
298syn match logtalkOperator "<<"
299syn match logtalkOperator "/\\"
300syn match logtalkOperator "\\/"
301syn match logtalkOperator "\\"
302
303
304" Logtalk end-of-clause
305
306syn match logtalkOperator "\."
307
308
309" Logtalk list operator
310
311syn match logtalkOperator "|"
312
313
314" Logtalk comments
315
316syn region logtalkBlockComment start="/\*" end="\*/"
317syn match logtalkLineComment "%.*"
318
319
320" Logtalk numbers
321
322syn match logtalkNumber "\<[0-9]\+\>"
323syn match logtalkNumber "\<[0-9]\+\.[0-9]\+\>"
324syn match logtalkNumber "\<[0-9]\+\.[0-9]\+[eE][-+][0-9]+\>"
325syn match logtalkNumber "\<0'[0-9a-zA-Z]\>"
326syn match logtalkNumber "\<0b[0-1]\+\>"
327syn match logtalkNumber "\<0o[0-7]\+\>"
328syn match logtalkNumber "\<0x[0-9a-fA-F]\+\>"
329
330
Bram Moolenaara0084652005-03-16 09:57:51 +0000331syn sync ccomment logtalkBlockComment maxlines=50
Bram Moolenaar071d4272004-06-13 20:20:40 +0000332
333
334" Define the default highlighting.
335" For version 5.7 and earlier: only when not done already
336" For version 5.8 and later: only when an item doesn't have highlighting yet
337
338if version >= 508 || !exists("did_logtalk_syn_inits")
339 if version < 508
340 let did_logtalk_syn_inits = 1
341 command -nargs=+ HiLink hi link <args>
342 else
343 command -nargs=+ HiLink hi def link <args>
344 endif
345
346 HiLink logtalkBlockComment Comment
347 HiLink logtalkLineComment Comment
348
349 HiLink logtalkOpenEntityDir Normal
350 HiLink logtalkOpenEntityDirTag PreProc
351
352 HiLink logtalkEntity Normal
353
354 HiLink logtalkEntityRel Normal
355 HiLink logtalkEntityRelTag PreProc
356
357 HiLink logtalkCloseEntityDir PreProc
358
359 HiLink logtalkDir Normal
360 HiLink logtalkDirTag PreProc
361
362 HiLink logtalkAtom String
363 HiLink logtalkString String
364
365 HiLink logtalkNumber Number
366
367 HiLink logtalkKeyword Keyword
368
369 HiLink logtalkBuiltIn Keyword
370 HiLink logtalkBuiltInMethod Keyword
371
372 HiLink logtalkOperator Operator
373
374 HiLink logtalkExtCall Normal
375 HiLink logtalkExtCallTag Operator
376
377 HiLink logtalkVariable Identifier
378
379 delcommand HiLink
380
381endif
382
383
384let b:current_syntax = "logtalk"
385
386setlocal ts=4