blob: 480220c64972b78b22d2c38c1f9ed67917668654 [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 Moolenaar54ee7752005-05-31 22:22:17 +00005" Last Change: May 30, 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 Moolenaar54ee7752005-05-31 22:22:17 +000092syn match logtalkBuiltIn "\<\(abolish\|c\(reate\|urrent\)\)_\(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 "\<extends_\(object\|protocol\)\ze("
97syn match logtalkBuiltIn "\<imp\(orts_category\|lements_protocol\)\ze("
98syn match logtalkBuiltIn "\<\(instantiates\|specializes\)_class\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +000099
Bram Moolenaarf4b8e572004-06-24 15:53:16 +0000100syn match logtalkBuiltIn "\<\(abolish\|define\)_events\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000101syn match logtalkBuiltIn "\<current_event\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000102
Bram Moolenaarf4b8e572004-06-24 15:53:16 +0000103syn match logtalkBuiltIn "\<\(current\|set\)_logtalk_flag\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000104
Bram Moolenaara0084652005-03-16 09:57:51 +0000105syn match logtalkBuiltIn "\<logtalk_\(compile\|l\(ibrary_path\|oad\)\)\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000106
Bram Moolenaara0084652005-03-16 09:57:51 +0000107syn match logtalkBuiltIn "\<\(for\|retract\)all\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000108
109
110" Logtalk built-in methods
111
112syn match logtalkBuiltInMethod "\<parameter\ze("
Bram Moolenaarf4b8e572004-06-24 15:53:16 +0000113syn match logtalkBuiltInMethod "\<se\(lf\|nder\)\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000114syn match logtalkBuiltInMethod "\<this\ze("
115
116syn match logtalkBuiltInMethod "\<current_predicate\ze("
117syn match logtalkBuiltInMethod "\<predicate_property\ze("
118
Bram Moolenaar54ee7752005-05-31 22:22:17 +0000119syn match logtalkBuiltInMethod "\<a\(bolish\|ssert\(a\|z\)\)\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000120syn match logtalkBuiltInMethod "\<clause\ze("
Bram Moolenaar54ee7752005-05-31 22:22:17 +0000121syn match logtalkBuiltInMethod "\<retract\(all\)\?\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000122
Bram Moolenaarf4b8e572004-06-24 15:53:16 +0000123syn match logtalkBuiltInMethod "\<\(bag\|set\)of\ze("
124syn match logtalkBuiltInMethod "\<f\(ind\|or\)all\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000125
126syn match logtalkBuiltInMethod "\<before\ze("
127syn match logtalkBuiltInMethod "\<after\ze("
128
Bram Moolenaara0084652005-03-16 09:57:51 +0000129syn match logtalkBuiltInMethod "\<expand_term\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000130syn match logtalkBuiltInMethod "\<phrase\ze("
131
132
133" Mode operators
134
135syn match logtalkOperator "?"
136syn match logtalkOperator "@"
137
138
139" Control constructs
140
141syn match logtalkKeyword "\<true\>"
142syn match logtalkKeyword "\<fail\>"
Bram Moolenaarf4b8e572004-06-24 15:53:16 +0000143syn match logtalkKeyword "\<ca\(ll\|tch\)\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000144syn match logtalkOperator "!"
Bram Moolenaarf4b8e572004-06-24 15:53:16 +0000145" syn match logtalkOperator ","
Bram Moolenaar071d4272004-06-13 20:20:40 +0000146syn match logtalkOperator ";"
147syn match logtalkOperator "-->"
148syn match logtalkOperator "->"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000149syn match logtalkKeyword "\<throw\ze("
150
151
152" Term unification
153
154syn match logtalkOperator "="
155syn match logtalkKeyword "\<unify_with_occurs_check\ze("
156syn match logtalkOperator "\\="
157
158
159" Term testing
160
161syn match logtalkKeyword "\<var\ze("
Bram Moolenaar54ee7752005-05-31 22:22:17 +0000162syn match logtalkKeyword "\<atom\(ic\)\?\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000163syn match logtalkKeyword "\<integer\ze("
164syn match logtalkKeyword "\<float\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000165syn match logtalkKeyword "\<compound\ze("
Bram Moolenaarf4b8e572004-06-24 15:53:16 +0000166syn match logtalkKeyword "\<n\(onvar\|umber\)\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000167
168
169" Term comparison
170
171syn match logtalkOperator "@=<"
172syn match logtalkOperator "=="
173syn match logtalkOperator "\\=="
174syn match logtalkOperator "@<"
175syn match logtalkOperator "@>"
176syn match logtalkOperator "@>="
177
178
179" Term creation and decomposition
180
181syn match logtalkKeyword "\<functor\ze("
182syn match logtalkKeyword "\<arg\ze("
183syn match logtalkOperator "=\.\."
184syn match logtalkKeyword "\<copy_term\ze("
185
186
187" Arithemtic evaluation
188
Bram Moolenaara0084652005-03-16 09:57:51 +0000189syn match logtalkOperator "\<is\>"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000190
191
192" Arithemtic comparison
193
194syn match logtalkOperator "=:="
195syn match logtalkOperator "=\\="
196syn match logtalkOperator "<"
197syn match logtalkOperator "=<"
198syn match logtalkOperator ">"
199syn match logtalkOperator ">="
200
201
202" Stream selection and control
203
Bram Moolenaar54ee7752005-05-31 22:22:17 +0000204syn match logtalkKeyword "\<\(current\|set\)_\(in\|out\)put\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000205syn match logtalkKeyword "\<open\ze("
206syn match logtalkKeyword "\<close\ze("
207syn match logtalkKeyword "\<flush_output\ze("
208syn match logtalkKeyword "\<flush_output\>"
209syn match logtalkKeyword "\<stream_property\ze("
210syn match logtalkKeyword "\<at_end_of_stream\ze("
211syn match logtalkKeyword "\<at_end_of_stream\>"
212syn match logtalkKeyword "\<set_stream_position\ze("
213
214
Bram Moolenaarf4b8e572004-06-24 15:53:16 +0000215" Character and byte input/output
Bram Moolenaar071d4272004-06-13 20:20:40 +0000216
Bram Moolenaar54ee7752005-05-31 22:22:17 +0000217syn match logtalkKeyword "\<\(get\|p\(eek\|ut\)\)_\(c\(har\|ode\)\|byte\)\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000218syn match logtalkKeyword "\<nl\ze("
219syn match logtalkKeyword "\<nl\>"
220
221
Bram Moolenaar071d4272004-06-13 20:20:40 +0000222" Term input/output
223
Bram Moolenaar54ee7752005-05-31 22:22:17 +0000224syn match logtalkKeyword "\<read\(_term\)\?\ze("
225syn match logtalkKeyword "\<write\(q\|_\(canonical\|term\)\)\?\ze("
226syn match logtalkKeyword "\<\(current_\)\?op\ze("
227syn match logtalkKeyword "\<\(current\)\?char_conversion\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000228
229
230" Logic and control
231
232syn match logtalkOperator "\\+"
233syn match logtalkKeyword "\<once\ze("
234syn match logtalkKeyword "\<repeat\>"
235
236
237" Atomic term processing
238
Bram Moolenaar54ee7752005-05-31 22:22:17 +0000239syn match logtalkKeyword "\<atom_\(length\|c\(hars\|o\(ncat\|des\)\)\)\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000240syn match logtalkKeyword "\<sub_atom\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000241syn match logtalkKeyword "\<char_code\ze("
Bram Moolenaar54ee7752005-05-31 22:22:17 +0000242syn match logtalkKeyword "\<number_\(c\(hars\|odes\)\)\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000243
244
245" Implementation defined hooks functions
246
Bram Moolenaarf4b8e572004-06-24 15:53:16 +0000247syn match logtalkKeyword "\<\(current\|set\)_prolog_flag\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000248syn match logtalkKeyword "\<halt\ze("
249syn match logtalkKeyword "\<halt\>"
250
251
252" Evaluable functors
253
254syn match logtalkOperator "+"
255syn match logtalkOperator "-"
256syn match logtalkOperator "\*"
257syn match logtalkOperator "//"
258syn match logtalkOperator "/"
Bram Moolenaar54ee7752005-05-31 22:22:17 +0000259syn match logtalkKeyword "\<r\(ound\|em\)\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000260syn match logtalkKeyword "\<rem\>"
261syn match logtalkKeyword "\<mod\ze("
262syn match logtalkKeyword "\<mod\>"
263syn match logtalkKeyword "\<abs\ze("
264syn match logtalkKeyword "\<sign\ze("
Bram Moolenaar54ee7752005-05-31 22:22:17 +0000265syn match logtalkKeyword "\<flo\(or\|at\(_\(integer\|fractional\)_part\)\?\)\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000266syn match logtalkKeyword "\<truncate\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000267syn match logtalkKeyword "\<ceiling\ze("
268
269
270" Other arithemtic functors
271
272syn match logtalkOperator "\*\*"
Bram Moolenaarf4b8e572004-06-24 15:53:16 +0000273syn match logtalkKeyword "\<s\(in\|qrt\)\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000274syn match logtalkKeyword "\<cos\ze("
275syn match logtalkKeyword "\<atan\ze("
276syn match logtalkKeyword "\<exp\ze("
277syn match logtalkKeyword "\<log\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000278
279
280" Bitwise functors
281
282syn match logtalkOperator ">>"
283syn match logtalkOperator "<<"
284syn match logtalkOperator "/\\"
285syn match logtalkOperator "\\/"
286syn match logtalkOperator "\\"
287
288
Bram Moolenaar071d4272004-06-13 20:20:40 +0000289" Logtalk list operator
290
291syn match logtalkOperator "|"
292
293
Bram Moolenaar54ee7752005-05-31 22:22:17 +0000294" Logtalk numbers
295
296syn match logtalkNumber "\<\d\+\>"
297syn match logtalkNumber "\<\d\+\.\d\+\>"
298syn match logtalkNumber "\<\d\+[eE][-+]\=\d\+\>"
299syn match logtalkNumber "\<\d\+\.\d\+[eE][-+]\=\d\+\>"
300syn match logtalkNumber "\<0'[0-9a-zA-Z]\>"
301syn match logtalkNumber "\<0b[0-1]\+\>"
302syn match logtalkNumber "\<0o[0-7]\+\>"
303syn match logtalkNumber "\<0x\x\+\>"
304
305
306" Logtalk end-of-clause
307
308syn match logtalkOperator "\."
309
310
Bram Moolenaar071d4272004-06-13 20:20:40 +0000311" Logtalk comments
312
313syn region logtalkBlockComment start="/\*" end="\*/"
314syn match logtalkLineComment "%.*"
315
316
Bram Moolenaara0084652005-03-16 09:57:51 +0000317syn sync ccomment logtalkBlockComment maxlines=50
Bram Moolenaar071d4272004-06-13 20:20:40 +0000318
319
320" Define the default highlighting.
321" For version 5.7 and earlier: only when not done already
322" For version 5.8 and later: only when an item doesn't have highlighting yet
323
324if version >= 508 || !exists("did_logtalk_syn_inits")
325 if version < 508
326 let did_logtalk_syn_inits = 1
327 command -nargs=+ HiLink hi link <args>
328 else
329 command -nargs=+ HiLink hi def link <args>
330 endif
Bram Moolenaar54ee7752005-05-31 22:22:17 +0000331
Bram Moolenaar071d4272004-06-13 20:20:40 +0000332 HiLink logtalkBlockComment Comment
333 HiLink logtalkLineComment Comment
334
335 HiLink logtalkOpenEntityDir Normal
336 HiLink logtalkOpenEntityDirTag PreProc
337
338 HiLink logtalkEntity Normal
339
340 HiLink logtalkEntityRel Normal
341 HiLink logtalkEntityRelTag PreProc
342
343 HiLink logtalkCloseEntityDir PreProc
344
345 HiLink logtalkDir Normal
346 HiLink logtalkDirTag PreProc
347
348 HiLink logtalkAtom String
349 HiLink logtalkString String
350
351 HiLink logtalkNumber Number
352
353 HiLink logtalkKeyword Keyword
354
355 HiLink logtalkBuiltIn Keyword
356 HiLink logtalkBuiltInMethod Keyword
357
358 HiLink logtalkOperator Operator
359
360 HiLink logtalkExtCall Normal
361 HiLink logtalkExtCallTag Operator
362
363 HiLink logtalkVariable Identifier
364
365 delcommand HiLink
366
367endif
368
369
370let b:current_syntax = "logtalk"
371
372setlocal ts=4