xref: /vim-8.2.3635/runtime/syntax/logtalk.vim (revision 54ee775e)
1" Vim syntax file
2"
3" Language:	Logtalk
4" Maintainer:	Paulo Moura <[email protected]>
5" Last Change:	May 30, 2005
6
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
58syn match	logtalkCloseEntityDir	":- end_\(object\|protocol\|category\)\."
59
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
72syn region	logtalkDir		matchgroup=logtalkDirTag	start=":- alias("		matchgroup=logtalkDirTag	end=")\."	contains=ALL
73syn region	logtalkDir		matchgroup=logtalkDirTag	start=":- encoding("	matchgroup=logtalkDirTag	end=")\."	contains=ALL
74syn region	logtalkDir		matchgroup=logtalkDirTag	start=":- initialization("	matchgroup=logtalkDirTag	end=")\."	contains=ALL
75syn region	logtalkDir		matchgroup=logtalkDirTag	start=":- info("		matchgroup=logtalkDirTag	end=")\."	contains=ALL
76syn region	logtalkDir		matchgroup=logtalkDirTag	start=":- mode("		matchgroup=logtalkDirTag	end=")\."	contains=logtalkOperator, logtalkAtom
77syn 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
80syn region	logtalkDir		matchgroup=logtalkDirTag	start=":- multifile("		matchgroup=logtalkDirTag	end=")\."	contains=ALL
81syn 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
92syn match	logtalkBuiltIn		"\<\(abolish\|c\(reate\|urrent\)\)_\(object\|protocol\|category\)\ze("
93
94syn match	logtalkBuiltIn		"\<\(object\|protocol\|category\)_property\ze("
95
96syn match	logtalkBuiltIn		"\<extends_\(object\|protocol\)\ze("
97syn match	logtalkBuiltIn		"\<imp\(orts_category\|lements_protocol\)\ze("
98syn match	logtalkBuiltIn		"\<\(instantiates\|specializes\)_class\ze("
99
100syn match	logtalkBuiltIn		"\<\(abolish\|define\)_events\ze("
101syn match	logtalkBuiltIn		"\<current_event\ze("
102
103syn match	logtalkBuiltIn		"\<\(current\|set\)_logtalk_flag\ze("
104
105syn match	logtalkBuiltIn		"\<logtalk_\(compile\|l\(ibrary_path\|oad\)\)\ze("
106
107syn match	logtalkBuiltIn		"\<\(for\|retract\)all\ze("
108
109
110" Logtalk built-in methods
111
112syn match	logtalkBuiltInMethod	"\<parameter\ze("
113syn match	logtalkBuiltInMethod	"\<se\(lf\|nder\)\ze("
114syn match	logtalkBuiltInMethod	"\<this\ze("
115
116syn match	logtalkBuiltInMethod	"\<current_predicate\ze("
117syn match	logtalkBuiltInMethod	"\<predicate_property\ze("
118
119syn match	logtalkBuiltInMethod	"\<a\(bolish\|ssert\(a\|z\)\)\ze("
120syn match	logtalkBuiltInMethod	"\<clause\ze("
121syn match	logtalkBuiltInMethod	"\<retract\(all\)\?\ze("
122
123syn match	logtalkBuiltInMethod	"\<\(bag\|set\)of\ze("
124syn match	logtalkBuiltInMethod	"\<f\(ind\|or\)all\ze("
125
126syn match	logtalkBuiltInMethod	"\<before\ze("
127syn match	logtalkBuiltInMethod	"\<after\ze("
128
129syn match	logtalkBuiltInMethod	"\<expand_term\ze("
130syn 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\>"
143syn match	logtalkKeyword		"\<ca\(ll\|tch\)\ze("
144syn match	logtalkOperator		"!"
145" syn match	logtalkOperator		","
146syn match	logtalkOperator		";"
147syn match	logtalkOperator		"-->"
148syn match	logtalkOperator		"->"
149syn 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("
162syn match	logtalkKeyword		"\<atom\(ic\)\?\ze("
163syn match	logtalkKeyword		"\<integer\ze("
164syn match	logtalkKeyword		"\<float\ze("
165syn match	logtalkKeyword		"\<compound\ze("
166syn match	logtalkKeyword		"\<n\(onvar\|umber\)\ze("
167
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
189syn match	logtalkOperator		"\<is\>"
190
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
204syn match	logtalkKeyword		"\<\(current\|set\)_\(in\|out\)put\ze("
205syn 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
215" Character and byte input/output
216
217syn match	logtalkKeyword		"\<\(get\|p\(eek\|ut\)\)_\(c\(har\|ode\)\|byte\)\ze("
218syn match	logtalkKeyword		"\<nl\ze("
219syn match	logtalkKeyword		"\<nl\>"
220
221
222" Term input/output
223
224syn 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("
228
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
239syn match	logtalkKeyword		"\<atom_\(length\|c\(hars\|o\(ncat\|des\)\)\)\ze("
240syn match	logtalkKeyword		"\<sub_atom\ze("
241syn match	logtalkKeyword		"\<char_code\ze("
242syn match	logtalkKeyword		"\<number_\(c\(hars\|odes\)\)\ze("
243
244
245" Implementation defined hooks functions
246
247syn match	logtalkKeyword		"\<\(current\|set\)_prolog_flag\ze("
248syn 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		"/"
259syn match	logtalkKeyword		"\<r\(ound\|em\)\ze("
260syn match	logtalkKeyword		"\<rem\>"
261syn match	logtalkKeyword		"\<mod\ze("
262syn match	logtalkKeyword		"\<mod\>"
263syn match	logtalkKeyword		"\<abs\ze("
264syn match	logtalkKeyword		"\<sign\ze("
265syn match	logtalkKeyword		"\<flo\(or\|at\(_\(integer\|fractional\)_part\)\?\)\ze("
266syn match	logtalkKeyword		"\<truncate\ze("
267syn match	logtalkKeyword		"\<ceiling\ze("
268
269
270" Other arithemtic functors
271
272syn match	logtalkOperator		"\*\*"
273syn match	logtalkKeyword		"\<s\(in\|qrt\)\ze("
274syn match	logtalkKeyword		"\<cos\ze("
275syn match	logtalkKeyword		"\<atan\ze("
276syn match	logtalkKeyword		"\<exp\ze("
277syn match	logtalkKeyword		"\<log\ze("
278
279
280" Bitwise functors
281
282syn match	logtalkOperator		">>"
283syn match	logtalkOperator		"<<"
284syn match	logtalkOperator		"/\\"
285syn match	logtalkOperator		"\\/"
286syn match	logtalkOperator		"\\"
287
288
289" Logtalk list operator
290
291syn match	logtalkOperator		"|"
292
293
294" 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
311" Logtalk comments
312
313syn region	logtalkBlockComment	start="/\*"	end="\*/"
314syn match	logtalkLineComment	"%.*"
315
316
317syn sync ccomment logtalkBlockComment maxlines=50
318
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
331
332	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
373