blob: eee998dde6e2246816b0541c459b93daa0c21c0d [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 Moolenaar45eeb132005-06-06 21:59:07 +00005" Last Change: June 6, 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
Bram Moolenaar45eeb132005-06-06 21:59:07 +000051syn region logtalkOpenEntityDir matchgroup=logtalkOpenEntityDirTag start=":- object(" matchgroup=logtalkOpenEntityDirTag end=")\." contains=logtalkEntity,logtalkVariable,logtalkNumber,logtalkOperator,logtalkEntityRel
52syn region logtalkOpenEntityDir matchgroup=logtalkOpenEntityDirTag start=":- protocol(" matchgroup=logtalkOpenEntityDirTag end=")\." contains=logtalkEntity,logtalkVariable,logtalkNumber,logtalkOperator,logtalkEntityRel
53syn region logtalkOpenEntityDir matchgroup=logtalkOpenEntityDirTag start=":- category(" matchgroup=logtalkOpenEntityDirTag end=")\." contains=logtalkEntity,logtalkVariable,logtalkNumber,logtalkOperator,logtalkEntityRel
Bram Moolenaar071d4272004-06-13 20:20:40 +000054
55
56" Logtalk closing entity directives
57
Bram Moolenaar45eeb132005-06-06 21:59:07 +000058syn match logtalkCloseEntityDir ":- end_object\."
59syn match logtalkCloseEntityDir ":- end_protocol\."
60syn match logtalkCloseEntityDir ":- end_category\."
Bram Moolenaar071d4272004-06-13 20:20:40 +000061
62
63" Logtalk entity relations
64
Bram Moolenaar45eeb132005-06-06 21:59:07 +000065syn region logtalkEntityRel matchgroup=logtalkEntityRelTag start="instantiates(" matchgroup=logtalkEntityRelTag end=")" contains=logtalkEntity,logtalkVariable,logtalkNumber,logtalkOperator contained
66syn region logtalkEntityRel matchgroup=logtalkEntityRelTag start="specializes(" matchgroup=logtalkEntityRelTag end=")" contains=logtalkEntity,logtalkVariable,logtalkNumber,logtalkOperator contained
67syn region logtalkEntityRel matchgroup=logtalkEntityRelTag start="extends(" matchgroup=logtalkEntityRelTag end=")" contains=logtalkEntity,logtalkVariable,logtalkNumber,logtalkOperator contained
68syn region logtalkEntityRel matchgroup=logtalkEntityRelTag start="imports(" matchgroup=logtalkEntityRelTag end=")" contains=logtalkEntity,logtalkVariable,logtalkNumber,logtalkOperator contained
69syn region logtalkEntityRel matchgroup=logtalkEntityRelTag start="implements(" matchgroup=logtalkEntityRelTag end=")" contains=logtalkEntity,logtalkVariable,logtalkNumber,logtalkOperator contained
Bram Moolenaar071d4272004-06-13 20:20:40 +000070
71
72" Logtalk directives
73
Bram Moolenaara0084652005-03-16 09:57:51 +000074syn region logtalkDir matchgroup=logtalkDirTag start=":- alias(" matchgroup=logtalkDirTag end=")\." contains=ALL
Bram Moolenaar0e6830e2005-05-27 20:23:44 +000075syn region logtalkDir matchgroup=logtalkDirTag start=":- encoding(" matchgroup=logtalkDirTag end=")\." contains=ALL
Bram Moolenaar071d4272004-06-13 20:20:40 +000076syn region logtalkDir matchgroup=logtalkDirTag start=":- initialization(" matchgroup=logtalkDirTag end=")\." contains=ALL
77syn region logtalkDir matchgroup=logtalkDirTag start=":- info(" matchgroup=logtalkDirTag end=")\." contains=ALL
Bram Moolenaara0084652005-03-16 09:57:51 +000078syn region logtalkDir matchgroup=logtalkDirTag start=":- mode(" matchgroup=logtalkDirTag end=")\." contains=logtalkOperator, logtalkAtom
Bram Moolenaar071d4272004-06-13 20:20:40 +000079syn region logtalkDir matchgroup=logtalkDirTag start=":- dynamic(" matchgroup=logtalkDirTag end=")\." contains=ALL
80syn match logtalkDirTag ":- dynamic\."
81syn region logtalkDir matchgroup=logtalkDirTag start=":- discontiguous(" matchgroup=logtalkDirTag end=")\." contains=ALL
Bram Moolenaara0084652005-03-16 09:57:51 +000082syn region logtalkDir matchgroup=logtalkDirTag start=":- multifile(" matchgroup=logtalkDirTag end=")\." contains=ALL
Bram Moolenaar071d4272004-06-13 20:20:40 +000083syn region logtalkDir matchgroup=logtalkDirTag start=":- public(" matchgroup=logtalkDirTag end=")\." contains=ALL
84syn region logtalkDir matchgroup=logtalkDirTag start=":- protected(" matchgroup=logtalkDirTag end=")\." contains=ALL
85syn region logtalkDir matchgroup=logtalkDirTag start=":- private(" matchgroup=logtalkDirTag end=")\." contains=ALL
86syn region logtalkDir matchgroup=logtalkDirTag start=":- metapredicate(" matchgroup=logtalkDirTag end=")\." contains=ALL
87syn region logtalkDir matchgroup=logtalkDirTag start=":- op(" matchgroup=logtalkDirTag end=")\." contains=ALL
88syn region logtalkDir matchgroup=logtalkDirTag start=":- calls(" matchgroup=logtalkDirTag end=")\." contains=ALL
89syn region logtalkDir matchgroup=logtalkDirTag start=":- uses(" matchgroup=logtalkDirTag end=")\." contains=ALL
90
91
92" Logtalk built-in predicates
93
Bram Moolenaar54ee7752005-05-31 22:22:17 +000094syn match logtalkBuiltIn "\<\(abolish\|c\(reate\|urrent\)\)_\(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 "\<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 Moolenaara0084652005-03-16 09:57:51 +0000107syn match logtalkBuiltIn "\<logtalk_\(compile\|l\(ibrary_path\|oad\)\)\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000108
Bram Moolenaara0084652005-03-16 09:57:51 +0000109syn match logtalkBuiltIn "\<\(for\|retract\)all\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000110
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
Bram Moolenaar54ee7752005-05-31 22:22:17 +0000121syn match logtalkBuiltInMethod "\<a\(bolish\|ssert\(a\|z\)\)\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000122syn match logtalkBuiltInMethod "\<clause\ze("
Bram Moolenaar54ee7752005-05-31 22:22:17 +0000123syn match logtalkBuiltInMethod "\<retract\(all\)\?\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000124
Bram Moolenaarf4b8e572004-06-24 15:53:16 +0000125syn match logtalkBuiltInMethod "\<\(bag\|set\)of\ze("
126syn match logtalkBuiltInMethod "\<f\(ind\|or\)all\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000127
128syn match logtalkBuiltInMethod "\<before\ze("
129syn match logtalkBuiltInMethod "\<after\ze("
130
Bram Moolenaara0084652005-03-16 09:57:51 +0000131syn match logtalkBuiltInMethod "\<expand_term\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000132syn match logtalkBuiltInMethod "\<phrase\ze("
133
134
135" Mode operators
136
137syn match logtalkOperator "?"
138syn match logtalkOperator "@"
139
140
141" Control constructs
142
143syn match logtalkKeyword "\<true\>"
144syn match logtalkKeyword "\<fail\>"
Bram Moolenaarf4b8e572004-06-24 15:53:16 +0000145syn match logtalkKeyword "\<ca\(ll\|tch\)\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000146syn match logtalkOperator "!"
Bram Moolenaarf4b8e572004-06-24 15:53:16 +0000147" syn match logtalkOperator ","
Bram Moolenaar071d4272004-06-13 20:20:40 +0000148syn match logtalkOperator ";"
149syn match logtalkOperator "-->"
150syn match logtalkOperator "->"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000151syn match logtalkKeyword "\<throw\ze("
152
153
154" Term unification
155
156syn match logtalkOperator "="
157syn match logtalkKeyword "\<unify_with_occurs_check\ze("
158syn match logtalkOperator "\\="
159
160
161" Term testing
162
163syn match logtalkKeyword "\<var\ze("
Bram Moolenaar54ee7752005-05-31 22:22:17 +0000164syn match logtalkKeyword "\<atom\(ic\)\?\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000165syn match logtalkKeyword "\<integer\ze("
166syn match logtalkKeyword "\<float\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000167syn match logtalkKeyword "\<compound\ze("
Bram Moolenaarf4b8e572004-06-24 15:53:16 +0000168syn match logtalkKeyword "\<n\(onvar\|umber\)\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000169
170
171" Term comparison
172
173syn match logtalkOperator "@=<"
174syn match logtalkOperator "=="
175syn match logtalkOperator "\\=="
176syn match logtalkOperator "@<"
177syn match logtalkOperator "@>"
178syn match logtalkOperator "@>="
179
180
181" Term creation and decomposition
182
183syn match logtalkKeyword "\<functor\ze("
184syn match logtalkKeyword "\<arg\ze("
185syn match logtalkOperator "=\.\."
186syn match logtalkKeyword "\<copy_term\ze("
187
188
189" Arithemtic evaluation
190
Bram Moolenaara0084652005-03-16 09:57:51 +0000191syn match logtalkOperator "\<is\>"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000192
193
194" Arithemtic comparison
195
196syn match logtalkOperator "=:="
197syn match logtalkOperator "=\\="
198syn match logtalkOperator "<"
199syn match logtalkOperator "=<"
200syn match logtalkOperator ">"
201syn match logtalkOperator ">="
202
203
204" Stream selection and control
205
Bram Moolenaar54ee7752005-05-31 22:22:17 +0000206syn match logtalkKeyword "\<\(current\|set\)_\(in\|out\)put\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000207syn match logtalkKeyword "\<open\ze("
208syn match logtalkKeyword "\<close\ze("
209syn match logtalkKeyword "\<flush_output\ze("
210syn match logtalkKeyword "\<flush_output\>"
211syn match logtalkKeyword "\<stream_property\ze("
212syn match logtalkKeyword "\<at_end_of_stream\ze("
213syn match logtalkKeyword "\<at_end_of_stream\>"
214syn match logtalkKeyword "\<set_stream_position\ze("
215
216
Bram Moolenaarf4b8e572004-06-24 15:53:16 +0000217" Character and byte input/output
Bram Moolenaar071d4272004-06-13 20:20:40 +0000218
Bram Moolenaar54ee7752005-05-31 22:22:17 +0000219syn match logtalkKeyword "\<\(get\|p\(eek\|ut\)\)_\(c\(har\|ode\)\|byte\)\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000220syn match logtalkKeyword "\<nl\ze("
221syn match logtalkKeyword "\<nl\>"
222
223
Bram Moolenaar071d4272004-06-13 20:20:40 +0000224" Term input/output
225
Bram Moolenaar54ee7752005-05-31 22:22:17 +0000226syn match logtalkKeyword "\<read\(_term\)\?\ze("
227syn match logtalkKeyword "\<write\(q\|_\(canonical\|term\)\)\?\ze("
228syn match logtalkKeyword "\<\(current_\)\?op\ze("
229syn match logtalkKeyword "\<\(current\)\?char_conversion\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000230
231
232" Logic and control
233
234syn match logtalkOperator "\\+"
235syn match logtalkKeyword "\<once\ze("
236syn match logtalkKeyword "\<repeat\>"
237
238
239" Atomic term processing
240
Bram Moolenaar54ee7752005-05-31 22:22:17 +0000241syn match logtalkKeyword "\<atom_\(length\|c\(hars\|o\(ncat\|des\)\)\)\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000242syn match logtalkKeyword "\<sub_atom\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000243syn match logtalkKeyword "\<char_code\ze("
Bram Moolenaar54ee7752005-05-31 22:22:17 +0000244syn match logtalkKeyword "\<number_\(c\(hars\|odes\)\)\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000245
246
247" Implementation defined hooks functions
248
Bram Moolenaarf4b8e572004-06-24 15:53:16 +0000249syn match logtalkKeyword "\<\(current\|set\)_prolog_flag\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000250syn match logtalkKeyword "\<halt\ze("
251syn match logtalkKeyword "\<halt\>"
252
253
254" Evaluable functors
255
256syn match logtalkOperator "+"
257syn match logtalkOperator "-"
258syn match logtalkOperator "\*"
259syn match logtalkOperator "//"
260syn match logtalkOperator "/"
Bram Moolenaar54ee7752005-05-31 22:22:17 +0000261syn match logtalkKeyword "\<r\(ound\|em\)\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000262syn match logtalkKeyword "\<rem\>"
263syn match logtalkKeyword "\<mod\ze("
264syn match logtalkKeyword "\<mod\>"
265syn match logtalkKeyword "\<abs\ze("
266syn match logtalkKeyword "\<sign\ze("
Bram Moolenaar54ee7752005-05-31 22:22:17 +0000267syn match logtalkKeyword "\<flo\(or\|at\(_\(integer\|fractional\)_part\)\?\)\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000268syn match logtalkKeyword "\<truncate\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000269syn match logtalkKeyword "\<ceiling\ze("
270
271
272" Other arithemtic functors
273
274syn match logtalkOperator "\*\*"
Bram Moolenaarf4b8e572004-06-24 15:53:16 +0000275syn match logtalkKeyword "\<s\(in\|qrt\)\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000276syn match logtalkKeyword "\<cos\ze("
277syn match logtalkKeyword "\<atan\ze("
278syn match logtalkKeyword "\<exp\ze("
279syn match logtalkKeyword "\<log\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000280
281
282" Bitwise functors
283
284syn match logtalkOperator ">>"
285syn match logtalkOperator "<<"
286syn match logtalkOperator "/\\"
287syn match logtalkOperator "\\/"
288syn match logtalkOperator "\\"
289
290
Bram Moolenaar071d4272004-06-13 20:20:40 +0000291" Logtalk list operator
292
293syn match logtalkOperator "|"
294
295
Bram Moolenaar54ee7752005-05-31 22:22:17 +0000296" Logtalk numbers
297
298syn match logtalkNumber "\<\d\+\>"
299syn match logtalkNumber "\<\d\+\.\d\+\>"
300syn match logtalkNumber "\<\d\+[eE][-+]\=\d\+\>"
301syn match logtalkNumber "\<\d\+\.\d\+[eE][-+]\=\d\+\>"
Bram Moolenaar45eeb132005-06-06 21:59:07 +0000302syn match logtalkNumber "\<0'.\>"
Bram Moolenaar54ee7752005-05-31 22:22:17 +0000303syn match logtalkNumber "\<0b[0-1]\+\>"
Bram Moolenaar45eeb132005-06-06 21:59:07 +0000304syn match logtalkNumber "\<0o\o\+\>"
Bram Moolenaar54ee7752005-05-31 22:22:17 +0000305syn match logtalkNumber "\<0x\x\+\>"
306
307
308" Logtalk end-of-clause
309
310syn match logtalkOperator "\."
311
312
Bram Moolenaar071d4272004-06-13 20:20:40 +0000313" Logtalk comments
314
Bram Moolenaar45eeb132005-06-06 21:59:07 +0000315syn region logtalkBlockComment start="/\*" end="\*/" fold
Bram Moolenaar071d4272004-06-13 20:20:40 +0000316syn match logtalkLineComment "%.*"
317
318
Bram Moolenaar45eeb132005-06-06 21:59:07 +0000319" Logtalk entity folding
320
321syn region logtalkEntity transparent fold keepend start=":- object(" end=":- end_object\." contains=ALL
322syn region logtalkEntity transparent fold keepend start=":- protocol(" end=":- end_protocol\." contains=ALL
323syn region logtalkEntity transparent fold keepend start=":- category(" end=":- end_category\." contains=ALL
324
325
Bram Moolenaara0084652005-03-16 09:57:51 +0000326syn sync ccomment logtalkBlockComment maxlines=50
Bram Moolenaar071d4272004-06-13 20:20:40 +0000327
328
329" Define the default highlighting.
330" For version 5.7 and earlier: only when not done already
331" For version 5.8 and later: only when an item doesn't have highlighting yet
332
333if version >= 508 || !exists("did_logtalk_syn_inits")
334 if version < 508
335 let did_logtalk_syn_inits = 1
336 command -nargs=+ HiLink hi link <args>
337 else
338 command -nargs=+ HiLink hi def link <args>
339 endif
Bram Moolenaar54ee7752005-05-31 22:22:17 +0000340
Bram Moolenaar071d4272004-06-13 20:20:40 +0000341 HiLink logtalkBlockComment Comment
342 HiLink logtalkLineComment Comment
343
344 HiLink logtalkOpenEntityDir Normal
345 HiLink logtalkOpenEntityDirTag PreProc
346
347 HiLink logtalkEntity Normal
348
349 HiLink logtalkEntityRel Normal
350 HiLink logtalkEntityRelTag PreProc
351
352 HiLink logtalkCloseEntityDir PreProc
353
354 HiLink logtalkDir Normal
355 HiLink logtalkDirTag PreProc
356
357 HiLink logtalkAtom String
358 HiLink logtalkString String
359
360 HiLink logtalkNumber Number
361
362 HiLink logtalkKeyword Keyword
363
364 HiLink logtalkBuiltIn Keyword
365 HiLink logtalkBuiltInMethod Keyword
366
367 HiLink logtalkOperator Operator
368
369 HiLink logtalkExtCall Normal
370 HiLink logtalkExtCallTag Operator
371
372 HiLink logtalkVariable Identifier
373
374 delcommand HiLink
375
376endif
377
378
379let b:current_syntax = "logtalk"
380
381setlocal ts=4
Bram Moolenaar45eeb132005-06-06 21:59:07 +0000382setlocal fdm=syntax
383setlocal fdc=2