blob: a7fe9ce925f177a53163090c5d12540a3304acf5 [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 Moolenaard473c8c2018-08-11 18:00:22 +02005" Last Change: August 3, 2018
Bram Moolenaar071d4272004-06-13 20:20:40 +00006
7
Bram Moolenaar89bcfda2016-08-30 23:26:57 +02008" quit when a syntax file was already loaded
9if exists("b:current_syntax")
Bram Moolenaar071d4272004-06-13 20:20:40 +000010 finish
11endif
12
Bram Moolenaarb8ff1fb2012-02-04 21:59:01 +010013let s:cpo_save = &cpo
14set cpo&vim
Bram Moolenaar071d4272004-06-13 20:20:40 +000015
16" Logtalk is case sensitive:
17
18syn case match
19
20
21" Logtalk variables
22
23syn match logtalkVariable "\<\(\u\|_\)\(\w\)*\>"
24
25
26" Logtalk clause functor
27
28syn match logtalkOperator ":-"
29
30
31" Logtalk quoted atoms and strings
32
33syn region logtalkString start=+"+ skip=+\\"+ end=+"+
Bram Moolenaarc236c162008-07-13 17:41:49 +000034syn region logtalkAtom start=+'+ skip=+\\'+ end=+'+ contains=logtalkEscapeSequence
35
36syn match logtalkEscapeSequence contained "\\\([\\abfnrtv\"\']\|\(x[a-fA-F0-9]\+\|[0-7]\+\)\\\)"
Bram Moolenaar071d4272004-06-13 20:20:40 +000037
38
39" Logtalk message sending operators
40
41syn match logtalkOperator "::"
Bram Moolenaarc236c162008-07-13 17:41:49 +000042syn match logtalkOperator ":"
Bram Moolenaar071d4272004-06-13 20:20:40 +000043syn match logtalkOperator "\^\^"
44
45
46" Logtalk external call
47
48syn region logtalkExtCall matchgroup=logtalkExtCallTag start="{" matchgroup=logtalkExtCallTag end="}" contains=ALL
49
50
51" Logtalk opening entity directives
52
Bram Moolenaar5c736222010-01-06 20:54:52 +010053syn region logtalkOpenEntityDir matchgroup=logtalkOpenEntityDirTag start=":- object(" matchgroup=logtalkOpenEntityDirTag end=")\." contains=logtalkEntity,logtalkVariable,logtalkNumber,logtalkOperator,logtalkString,logtalkAtom,logtalkEntityRel,logtalkLineComment
54syn region logtalkOpenEntityDir matchgroup=logtalkOpenEntityDirTag start=":- protocol(" matchgroup=logtalkOpenEntityDirTag end=")\." contains=logtalkEntity,logtalkVariable,logtalkNumber,logtalkOperator,logtalkEntityRel,logtalkLineComment
55syn region logtalkOpenEntityDir matchgroup=logtalkOpenEntityDirTag start=":- category(" matchgroup=logtalkOpenEntityDirTag end=")\." contains=logtalkEntity,logtalkVariable,logtalkNumber,logtalkOperator,logtalkEntityRel,logtalkLineComment
Bram Moolenaar071d4272004-06-13 20:20:40 +000056
57
58" Logtalk closing entity directives
59
Bram Moolenaar45eeb132005-06-06 21:59:07 +000060syn match logtalkCloseEntityDir ":- end_object\."
61syn match logtalkCloseEntityDir ":- end_protocol\."
62syn match logtalkCloseEntityDir ":- end_category\."
Bram Moolenaar071d4272004-06-13 20:20:40 +000063
64
65" Logtalk entity relations
66
Bram Moolenaarc236c162008-07-13 17:41:49 +000067syn region logtalkEntityRel matchgroup=logtalkEntityRelTag start="instantiates(" matchgroup=logtalkEntityRelTag end=")" contains=logtalkEntity,logtalkVariable,logtalkNumber,logtalkOperator,logtalkString,logtalkAtom contained
68syn region logtalkEntityRel matchgroup=logtalkEntityRelTag start="specializes(" matchgroup=logtalkEntityRelTag end=")" contains=logtalkEntity,logtalkVariable,logtalkNumber,logtalkOperator,logtalkString,logtalkAtom contained
69syn region logtalkEntityRel matchgroup=logtalkEntityRelTag start="extends(" matchgroup=logtalkEntityRelTag end=")" contains=logtalkEntity,logtalkVariable,logtalkNumber,logtalkOperator,logtalkString,logtalkAtom contained
70syn region logtalkEntityRel matchgroup=logtalkEntityRelTag start="imports(" matchgroup=logtalkEntityRelTag end=")" contains=logtalkEntity,logtalkVariable,logtalkNumber,logtalkOperator,logtalkString,logtalkAtom contained
71syn region logtalkEntityRel matchgroup=logtalkEntityRelTag start="implements(" matchgroup=logtalkEntityRelTag end=")" contains=logtalkEntity,logtalkVariable,logtalkNumber,logtalkOperator,logtalkString,logtalkAtom contained
72syn region logtalkEntityRel matchgroup=logtalkEntityRelTag start="complements(" matchgroup=logtalkEntityRelTag end=")" contains=logtalkEntity,logtalkVariable,logtalkNumber,logtalkOperator,logtalkString,logtalkAtom contained
Bram Moolenaar071d4272004-06-13 20:20:40 +000073
74
75" Logtalk directives
76
Bram Moolenaarb8ff1fb2012-02-04 21:59:01 +010077syn region logtalkDir matchgroup=logtalkDirTag start=":- if(" matchgroup=logtalkDirTag end=")\." contains=ALL
78syn region logtalkDir matchgroup=logtalkDirTag start=":- elif(" matchgroup=logtalkDirTag end=")\." contains=ALL
79syn match logtalkDirTag ":- else\."
80syn match logtalkDirTag ":- endif\."
Bram Moolenaara0084652005-03-16 09:57:51 +000081syn region logtalkDir matchgroup=logtalkDirTag start=":- alias(" matchgroup=logtalkDirTag end=")\." contains=ALL
Bram Moolenaarb8ff1fb2012-02-04 21:59:01 +010082syn region logtalkDir matchgroup=logtalkDirTag start=":- coinductive(" matchgroup=logtalkDirTag end=")\." contains=ALL
Bram Moolenaarc236c162008-07-13 17:41:49 +000083syn region logtalkDir matchgroup=logtalkDirTag start=":- encoding(" matchgroup=logtalkDirTag end=")\." contains=ALL
Bram Moolenaar071d4272004-06-13 20:20:40 +000084syn region logtalkDir matchgroup=logtalkDirTag start=":- initialization(" matchgroup=logtalkDirTag end=")\." contains=ALL
85syn region logtalkDir matchgroup=logtalkDirTag start=":- info(" matchgroup=logtalkDirTag end=")\." contains=ALL
Bram Moolenaara0084652005-03-16 09:57:51 +000086syn region logtalkDir matchgroup=logtalkDirTag start=":- mode(" matchgroup=logtalkDirTag end=")\." contains=logtalkOperator, logtalkAtom
Bram Moolenaar071d4272004-06-13 20:20:40 +000087syn region logtalkDir matchgroup=logtalkDirTag start=":- dynamic(" matchgroup=logtalkDirTag end=")\." contains=ALL
Bram Moolenaard473c8c2018-08-11 18:00:22 +020088syn match logtalkDirTag ":- built_in\."
Bram Moolenaar071d4272004-06-13 20:20:40 +000089syn match logtalkDirTag ":- dynamic\."
90syn region logtalkDir matchgroup=logtalkDirTag start=":- discontiguous(" matchgroup=logtalkDirTag end=")\." contains=ALL
Bram Moolenaara0084652005-03-16 09:57:51 +000091syn region logtalkDir matchgroup=logtalkDirTag start=":- multifile(" matchgroup=logtalkDirTag end=")\." contains=ALL
Bram Moolenaar071d4272004-06-13 20:20:40 +000092syn region logtalkDir matchgroup=logtalkDirTag start=":- public(" matchgroup=logtalkDirTag end=")\." contains=ALL
93syn region logtalkDir matchgroup=logtalkDirTag start=":- protected(" matchgroup=logtalkDirTag end=")\." contains=ALL
94syn region logtalkDir matchgroup=logtalkDirTag start=":- private(" matchgroup=logtalkDirTag end=")\." contains=ALL
Bram Moolenaarc236c162008-07-13 17:41:49 +000095syn region logtalkDir matchgroup=logtalkDirTag start=":- meta_predicate(" matchgroup=logtalkDirTag end=")\." contains=ALL
Bram Moolenaarb8ff1fb2012-02-04 21:59:01 +010096syn region logtalkDir matchgroup=logtalkDirTag start=":- meta_non_terminal(" matchgroup=logtalkDirTag end=")\." contains=ALL
Bram Moolenaar071d4272004-06-13 20:20:40 +000097syn region logtalkDir matchgroup=logtalkDirTag start=":- op(" matchgroup=logtalkDirTag end=")\." contains=ALL
Bram Moolenaarb8ff1fb2012-02-04 21:59:01 +010098syn region logtalkDir matchgroup=logtalkDirTag start=":- set_logtalk_flag(" matchgroup=logtalkDirTag end=")\." contains=ALL
Bram Moolenaarc236c162008-07-13 17:41:49 +000099syn region logtalkDir matchgroup=logtalkDirTag start=":- synchronized(" matchgroup=logtalkDirTag end=")\." contains=ALL
100syn match logtalkDirTag ":- synchronized\."
Bram Moolenaar071d4272004-06-13 20:20:40 +0000101syn region logtalkDir matchgroup=logtalkDirTag start=":- uses(" matchgroup=logtalkDirTag end=")\." contains=ALL
Bram Moolenaarc236c162008-07-13 17:41:49 +0000102syn match logtalkDirTag ":- threaded\."
Bram Moolenaar071d4272004-06-13 20:20:40 +0000103
104
Bram Moolenaarb8ff1fb2012-02-04 21:59:01 +0100105" Prolog directives
106
107syn region logtalkDir matchgroup=logtalkDirTag start=":- ensure_loaded(" matchgroup=logtalkDirTag end=")\." contains=ALL
108syn region logtalkDir matchgroup=logtalkDirTag start=":- include(" matchgroup=logtalkDirTag end=")\." contains=ALL
109syn region logtalkDir matchgroup=logtalkDirTag start=":- set_prolog_flag(" matchgroup=logtalkDirTag end=")\." contains=ALL
110
111
Bram Moolenaar362e1a32006-03-06 23:29:24 +0000112" Module directives
113
114syn region logtalkDir matchgroup=logtalkDirTag start=":- module(" matchgroup=logtalkDirTag end=")\." contains=ALL
115syn region logtalkDir matchgroup=logtalkDirTag start=":- export(" matchgroup=logtalkDirTag end=")\." contains=ALL
Bram Moolenaarb8ff1fb2012-02-04 21:59:01 +0100116syn region logtalkDir matchgroup=logtalkDirTag start=":- reexport(" matchgroup=logtalkDirTag end=")\." contains=ALL
Bram Moolenaar362e1a32006-03-06 23:29:24 +0000117syn region logtalkDir matchgroup=logtalkDirTag start=":- use_module(" matchgroup=logtalkDirTag end=")\." contains=ALL
118
119
Bram Moolenaar071d4272004-06-13 20:20:40 +0000120" Logtalk built-in predicates
121
Bram Moolenaar54ee7752005-05-31 22:22:17 +0000122syn match logtalkBuiltIn "\<\(abolish\|c\(reate\|urrent\)\)_\(object\|protocol\|category\)\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000123
Bram Moolenaarf4b8e572004-06-24 15:53:16 +0000124syn match logtalkBuiltIn "\<\(object\|protocol\|category\)_property\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000125
Bram Moolenaarb8ff1fb2012-02-04 21:59:01 +0100126syn match logtalkBuiltIn "\<co\(mplements_object\|nforms_to_protocol\)\ze("
Bram Moolenaarc236c162008-07-13 17:41:49 +0000127syn match logtalkBuiltIn "\<extends_\(object\|protocol\|category\)\ze("
Bram Moolenaarf4b8e572004-06-24 15:53:16 +0000128syn match logtalkBuiltIn "\<imp\(orts_category\|lements_protocol\)\ze("
Bram Moolenaarc236c162008-07-13 17:41:49 +0000129syn match logtalkBuiltIn "\<\(instantiat\|specializ\)es_class\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000130
Bram Moolenaarf4b8e572004-06-24 15:53:16 +0000131syn match logtalkBuiltIn "\<\(abolish\|define\)_events\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000132syn match logtalkBuiltIn "\<current_event\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000133
Bram Moolenaard473c8c2018-08-11 18:00:22 +0200134syn match logtalkBuiltIn "\<\(create\|current\|set\)_logtalk_flag\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000135
Bram Moolenaard473c8c2018-08-11 18:00:22 +0200136syn match logtalkBuiltIn "\<logtalk_\(compile\|l\(ibrary_path\|oad\|oad_context\)\|make\(_target_action\)\?\)\ze("
137syn match logtalkBuiltIn "\<logtalk_make\>"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000138
Bram Moolenaara0084652005-03-16 09:57:51 +0000139syn match logtalkBuiltIn "\<\(for\|retract\)all\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000140
Bram Moolenaarc236c162008-07-13 17:41:49 +0000141syn match logtalkBuiltIn "\<threaded\(_\(call\|once\|ignore\|exit\|peek\|wait\|notify\)\)\?\ze("
Bram Moolenaard473c8c2018-08-11 18:00:22 +0200142syn match logtalkBuiltIn "\<threaded_engine\(_\(create\|destroy\|self\|next\|next_reified\|yield\|post\|fetch\)\)\?\ze("
Bram Moolenaarc236c162008-07-13 17:41:49 +0000143
Bram Moolenaar071d4272004-06-13 20:20:40 +0000144
145" Logtalk built-in methods
146
Bram Moolenaard473c8c2018-08-11 18:00:22 +0200147syn match logtalkBuiltInMethod "\<context\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000148syn match logtalkBuiltInMethod "\<parameter\ze("
Bram Moolenaarf4b8e572004-06-24 15:53:16 +0000149syn match logtalkBuiltInMethod "\<se\(lf\|nder\)\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000150syn match logtalkBuiltInMethod "\<this\ze("
151
152syn match logtalkBuiltInMethod "\<current_predicate\ze("
153syn match logtalkBuiltInMethod "\<predicate_property\ze("
154
Bram Moolenaar54ee7752005-05-31 22:22:17 +0000155syn match logtalkBuiltInMethod "\<a\(bolish\|ssert\(a\|z\)\)\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000156syn match logtalkBuiltInMethod "\<clause\ze("
Bram Moolenaar54ee7752005-05-31 22:22:17 +0000157syn match logtalkBuiltInMethod "\<retract\(all\)\?\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000158
Bram Moolenaarf4b8e572004-06-24 15:53:16 +0000159syn match logtalkBuiltInMethod "\<\(bag\|set\)of\ze("
160syn match logtalkBuiltInMethod "\<f\(ind\|or\)all\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000161
162syn match logtalkBuiltInMethod "\<before\ze("
163syn match logtalkBuiltInMethod "\<after\ze("
164
Bram Moolenaard473c8c2018-08-11 18:00:22 +0200165syn match logtalkBuiltInMethod "\<forward\ze("
166
Bram Moolenaarb8ff1fb2012-02-04 21:59:01 +0100167syn match logtalkBuiltInMethod "\<expand_\(goal\|term\)\ze("
Bram Moolenaarc236c162008-07-13 17:41:49 +0000168syn match logtalkBuiltInMethod "\<\(goal\|term\)_expansion\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000169syn match logtalkBuiltInMethod "\<phrase\ze("
170
171
172" Mode operators
173
174syn match logtalkOperator "?"
175syn match logtalkOperator "@"
176
177
178" Control constructs
179
180syn match logtalkKeyword "\<true\>"
181syn match logtalkKeyword "\<fail\>"
Bram Moolenaard473c8c2018-08-11 18:00:22 +0200182syn match logtalkKeyword "\<false\>"
Bram Moolenaarf4b8e572004-06-24 15:53:16 +0000183syn match logtalkKeyword "\<ca\(ll\|tch\)\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000184syn match logtalkOperator "!"
Bram Moolenaarf4b8e572004-06-24 15:53:16 +0000185" syn match logtalkOperator ","
Bram Moolenaar071d4272004-06-13 20:20:40 +0000186syn match logtalkOperator ";"
187syn match logtalkOperator "-->"
188syn match logtalkOperator "->"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000189syn match logtalkKeyword "\<throw\ze("
Bram Moolenaard473c8c2018-08-11 18:00:22 +0200190syn match logtalkKeyword "\<\(instantiation\|system\)_error\>"
191syn match logtalkKeyword "\<\(type\|domain\|existence\|permission\|representation\|evaluation\|resource\|syntax\)_error\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000192
193
194" Term unification
195
196syn match logtalkOperator "="
Bram Moolenaard473c8c2018-08-11 18:00:22 +0200197syn match logtalkKeyword "\<subsumes_term\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000198syn match logtalkKeyword "\<unify_with_occurs_check\ze("
199syn match logtalkOperator "\\="
200
201
202" Term testing
203
204syn match logtalkKeyword "\<var\ze("
Bram Moolenaar54ee7752005-05-31 22:22:17 +0000205syn match logtalkKeyword "\<atom\(ic\)\?\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000206syn match logtalkKeyword "\<integer\ze("
207syn match logtalkKeyword "\<float\ze("
Bram Moolenaarb8ff1fb2012-02-04 21:59:01 +0100208syn match logtalkKeyword "\<c\(allable\|ompound\)\ze("
Bram Moolenaarf4b8e572004-06-24 15:53:16 +0000209syn match logtalkKeyword "\<n\(onvar\|umber\)\ze("
Bram Moolenaarb8ff1fb2012-02-04 21:59:01 +0100210syn match logtalkKeyword "\<ground\ze("
Bram Moolenaard473c8c2018-08-11 18:00:22 +0200211syn match logtalkKeyword "\<acyclic_term\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000212
213
214" Term comparison
215
Bram Moolenaarb8ff1fb2012-02-04 21:59:01 +0100216syn match logtalkKeyword "\<compare\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000217syn match logtalkOperator "@=<"
218syn match logtalkOperator "=="
219syn match logtalkOperator "\\=="
220syn match logtalkOperator "@<"
221syn match logtalkOperator "@>"
222syn match logtalkOperator "@>="
223
224
225" Term creation and decomposition
226
227syn match logtalkKeyword "\<functor\ze("
228syn match logtalkKeyword "\<arg\ze("
229syn match logtalkOperator "=\.\."
230syn match logtalkKeyword "\<copy_term\ze("
Bram Moolenaarb8ff1fb2012-02-04 21:59:01 +0100231syn match logtalkKeyword "\<numbervars\ze("
Bram Moolenaard473c8c2018-08-11 18:00:22 +0200232syn match logtalkKeyword "\<term_variables\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000233
234
Bram Moolenaard473c8c2018-08-11 18:00:22 +0200235" Predicate aliases
236
237syn match logtalkOperator "\<as\>"
238
239
240" Arithmetic evaluation
Bram Moolenaar071d4272004-06-13 20:20:40 +0000241
Bram Moolenaara0084652005-03-16 09:57:51 +0000242syn match logtalkOperator "\<is\>"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000243
244
Bram Moolenaard473c8c2018-08-11 18:00:22 +0200245" Arithmetic comparison
Bram Moolenaar071d4272004-06-13 20:20:40 +0000246
247syn match logtalkOperator "=:="
248syn match logtalkOperator "=\\="
249syn match logtalkOperator "<"
250syn match logtalkOperator "=<"
251syn match logtalkOperator ">"
252syn match logtalkOperator ">="
253
254
255" Stream selection and control
256
Bram Moolenaarc236c162008-07-13 17:41:49 +0000257syn match logtalkKeyword "\<\(curren\|se\)t_\(in\|out\)put\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000258syn match logtalkKeyword "\<open\ze("
259syn match logtalkKeyword "\<close\ze("
260syn match logtalkKeyword "\<flush_output\ze("
261syn match logtalkKeyword "\<flush_output\>"
262syn match logtalkKeyword "\<stream_property\ze("
263syn match logtalkKeyword "\<at_end_of_stream\ze("
264syn match logtalkKeyword "\<at_end_of_stream\>"
265syn match logtalkKeyword "\<set_stream_position\ze("
266
267
Bram Moolenaarf4b8e572004-06-24 15:53:16 +0000268" Character and byte input/output
Bram Moolenaar071d4272004-06-13 20:20:40 +0000269
Bram Moolenaar54ee7752005-05-31 22:22:17 +0000270syn match logtalkKeyword "\<\(get\|p\(eek\|ut\)\)_\(c\(har\|ode\)\|byte\)\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000271syn match logtalkKeyword "\<nl\ze("
272syn match logtalkKeyword "\<nl\>"
273
274
Bram Moolenaar071d4272004-06-13 20:20:40 +0000275" Term input/output
276
Bram Moolenaar54ee7752005-05-31 22:22:17 +0000277syn match logtalkKeyword "\<read\(_term\)\?\ze("
278syn match logtalkKeyword "\<write\(q\|_\(canonical\|term\)\)\?\ze("
279syn match logtalkKeyword "\<\(current_\)\?op\ze("
Bram Moolenaarc236c162008-07-13 17:41:49 +0000280syn match logtalkKeyword "\<\(current_\)\?char_conversion\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000281
282
283" Logic and control
284
285syn match logtalkOperator "\\+"
Bram Moolenaarb8ff1fb2012-02-04 21:59:01 +0100286syn match logtalkKeyword "\<ignore\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000287syn match logtalkKeyword "\<once\ze("
288syn match logtalkKeyword "\<repeat\>"
289
290
291" Atomic term processing
292
Bram Moolenaar54ee7752005-05-31 22:22:17 +0000293syn match logtalkKeyword "\<atom_\(length\|c\(hars\|o\(ncat\|des\)\)\)\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000294syn match logtalkKeyword "\<sub_atom\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000295syn match logtalkKeyword "\<char_code\ze("
Bram Moolenaarc236c162008-07-13 17:41:49 +0000296syn match logtalkKeyword "\<number_c\(har\|ode\)s\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000297
298
299" Implementation defined hooks functions
300
Bram Moolenaarc236c162008-07-13 17:41:49 +0000301syn match logtalkKeyword "\<\(curren\|se\)t_prolog_flag\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000302syn match logtalkKeyword "\<halt\ze("
303syn match logtalkKeyword "\<halt\>"
304
305
Bram Moolenaarb8ff1fb2012-02-04 21:59:01 +0100306" Sorting
307
308syn match logtalkKeyword "\<\(key\)\?sort\ze("
309
310
Bram Moolenaar071d4272004-06-13 20:20:40 +0000311" Evaluable functors
312
313syn match logtalkOperator "+"
314syn match logtalkOperator "-"
315syn match logtalkOperator "\*"
316syn match logtalkOperator "//"
317syn match logtalkOperator "/"
Bram Moolenaard473c8c2018-08-11 18:00:22 +0200318syn match logtalkKeyword "\<div\ze("
Bram Moolenaar54ee7752005-05-31 22:22:17 +0000319syn match logtalkKeyword "\<r\(ound\|em\)\ze("
Bram Moolenaarb8ff1fb2012-02-04 21:59:01 +0100320syn match logtalkKeyword "\<e\>"
321syn match logtalkKeyword "\<pi\>"
Bram Moolenaard473c8c2018-08-11 18:00:22 +0200322syn match logtalkKeyword "\<div\>"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000323syn match logtalkKeyword "\<rem\>"
Bram Moolenaard473c8c2018-08-11 18:00:22 +0200324syn match logtalkKeyword "\<m\(ax\|in\|od\)\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000325syn match logtalkKeyword "\<mod\>"
326syn match logtalkKeyword "\<abs\ze("
327syn match logtalkKeyword "\<sign\ze("
Bram Moolenaar54ee7752005-05-31 22:22:17 +0000328syn match logtalkKeyword "\<flo\(or\|at\(_\(integer\|fractional\)_part\)\?\)\ze("
Bram Moolenaard473c8c2018-08-11 18:00:22 +0200329syn match logtalkKeyword "\<t\(an\|runcate\)\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000330syn match logtalkKeyword "\<ceiling\ze("
331
332
333" Other arithemtic functors
334
335syn match logtalkOperator "\*\*"
Bram Moolenaarf4b8e572004-06-24 15:53:16 +0000336syn match logtalkKeyword "\<s\(in\|qrt\)\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000337syn match logtalkKeyword "\<cos\ze("
Bram Moolenaard473c8c2018-08-11 18:00:22 +0200338syn match logtalkKeyword "\<a\(cos\|sin\|tan\|tan2\)\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000339syn match logtalkKeyword "\<exp\ze("
340syn match logtalkKeyword "\<log\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000341
342
343" Bitwise functors
344
345syn match logtalkOperator ">>"
346syn match logtalkOperator "<<"
347syn match logtalkOperator "/\\"
348syn match logtalkOperator "\\/"
349syn match logtalkOperator "\\"
Bram Moolenaard473c8c2018-08-11 18:00:22 +0200350syn match logtalkKeyword "\<xor\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000351
352
Bram Moolenaar071d4272004-06-13 20:20:40 +0000353" Logtalk list operator
354
355syn match logtalkOperator "|"
356
357
Bram Moolenaarb8ff1fb2012-02-04 21:59:01 +0100358" Logtalk existential quantifier operator
359
360syn match logtalkOperator "\^"
361
362
363" Logtalk numbers
Bram Moolenaar54ee7752005-05-31 22:22:17 +0000364
365syn match logtalkNumber "\<\d\+\>"
366syn match logtalkNumber "\<\d\+\.\d\+\>"
367syn match logtalkNumber "\<\d\+[eE][-+]\=\d\+\>"
368syn match logtalkNumber "\<\d\+\.\d\+[eE][-+]\=\d\+\>"
Bram Moolenaard473c8c2018-08-11 18:00:22 +0200369syn match logtalkNumber "\<0'[\\]\?.\|0''\|0'\"\>"
Bram Moolenaar54ee7752005-05-31 22:22:17 +0000370syn match logtalkNumber "\<0b[0-1]\+\>"
Bram Moolenaar45eeb132005-06-06 21:59:07 +0000371syn match logtalkNumber "\<0o\o\+\>"
Bram Moolenaar54ee7752005-05-31 22:22:17 +0000372syn match logtalkNumber "\<0x\x\+\>"
373
374
375" Logtalk end-of-clause
376
377syn match logtalkOperator "\."
378
379
Bram Moolenaar071d4272004-06-13 20:20:40 +0000380" Logtalk comments
381
Bram Moolenaar45eeb132005-06-06 21:59:07 +0000382syn region logtalkBlockComment start="/\*" end="\*/" fold
Bram Moolenaar071d4272004-06-13 20:20:40 +0000383syn match logtalkLineComment "%.*"
384
Bram Moolenaarb8ff1fb2012-02-04 21:59:01 +0100385syn cluster logtalkComment contains=logtalkBlockComment,logtalkLineComment
386
387
388" Logtalk conditional compilation folding
389
390syn region logtalkIfContainer transparent keepend extend start=":- if(" end=":- endif\." containedin=ALLBUT,@logtalkComment contains=NONE
391syn region logtalkIf transparent fold keepend start=":- if(" end=":- \(else\.\|elif(\)"ms=s-1,me=s-1 contained containedin=logtalkIfContainer nextgroup=logtalkElseIf,logtalkElse contains=TOP
392syn region logtalkElseIf transparent fold keepend start=":- elif(" end=":- \(else\.\|elif(\)"ms=s-1,me=s-1 contained containedin=logtalkIfContainer nextgroup=logtalkElseIf,logtalkElse contains=TOP
393syn region logtalkElse transparent fold keepend start=":- else\." end=":- endif\." contained containedin=logtalkIfContainer contains=TOP
394
395
Bram Moolenaar071d4272004-06-13 20:20:40 +0000396
Bram Moolenaar45eeb132005-06-06 21:59:07 +0000397" Logtalk entity folding
398
399syn region logtalkEntity transparent fold keepend start=":- object(" end=":- end_object\." contains=ALL
400syn region logtalkEntity transparent fold keepend start=":- protocol(" end=":- end_protocol\." contains=ALL
401syn region logtalkEntity transparent fold keepend start=":- category(" end=":- end_category\." contains=ALL
402
403
Bram Moolenaara0084652005-03-16 09:57:51 +0000404syn sync ccomment logtalkBlockComment maxlines=50
Bram Moolenaar071d4272004-06-13 20:20:40 +0000405
406
407" Define the default highlighting.
Bram Moolenaar89bcfda2016-08-30 23:26:57 +0200408" Only when an item doesn't have highlighting yet
Bram Moolenaar071d4272004-06-13 20:20:40 +0000409
Bram Moolenaarf37506f2016-08-31 22:22:10 +0200410hi def link logtalkBlockComment Comment
411hi def link logtalkLineComment Comment
Bram Moolenaarc236c162008-07-13 17:41:49 +0000412
Bram Moolenaarf37506f2016-08-31 22:22:10 +0200413hi def link logtalkOpenEntityDir Normal
414hi def link logtalkOpenEntityDirTag PreProc
Bram Moolenaar071d4272004-06-13 20:20:40 +0000415
Bram Moolenaarf37506f2016-08-31 22:22:10 +0200416hi def link logtalkIfContainer PreProc
417hi def link logtalkIf PreProc
418hi def link logtalkElseIf PreProc
419hi def link logtalkElse PreProc
Bram Moolenaar071d4272004-06-13 20:20:40 +0000420
Bram Moolenaarf37506f2016-08-31 22:22:10 +0200421hi def link logtalkEntity Normal
Bram Moolenaarb8ff1fb2012-02-04 21:59:01 +0100422
Bram Moolenaarf37506f2016-08-31 22:22:10 +0200423hi def link logtalkEntityRel Normal
424hi def link logtalkEntityRelTag PreProc
Bram Moolenaar071d4272004-06-13 20:20:40 +0000425
Bram Moolenaarf37506f2016-08-31 22:22:10 +0200426hi def link logtalkCloseEntityDir PreProc
Bram Moolenaar071d4272004-06-13 20:20:40 +0000427
Bram Moolenaarf37506f2016-08-31 22:22:10 +0200428hi def link logtalkDir Normal
429hi def link logtalkDirTag PreProc
Bram Moolenaar071d4272004-06-13 20:20:40 +0000430
Bram Moolenaarf37506f2016-08-31 22:22:10 +0200431hi def link logtalkAtom String
432hi def link logtalkString String
433hi def link logtalkEscapeSequence SpecialChar
Bram Moolenaar071d4272004-06-13 20:20:40 +0000434
Bram Moolenaarf37506f2016-08-31 22:22:10 +0200435hi def link logtalkNumber Number
Bram Moolenaar071d4272004-06-13 20:20:40 +0000436
Bram Moolenaarf37506f2016-08-31 22:22:10 +0200437hi def link logtalkKeyword Keyword
Bram Moolenaar071d4272004-06-13 20:20:40 +0000438
Bram Moolenaarf37506f2016-08-31 22:22:10 +0200439hi def link logtalkBuiltIn Keyword
440hi def link logtalkBuiltInMethod Keyword
Bram Moolenaar071d4272004-06-13 20:20:40 +0000441
Bram Moolenaarf37506f2016-08-31 22:22:10 +0200442hi def link logtalkOperator Operator
Bram Moolenaar071d4272004-06-13 20:20:40 +0000443
Bram Moolenaarf37506f2016-08-31 22:22:10 +0200444hi def link logtalkExtCall Normal
445hi def link logtalkExtCallTag Operator
Bram Moolenaar071d4272004-06-13 20:20:40 +0000446
Bram Moolenaarf37506f2016-08-31 22:22:10 +0200447hi def link logtalkVariable Identifier
Bram Moolenaar071d4272004-06-13 20:20:40 +0000448
Bram Moolenaar071d4272004-06-13 20:20:40 +0000449
450
451let b:current_syntax = "logtalk"
Bram Moolenaarb8ff1fb2012-02-04 21:59:01 +0100452
453let &cpo = s:cpo_save
454unlet s:cpo_save