blob: 2c6c82aaa0e1583bcf78b4ff2dcf162c6faafb71 [file] [log] [blame]
Bram Moolenaar071d4272004-06-13 20:20:40 +00001" Vim syntax file
2"
3" Language: Logtalk
Paulo Moura0f619432023-12-16 13:27:09 +00004" Maintainer: Paulo Moura <pmoura@logtalk.org>
5" Last Change: December 16, 2023
6
Bram Moolenaar071d4272004-06-13 20:20:40 +00007
8
Bram Moolenaar89bcfda2016-08-30 23:26:57 +02009" quit when a syntax file was already loaded
10if exists("b:current_syntax")
Bram Moolenaar071d4272004-06-13 20:20:40 +000011 finish
12endif
13
Bram Moolenaarb8ff1fb2012-02-04 21:59:01 +010014let s:cpo_save = &cpo
15set cpo&vim
Bram Moolenaar071d4272004-06-13 20:20:40 +000016
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
Paulo Moura0f619432023-12-16 13:27:09 +000034syn region logtalkString start=+"+ skip=+\\"+ end=+"+ contains=logtalkEscapeSequence
Bram Moolenaarc236c162008-07-13 17:41:49 +000035syn region logtalkAtom start=+'+ skip=+\\'+ end=+'+ contains=logtalkEscapeSequence
36
37syn match logtalkEscapeSequence contained "\\\([\\abfnrtv\"\']\|\(x[a-fA-F0-9]\+\|[0-7]\+\)\\\)"
Bram Moolenaar071d4272004-06-13 20:20:40 +000038
39
40" Logtalk message sending operators
41
42syn match logtalkOperator "::"
Paulo Moura0f619432023-12-16 13:27:09 +000043syn match logtalkOperator "\(0'\)\@<!:"
Bram Moolenaar071d4272004-06-13 20:20:40 +000044syn match logtalkOperator "\^\^"
45
46
47" Logtalk external call
48
49syn region logtalkExtCall matchgroup=logtalkExtCallTag start="{" matchgroup=logtalkExtCallTag end="}" contains=ALL
50
51
52" Logtalk opening entity directives
53
Bram Moolenaar5c736222010-01-06 20:54:52 +010054syn region logtalkOpenEntityDir matchgroup=logtalkOpenEntityDirTag start=":- object(" matchgroup=logtalkOpenEntityDirTag end=")\." contains=logtalkEntity,logtalkVariable,logtalkNumber,logtalkOperator,logtalkString,logtalkAtom,logtalkEntityRel,logtalkLineComment
55syn region logtalkOpenEntityDir matchgroup=logtalkOpenEntityDirTag start=":- protocol(" matchgroup=logtalkOpenEntityDirTag end=")\." contains=logtalkEntity,logtalkVariable,logtalkNumber,logtalkOperator,logtalkEntityRel,logtalkLineComment
56syn region logtalkOpenEntityDir matchgroup=logtalkOpenEntityDirTag start=":- category(" matchgroup=logtalkOpenEntityDirTag end=")\." contains=logtalkEntity,logtalkVariable,logtalkNumber,logtalkOperator,logtalkEntityRel,logtalkLineComment
Bram Moolenaar071d4272004-06-13 20:20:40 +000057
58
59" Logtalk closing entity directives
60
Bram Moolenaar45eeb132005-06-06 21:59:07 +000061syn match logtalkCloseEntityDir ":- end_object\."
62syn match logtalkCloseEntityDir ":- end_protocol\."
63syn match logtalkCloseEntityDir ":- end_category\."
Bram Moolenaar071d4272004-06-13 20:20:40 +000064
65
66" Logtalk entity relations
67
Bram Moolenaarc236c162008-07-13 17:41:49 +000068syn region logtalkEntityRel matchgroup=logtalkEntityRelTag start="instantiates(" matchgroup=logtalkEntityRelTag end=")" contains=logtalkEntity,logtalkVariable,logtalkNumber,logtalkOperator,logtalkString,logtalkAtom contained
69syn region logtalkEntityRel matchgroup=logtalkEntityRelTag start="specializes(" matchgroup=logtalkEntityRelTag end=")" contains=logtalkEntity,logtalkVariable,logtalkNumber,logtalkOperator,logtalkString,logtalkAtom contained
70syn region logtalkEntityRel matchgroup=logtalkEntityRelTag start="extends(" matchgroup=logtalkEntityRelTag end=")" contains=logtalkEntity,logtalkVariable,logtalkNumber,logtalkOperator,logtalkString,logtalkAtom contained
71syn region logtalkEntityRel matchgroup=logtalkEntityRelTag start="imports(" matchgroup=logtalkEntityRelTag end=")" contains=logtalkEntity,logtalkVariable,logtalkNumber,logtalkOperator,logtalkString,logtalkAtom contained
72syn region logtalkEntityRel matchgroup=logtalkEntityRelTag start="implements(" matchgroup=logtalkEntityRelTag end=")" contains=logtalkEntity,logtalkVariable,logtalkNumber,logtalkOperator,logtalkString,logtalkAtom contained
73syn region logtalkEntityRel matchgroup=logtalkEntityRelTag start="complements(" matchgroup=logtalkEntityRelTag end=")" contains=logtalkEntity,logtalkVariable,logtalkNumber,logtalkOperator,logtalkString,logtalkAtom contained
Bram Moolenaar071d4272004-06-13 20:20:40 +000074
75
76" Logtalk directives
77
Bram Moolenaarb8ff1fb2012-02-04 21:59:01 +010078syn region logtalkDir matchgroup=logtalkDirTag start=":- if(" matchgroup=logtalkDirTag end=")\." contains=ALL
79syn region logtalkDir matchgroup=logtalkDirTag start=":- elif(" matchgroup=logtalkDirTag end=")\." contains=ALL
80syn match logtalkDirTag ":- else\."
81syn match logtalkDirTag ":- endif\."
Bram Moolenaara0084652005-03-16 09:57:51 +000082syn region logtalkDir matchgroup=logtalkDirTag start=":- alias(" matchgroup=logtalkDirTag end=")\." contains=ALL
Bram Moolenaarb8ff1fb2012-02-04 21:59:01 +010083syn region logtalkDir matchgroup=logtalkDirTag start=":- coinductive(" matchgroup=logtalkDirTag end=")\." contains=ALL
Bram Moolenaarc236c162008-07-13 17:41:49 +000084syn region logtalkDir matchgroup=logtalkDirTag start=":- encoding(" matchgroup=logtalkDirTag end=")\." contains=ALL
Bram Moolenaar071d4272004-06-13 20:20:40 +000085syn region logtalkDir matchgroup=logtalkDirTag start=":- initialization(" matchgroup=logtalkDirTag end=")\." contains=ALL
86syn region logtalkDir matchgroup=logtalkDirTag start=":- info(" matchgroup=logtalkDirTag end=")\." contains=ALL
Bram Moolenaara0084652005-03-16 09:57:51 +000087syn region logtalkDir matchgroup=logtalkDirTag start=":- mode(" matchgroup=logtalkDirTag end=")\." contains=logtalkOperator, logtalkAtom
Bram Moolenaar071d4272004-06-13 20:20:40 +000088syn region logtalkDir matchgroup=logtalkDirTag start=":- dynamic(" matchgroup=logtalkDirTag end=")\." contains=ALL
Bram Moolenaard473c8c2018-08-11 18:00:22 +020089syn match logtalkDirTag ":- built_in\."
Bram Moolenaar071d4272004-06-13 20:20:40 +000090syn match logtalkDirTag ":- dynamic\."
91syn region logtalkDir matchgroup=logtalkDirTag start=":- discontiguous(" matchgroup=logtalkDirTag end=")\." contains=ALL
Bram Moolenaara0084652005-03-16 09:57:51 +000092syn region logtalkDir matchgroup=logtalkDirTag start=":- multifile(" matchgroup=logtalkDirTag end=")\." contains=ALL
Bram Moolenaar071d4272004-06-13 20:20:40 +000093syn region logtalkDir matchgroup=logtalkDirTag start=":- public(" matchgroup=logtalkDirTag end=")\." contains=ALL
94syn region logtalkDir matchgroup=logtalkDirTag start=":- protected(" matchgroup=logtalkDirTag end=")\." contains=ALL
95syn region logtalkDir matchgroup=logtalkDirTag start=":- private(" matchgroup=logtalkDirTag end=")\." contains=ALL
Bram Moolenaarc236c162008-07-13 17:41:49 +000096syn region logtalkDir matchgroup=logtalkDirTag start=":- meta_predicate(" matchgroup=logtalkDirTag end=")\." contains=ALL
Bram Moolenaarb8ff1fb2012-02-04 21:59:01 +010097syn region logtalkDir matchgroup=logtalkDirTag start=":- meta_non_terminal(" matchgroup=logtalkDirTag end=")\." contains=ALL
Bram Moolenaar071d4272004-06-13 20:20:40 +000098syn region logtalkDir matchgroup=logtalkDirTag start=":- op(" matchgroup=logtalkDirTag end=")\." contains=ALL
Bram Moolenaarb8ff1fb2012-02-04 21:59:01 +010099syn region logtalkDir matchgroup=logtalkDirTag start=":- set_logtalk_flag(" matchgroup=logtalkDirTag end=")\." contains=ALL
Bram Moolenaarc236c162008-07-13 17:41:49 +0000100syn region logtalkDir matchgroup=logtalkDirTag start=":- synchronized(" matchgroup=logtalkDirTag end=")\." contains=ALL
101syn match logtalkDirTag ":- synchronized\."
Bram Moolenaar071d4272004-06-13 20:20:40 +0000102syn region logtalkDir matchgroup=logtalkDirTag start=":- uses(" matchgroup=logtalkDirTag end=")\." contains=ALL
Bram Moolenaarc236c162008-07-13 17:41:49 +0000103syn match logtalkDirTag ":- threaded\."
Bram Moolenaar071d4272004-06-13 20:20:40 +0000104
105
Bram Moolenaarb8ff1fb2012-02-04 21:59:01 +0100106" Prolog directives
107
108syn region logtalkDir matchgroup=logtalkDirTag start=":- ensure_loaded(" matchgroup=logtalkDirTag end=")\." contains=ALL
109syn region logtalkDir matchgroup=logtalkDirTag start=":- include(" matchgroup=logtalkDirTag end=")\." contains=ALL
110syn region logtalkDir matchgroup=logtalkDirTag start=":- set_prolog_flag(" matchgroup=logtalkDirTag end=")\." contains=ALL
111
112
Bram Moolenaar362e1a32006-03-06 23:29:24 +0000113" Module directives
114
115syn region logtalkDir matchgroup=logtalkDirTag start=":- module(" matchgroup=logtalkDirTag end=")\." contains=ALL
116syn region logtalkDir matchgroup=logtalkDirTag start=":- export(" matchgroup=logtalkDirTag end=")\." contains=ALL
Bram Moolenaarb8ff1fb2012-02-04 21:59:01 +0100117syn region logtalkDir matchgroup=logtalkDirTag start=":- reexport(" matchgroup=logtalkDirTag end=")\." contains=ALL
Bram Moolenaar362e1a32006-03-06 23:29:24 +0000118syn region logtalkDir matchgroup=logtalkDirTag start=":- use_module(" matchgroup=logtalkDirTag end=")\." contains=ALL
119
120
Bram Moolenaar071d4272004-06-13 20:20:40 +0000121" Logtalk built-in predicates
122
Bram Moolenaar54ee7752005-05-31 22:22:17 +0000123syn match logtalkBuiltIn "\<\(abolish\|c\(reate\|urrent\)\)_\(object\|protocol\|category\)\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000124
Bram Moolenaarf4b8e572004-06-24 15:53:16 +0000125syn match logtalkBuiltIn "\<\(object\|protocol\|category\)_property\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000126
Bram Moolenaarb8ff1fb2012-02-04 21:59:01 +0100127syn match logtalkBuiltIn "\<co\(mplements_object\|nforms_to_protocol\)\ze("
Bram Moolenaarc236c162008-07-13 17:41:49 +0000128syn match logtalkBuiltIn "\<extends_\(object\|protocol\|category\)\ze("
Bram Moolenaarf4b8e572004-06-24 15:53:16 +0000129syn match logtalkBuiltIn "\<imp\(orts_category\|lements_protocol\)\ze("
Bram Moolenaarc236c162008-07-13 17:41:49 +0000130syn match logtalkBuiltIn "\<\(instantiat\|specializ\)es_class\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000131
Bram Moolenaarf4b8e572004-06-24 15:53:16 +0000132syn match logtalkBuiltIn "\<\(abolish\|define\)_events\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000133syn match logtalkBuiltIn "\<current_event\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000134
Bram Moolenaard473c8c2018-08-11 18:00:22 +0200135syn match logtalkBuiltIn "\<\(create\|current\|set\)_logtalk_flag\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000136
Bram Moolenaard473c8c2018-08-11 18:00:22 +0200137syn match logtalkBuiltIn "\<logtalk_\(compile\|l\(ibrary_path\|oad\|oad_context\)\|make\(_target_action\)\?\)\ze("
138syn match logtalkBuiltIn "\<logtalk_make\>"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000139
Bram Moolenaara0084652005-03-16 09:57:51 +0000140syn match logtalkBuiltIn "\<\(for\|retract\)all\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000141
Paulo Moura0f619432023-12-16 13:27:09 +0000142syn match logtalkBuiltIn "\<threaded\(_\(ca\(ll\|ncel\)\|once\|ignore\|exit\|peek\|wait\|notify\)\)\?\ze("
Bram Moolenaard473c8c2018-08-11 18:00:22 +0200143syn match logtalkBuiltIn "\<threaded_engine\(_\(create\|destroy\|self\|next\|next_reified\|yield\|post\|fetch\)\)\?\ze("
Bram Moolenaarc236c162008-07-13 17:41:49 +0000144
Bram Moolenaar071d4272004-06-13 20:20:40 +0000145
146" Logtalk built-in methods
147
Bram Moolenaard473c8c2018-08-11 18:00:22 +0200148syn match logtalkBuiltInMethod "\<context\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000149syn match logtalkBuiltInMethod "\<parameter\ze("
Bram Moolenaarf4b8e572004-06-24 15:53:16 +0000150syn match logtalkBuiltInMethod "\<se\(lf\|nder\)\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000151syn match logtalkBuiltInMethod "\<this\ze("
152
153syn match logtalkBuiltInMethod "\<current_predicate\ze("
154syn match logtalkBuiltInMethod "\<predicate_property\ze("
155
Bram Moolenaar54ee7752005-05-31 22:22:17 +0000156syn match logtalkBuiltInMethod "\<a\(bolish\|ssert\(a\|z\)\)\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000157syn match logtalkBuiltInMethod "\<clause\ze("
Bram Moolenaar54ee7752005-05-31 22:22:17 +0000158syn match logtalkBuiltInMethod "\<retract\(all\)\?\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000159
Bram Moolenaarf4b8e572004-06-24 15:53:16 +0000160syn match logtalkBuiltInMethod "\<\(bag\|set\)of\ze("
161syn match logtalkBuiltInMethod "\<f\(ind\|or\)all\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000162
163syn match logtalkBuiltInMethod "\<before\ze("
164syn match logtalkBuiltInMethod "\<after\ze("
165
Bram Moolenaard473c8c2018-08-11 18:00:22 +0200166syn match logtalkBuiltInMethod "\<forward\ze("
167
Bram Moolenaarb8ff1fb2012-02-04 21:59:01 +0100168syn match logtalkBuiltInMethod "\<expand_\(goal\|term\)\ze("
Bram Moolenaarc236c162008-07-13 17:41:49 +0000169syn match logtalkBuiltInMethod "\<\(goal\|term\)_expansion\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000170syn match logtalkBuiltInMethod "\<phrase\ze("
171
172
173" Mode operators
174
Paulo Moura0f619432023-12-16 13:27:09 +0000175syn match logtalkOperator "\(0'\)\@<!?"
176syn match logtalkOperator "\(0'\)\@<!@"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000177
178
179" Control constructs
180
181syn match logtalkKeyword "\<true\>"
182syn match logtalkKeyword "\<fail\>"
Bram Moolenaard473c8c2018-08-11 18:00:22 +0200183syn match logtalkKeyword "\<false\>"
Bram Moolenaarf4b8e572004-06-24 15:53:16 +0000184syn match logtalkKeyword "\<ca\(ll\|tch\)\ze("
Paulo Moura0f619432023-12-16 13:27:09 +0000185syn match logtalkOperator "\(0'\)\@<!!"
186" syn match logtalkOperator "\(0'\)\@<!,"
187syn match logtalkOperator "\(0'\)\@<!;"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000188syn match logtalkOperator "-->"
189syn match logtalkOperator "->"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000190syn match logtalkKeyword "\<throw\ze("
Bram Moolenaard473c8c2018-08-11 18:00:22 +0200191syn match logtalkKeyword "\<\(instantiation\|system\)_error\>"
Paulo Moura0f619432023-12-16 13:27:09 +0000192syn match logtalkKeyword "\<\(uninstantiation\|type\|domain\|existence\|permission\|representation\|evaluation\|resource\|syntax\)_error\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000193
194
195" Term unification
196
Paulo Moura0f619432023-12-16 13:27:09 +0000197syn match logtalkOperator "\(0'\)\@<!="
Bram Moolenaard473c8c2018-08-11 18:00:22 +0200198syn match logtalkKeyword "\<subsumes_term\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000199syn match logtalkKeyword "\<unify_with_occurs_check\ze("
200syn match logtalkOperator "\\="
201
202
203" Term testing
204
205syn match logtalkKeyword "\<var\ze("
Bram Moolenaar54ee7752005-05-31 22:22:17 +0000206syn match logtalkKeyword "\<atom\(ic\)\?\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000207syn match logtalkKeyword "\<integer\ze("
208syn match logtalkKeyword "\<float\ze("
Bram Moolenaarb8ff1fb2012-02-04 21:59:01 +0100209syn match logtalkKeyword "\<c\(allable\|ompound\)\ze("
Bram Moolenaarf4b8e572004-06-24 15:53:16 +0000210syn match logtalkKeyword "\<n\(onvar\|umber\)\ze("
Bram Moolenaarb8ff1fb2012-02-04 21:59:01 +0100211syn match logtalkKeyword "\<ground\ze("
Bram Moolenaard473c8c2018-08-11 18:00:22 +0200212syn match logtalkKeyword "\<acyclic_term\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000213
214
215" Term comparison
216
Bram Moolenaarb8ff1fb2012-02-04 21:59:01 +0100217syn match logtalkKeyword "\<compare\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000218syn match logtalkOperator "@=<"
219syn match logtalkOperator "=="
220syn match logtalkOperator "\\=="
221syn match logtalkOperator "@<"
222syn match logtalkOperator "@>"
223syn match logtalkOperator "@>="
224
225
226" Term creation and decomposition
227
228syn match logtalkKeyword "\<functor\ze("
229syn match logtalkKeyword "\<arg\ze("
230syn match logtalkOperator "=\.\."
231syn match logtalkKeyword "\<copy_term\ze("
Bram Moolenaarb8ff1fb2012-02-04 21:59:01 +0100232syn match logtalkKeyword "\<numbervars\ze("
Bram Moolenaard473c8c2018-08-11 18:00:22 +0200233syn match logtalkKeyword "\<term_variables\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000234
235
Bram Moolenaard473c8c2018-08-11 18:00:22 +0200236" Predicate aliases
237
238syn match logtalkOperator "\<as\>"
239
240
241" Arithmetic evaluation
Bram Moolenaar071d4272004-06-13 20:20:40 +0000242
Bram Moolenaara0084652005-03-16 09:57:51 +0000243syn match logtalkOperator "\<is\>"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000244
245
Bram Moolenaard473c8c2018-08-11 18:00:22 +0200246" Arithmetic comparison
Bram Moolenaar071d4272004-06-13 20:20:40 +0000247
248syn match logtalkOperator "=:="
249syn match logtalkOperator "=\\="
Paulo Moura0f619432023-12-16 13:27:09 +0000250syn match logtalkOperator "\(0'\)\@<!<"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000251syn match logtalkOperator "=<"
Paulo Moura0f619432023-12-16 13:27:09 +0000252syn match logtalkOperator "\(0'\)\@<!>"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000253syn match logtalkOperator ">="
254
255
256" Stream selection and control
257
Bram Moolenaarc236c162008-07-13 17:41:49 +0000258syn match logtalkKeyword "\<\(curren\|se\)t_\(in\|out\)put\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000259syn match logtalkKeyword "\<open\ze("
260syn match logtalkKeyword "\<close\ze("
261syn match logtalkKeyword "\<flush_output\ze("
262syn match logtalkKeyword "\<flush_output\>"
263syn match logtalkKeyword "\<stream_property\ze("
264syn match logtalkKeyword "\<at_end_of_stream\ze("
265syn match logtalkKeyword "\<at_end_of_stream\>"
266syn match logtalkKeyword "\<set_stream_position\ze("
267
268
Bram Moolenaarf4b8e572004-06-24 15:53:16 +0000269" Character and byte input/output
Bram Moolenaar071d4272004-06-13 20:20:40 +0000270
Bram Moolenaar54ee7752005-05-31 22:22:17 +0000271syn match logtalkKeyword "\<\(get\|p\(eek\|ut\)\)_\(c\(har\|ode\)\|byte\)\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000272syn match logtalkKeyword "\<nl\ze("
273syn match logtalkKeyword "\<nl\>"
274
275
Bram Moolenaar071d4272004-06-13 20:20:40 +0000276" Term input/output
277
Bram Moolenaar54ee7752005-05-31 22:22:17 +0000278syn match logtalkKeyword "\<read\(_term\)\?\ze("
279syn match logtalkKeyword "\<write\(q\|_\(canonical\|term\)\)\?\ze("
280syn match logtalkKeyword "\<\(current_\)\?op\ze("
Bram Moolenaarc236c162008-07-13 17:41:49 +0000281syn match logtalkKeyword "\<\(current_\)\?char_conversion\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000282
283
284" Logic and control
285
286syn match logtalkOperator "\\+"
Bram Moolenaarb8ff1fb2012-02-04 21:59:01 +0100287syn match logtalkKeyword "\<ignore\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000288syn match logtalkKeyword "\<once\ze("
289syn match logtalkKeyword "\<repeat\>"
290
291
292" Atomic term processing
293
Bram Moolenaar54ee7752005-05-31 22:22:17 +0000294syn match logtalkKeyword "\<atom_\(length\|c\(hars\|o\(ncat\|des\)\)\)\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000295syn match logtalkKeyword "\<sub_atom\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000296syn match logtalkKeyword "\<char_code\ze("
Bram Moolenaarc236c162008-07-13 17:41:49 +0000297syn match logtalkKeyword "\<number_c\(har\|ode\)s\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000298
299
300" Implementation defined hooks functions
301
Bram Moolenaarc236c162008-07-13 17:41:49 +0000302syn match logtalkKeyword "\<\(curren\|se\)t_prolog_flag\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000303syn match logtalkKeyword "\<halt\ze("
304syn match logtalkKeyword "\<halt\>"
305
306
Bram Moolenaarb8ff1fb2012-02-04 21:59:01 +0100307" Sorting
308
309syn match logtalkKeyword "\<\(key\)\?sort\ze("
310
311
Bram Moolenaar071d4272004-06-13 20:20:40 +0000312" Evaluable functors
313
Paulo Moura0f619432023-12-16 13:27:09 +0000314syn match logtalkOperator "\(0'\)\@<![+]"
315syn match logtalkOperator "\(0'\)\@<![-]"
316syn match logtalkOperator "\(0'\)\@<!\*"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000317syn match logtalkOperator "//"
Paulo Moura0f619432023-12-16 13:27:09 +0000318syn match logtalkOperator "\(0'\)\@<!/"
Bram Moolenaard473c8c2018-08-11 18:00:22 +0200319syn match logtalkKeyword "\<div\ze("
Bram Moolenaar54ee7752005-05-31 22:22:17 +0000320syn match logtalkKeyword "\<r\(ound\|em\)\ze("
Bram Moolenaarb8ff1fb2012-02-04 21:59:01 +0100321syn match logtalkKeyword "\<e\>"
322syn match logtalkKeyword "\<pi\>"
Bram Moolenaard473c8c2018-08-11 18:00:22 +0200323syn match logtalkKeyword "\<div\>"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000324syn match logtalkKeyword "\<rem\>"
Bram Moolenaard473c8c2018-08-11 18:00:22 +0200325syn match logtalkKeyword "\<m\(ax\|in\|od\)\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000326syn match logtalkKeyword "\<mod\>"
327syn match logtalkKeyword "\<abs\ze("
328syn match logtalkKeyword "\<sign\ze("
Bram Moolenaar54ee7752005-05-31 22:22:17 +0000329syn match logtalkKeyword "\<flo\(or\|at\(_\(integer\|fractional\)_part\)\?\)\ze("
Bram Moolenaard473c8c2018-08-11 18:00:22 +0200330syn match logtalkKeyword "\<t\(an\|runcate\)\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000331syn match logtalkKeyword "\<ceiling\ze("
332
333
Paulo Moura0f619432023-12-16 13:27:09 +0000334" Other arithemtic functors
Bram Moolenaar071d4272004-06-13 20:20:40 +0000335
336syn match logtalkOperator "\*\*"
Bram Moolenaarf4b8e572004-06-24 15:53:16 +0000337syn match logtalkKeyword "\<s\(in\|qrt\)\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000338syn match logtalkKeyword "\<cos\ze("
Bram Moolenaard473c8c2018-08-11 18:00:22 +0200339syn match logtalkKeyword "\<a\(cos\|sin\|tan\|tan2\)\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000340syn match logtalkKeyword "\<exp\ze("
341syn match logtalkKeyword "\<log\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000342
343
344" Bitwise functors
345
346syn match logtalkOperator ">>"
347syn match logtalkOperator "<<"
348syn match logtalkOperator "/\\"
349syn match logtalkOperator "\\/"
Paulo Moura0f619432023-12-16 13:27:09 +0000350syn match logtalkOperator "0'\@<!\\"
Bram Moolenaard473c8c2018-08-11 18:00:22 +0200351syn match logtalkKeyword "\<xor\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000352
353
Bram Moolenaar071d4272004-06-13 20:20:40 +0000354" Logtalk list operator
355
Paulo Moura0f619432023-12-16 13:27:09 +0000356syn match logtalkOperator "\(0'\)\@<!|"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000357
358
Bram Moolenaarb8ff1fb2012-02-04 21:59:01 +0100359" Logtalk existential quantifier operator
360
Paulo Moura0f619432023-12-16 13:27:09 +0000361syn match logtalkOperator "\(0'\)\@<!^"
Bram Moolenaarb8ff1fb2012-02-04 21:59:01 +0100362
363
364" Logtalk numbers
Bram Moolenaar54ee7752005-05-31 22:22:17 +0000365
366syn match logtalkNumber "\<\d\+\>"
367syn match logtalkNumber "\<\d\+\.\d\+\>"
368syn match logtalkNumber "\<\d\+[eE][-+]\=\d\+\>"
369syn match logtalkNumber "\<\d\+\.\d\+[eE][-+]\=\d\+\>"
Paulo Moura0f619432023-12-16 13:27:09 +0000370syn match logtalkNumber "0'[\\]\?."
Bram Moolenaar54ee7752005-05-31 22:22:17 +0000371syn match logtalkNumber "\<0b[0-1]\+\>"
Bram Moolenaar45eeb132005-06-06 21:59:07 +0000372syn match logtalkNumber "\<0o\o\+\>"
Bram Moolenaar54ee7752005-05-31 22:22:17 +0000373syn match logtalkNumber "\<0x\x\+\>"
374
375
376" Logtalk end-of-clause
377
Paulo Moura0f619432023-12-16 13:27:09 +0000378syn match logtalkOperator "\(0'\)\@<!\."
Bram Moolenaar54ee7752005-05-31 22:22:17 +0000379
380
Bram Moolenaar071d4272004-06-13 20:20:40 +0000381" Logtalk comments
382
Bram Moolenaar45eeb132005-06-06 21:59:07 +0000383syn region logtalkBlockComment start="/\*" end="\*/" fold
Paulo Moura0f619432023-12-16 13:27:09 +0000384syn match logtalkLineComment "%.*$"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000385
Bram Moolenaarb8ff1fb2012-02-04 21:59:01 +0100386syn cluster logtalkComment contains=logtalkBlockComment,logtalkLineComment
387
388
389" Logtalk conditional compilation folding
390
391syn region logtalkIfContainer transparent keepend extend start=":- if(" end=":- endif\." containedin=ALLBUT,@logtalkComment contains=NONE
392syn region logtalkIf transparent fold keepend start=":- if(" end=":- \(else\.\|elif(\)"ms=s-1,me=s-1 contained containedin=logtalkIfContainer nextgroup=logtalkElseIf,logtalkElse contains=TOP
393syn region logtalkElseIf transparent fold keepend start=":- elif(" end=":- \(else\.\|elif(\)"ms=s-1,me=s-1 contained containedin=logtalkIfContainer nextgroup=logtalkElseIf,logtalkElse contains=TOP
394syn region logtalkElse transparent fold keepend start=":- else\." end=":- endif\." contained containedin=logtalkIfContainer contains=TOP
395
396
Bram Moolenaar071d4272004-06-13 20:20:40 +0000397
Bram Moolenaar45eeb132005-06-06 21:59:07 +0000398" Logtalk entity folding
399
400syn region logtalkEntity transparent fold keepend start=":- object(" end=":- end_object\." contains=ALL
401syn region logtalkEntity transparent fold keepend start=":- protocol(" end=":- end_protocol\." contains=ALL
402syn region logtalkEntity transparent fold keepend start=":- category(" end=":- end_category\." contains=ALL
403
404
Bram Moolenaara0084652005-03-16 09:57:51 +0000405syn sync ccomment logtalkBlockComment maxlines=50
Bram Moolenaar071d4272004-06-13 20:20:40 +0000406
407
408" Define the default highlighting.
Bram Moolenaar89bcfda2016-08-30 23:26:57 +0200409" Only when an item doesn't have highlighting yet
Bram Moolenaar071d4272004-06-13 20:20:40 +0000410
Bram Moolenaarf37506f2016-08-31 22:22:10 +0200411hi def link logtalkBlockComment Comment
412hi def link logtalkLineComment Comment
Bram Moolenaarc236c162008-07-13 17:41:49 +0000413
Bram Moolenaarf37506f2016-08-31 22:22:10 +0200414hi def link logtalkOpenEntityDir Normal
415hi def link logtalkOpenEntityDirTag PreProc
Bram Moolenaar071d4272004-06-13 20:20:40 +0000416
Bram Moolenaarf37506f2016-08-31 22:22:10 +0200417hi def link logtalkIfContainer PreProc
418hi def link logtalkIf PreProc
419hi def link logtalkElseIf PreProc
420hi def link logtalkElse PreProc
Bram Moolenaar071d4272004-06-13 20:20:40 +0000421
Bram Moolenaarf37506f2016-08-31 22:22:10 +0200422hi def link logtalkEntity Normal
Bram Moolenaarb8ff1fb2012-02-04 21:59:01 +0100423
Bram Moolenaarf37506f2016-08-31 22:22:10 +0200424hi def link logtalkEntityRel Normal
425hi def link logtalkEntityRelTag PreProc
Bram Moolenaar071d4272004-06-13 20:20:40 +0000426
Bram Moolenaarf37506f2016-08-31 22:22:10 +0200427hi def link logtalkCloseEntityDir PreProc
Bram Moolenaar071d4272004-06-13 20:20:40 +0000428
Bram Moolenaarf37506f2016-08-31 22:22:10 +0200429hi def link logtalkDir Normal
430hi def link logtalkDirTag PreProc
Bram Moolenaar071d4272004-06-13 20:20:40 +0000431
Bram Moolenaarf37506f2016-08-31 22:22:10 +0200432hi def link logtalkAtom String
433hi def link logtalkString String
434hi def link logtalkEscapeSequence SpecialChar
Bram Moolenaar071d4272004-06-13 20:20:40 +0000435
Bram Moolenaarf37506f2016-08-31 22:22:10 +0200436hi def link logtalkNumber Number
Bram Moolenaar071d4272004-06-13 20:20:40 +0000437
Bram Moolenaarf37506f2016-08-31 22:22:10 +0200438hi def link logtalkKeyword Keyword
Bram Moolenaar071d4272004-06-13 20:20:40 +0000439
Bram Moolenaarf37506f2016-08-31 22:22:10 +0200440hi def link logtalkBuiltIn Keyword
441hi def link logtalkBuiltInMethod Keyword
Bram Moolenaar071d4272004-06-13 20:20:40 +0000442
Bram Moolenaarf37506f2016-08-31 22:22:10 +0200443hi def link logtalkOperator Operator
Bram Moolenaar071d4272004-06-13 20:20:40 +0000444
Bram Moolenaarf37506f2016-08-31 22:22:10 +0200445hi def link logtalkExtCall Normal
446hi def link logtalkExtCallTag Operator
Bram Moolenaar071d4272004-06-13 20:20:40 +0000447
Bram Moolenaarf37506f2016-08-31 22:22:10 +0200448hi def link logtalkVariable Identifier
Bram Moolenaar071d4272004-06-13 20:20:40 +0000449
Bram Moolenaar071d4272004-06-13 20:20:40 +0000450
451
452let b:current_syntax = "logtalk"
Bram Moolenaarb8ff1fb2012-02-04 21:59:01 +0100453
454let &cpo = s:cpo_save
455unlet s:cpo_save