xref: /vim-8.2.3635/runtime/syntax/logtalk.vim (revision 269ec658)
1" Vim syntax file
2"
3" Language:	Logtalk
4" Maintainer:	Paulo Moura <[email protected]>
5" Last Change:	2004 July 7
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=":- initialization("	matchgroup=logtalkDirTag	end=")\."	contains=ALL
73syn region	logtalkDir		matchgroup=logtalkDirTag	start=":- info("		matchgroup=logtalkDirTag	end=")\."	contains=ALL
74syn region	logtalkDir		matchgroup=logtalkDirTag	start=":- mode("		matchgroup=logtalkDirTag	end=")\."	contains=logtalkOperator,logtalkAtom
75syn region	logtalkDir		matchgroup=logtalkDirTag	start=":- dynamic("		matchgroup=logtalkDirTag	end=")\."	contains=ALL
76syn match	logtalkDirTag		":- dynamic\."
77syn region	logtalkDir		matchgroup=logtalkDirTag	start=":- discontiguous("	matchgroup=logtalkDirTag	end=")\."	contains=ALL
78syn region	logtalkDir		matchgroup=logtalkDirTag	start=":- multifile("	matchgroup=logtalkDirTag	end=")\."	contains=ALL
79syn region	logtalkDir		matchgroup=logtalkDirTag	start=":- public("		matchgroup=logtalkDirTag	end=")\."	contains=ALL
80syn region	logtalkDir		matchgroup=logtalkDirTag	start=":- protected("		matchgroup=logtalkDirTag	end=")\."	contains=ALL
81syn region	logtalkDir		matchgroup=logtalkDirTag	start=":- private("		matchgroup=logtalkDirTag	end=")\."	contains=ALL
82syn region	logtalkDir		matchgroup=logtalkDirTag	start=":- metapredicate("	matchgroup=logtalkDirTag	end=")\."	contains=ALL
83syn region	logtalkDir		matchgroup=logtalkDirTag	start=":- op("			matchgroup=logtalkDirTag	end=")\."	contains=ALL
84syn region	logtalkDir		matchgroup=logtalkDirTag	start=":- calls("		matchgroup=logtalkDirTag	end=")\."	contains=ALL
85syn region	logtalkDir		matchgroup=logtalkDirTag	start=":- uses("		matchgroup=logtalkDirTag	end=")\."	contains=ALL
86
87
88" Logtalk built-in predicates
89
90syn match	logtalkBuiltIn		"\<current_\(object\|protocol\|category\)\ze("
91
92syn match	logtalkBuiltIn		"\<create_\(object\|protocol\|category\)\ze("
93
94syn match	logtalkBuiltIn		"\<\(object\|protocol\|category\)_property\ze("
95
96syn match	logtalkBuiltIn		"\<abolish_\(object\|protocol\|category\)\ze("
97
98syn match	logtalkBuiltIn		"\<extends_\(object\|protocol\)\ze("
99syn match	logtalkBuiltIn		"\<imp\(orts_category\|lements_protocol\)\ze("
100syn match	logtalkBuiltIn		"\<\(instantiates\|specializes\)_class\ze("
101
102syn match	logtalkBuiltIn		"\<\(abolish\|define\)_events\ze("
103syn match	logtalkBuiltIn		"\<current_event\ze("
104
105syn match	logtalkBuiltIn		"\<\(current\|set\)_logtalk_flag\ze("
106
107syn match	logtalkBuiltIn		"\<logtalk_\(compile\|load\)\ze("
108
109syn match	logtalkBuiltIn		"\<forall\ze("
110syn match	logtalkBuiltIn		"\<retractall\ze("
111
112
113" Logtalk built-in methods
114
115syn match	logtalkBuiltInMethod	"\<parameter\ze("
116syn match	logtalkBuiltInMethod	"\<se\(lf\|nder\)\ze("
117syn match	logtalkBuiltInMethod	"\<this\ze("
118
119syn match	logtalkBuiltInMethod	"\<current_predicate\ze("
120syn match	logtalkBuiltInMethod	"\<predicate_property\ze("
121
122syn match	logtalkBuiltInMethod	"\<abolish\ze("
123syn match	logtalkBuiltInMethod	"\<assert\(a\|z\)\ze("
124syn match	logtalkBuiltInMethod	"\<clause\ze("
125syn match	logtalkBuiltInMethod	"\<retract\ze("
126syn match	logtalkBuiltInMethod	"\<retractall\ze("
127
128syn match	logtalkBuiltInMethod	"\<\(bag\|set\)of\ze("
129syn match	logtalkBuiltInMethod	"\<f\(ind\|or\)all\ze("
130
131syn match	logtalkBuiltInMethod	"\<before\ze("
132syn match	logtalkBuiltInMethod	"\<after\ze("
133
134syn match	logtalkBuiltInMethod	"\<phrase\ze("
135
136
137" Mode operators
138
139syn match	logtalkOperator		"?"
140syn match	logtalkOperator		"@"
141
142
143" Control constructs
144
145syn match	logtalkKeyword		"\<true\>"
146syn match	logtalkKeyword		"\<fail\>"
147syn match	logtalkKeyword		"\<ca\(ll\|tch\)\ze("
148syn match	logtalkOperator		"!"
149" syn match	logtalkOperator		","
150syn match	logtalkOperator		";"
151syn match	logtalkOperator		"-->"
152syn match	logtalkOperator		"->"
153syn match	logtalkKeyword		"\<throw\ze("
154
155
156" Term unification
157
158syn match	logtalkOperator		"="
159syn match	logtalkKeyword		"\<unify_with_occurs_check\ze("
160syn match	logtalkOperator		"\\="
161
162
163" Term testing
164
165syn match	logtalkKeyword		"\<var\ze("
166syn match	logtalkKeyword		"\<atom\ze("
167syn match	logtalkKeyword		"\<integer\ze("
168syn match	logtalkKeyword		"\<float\ze("
169syn match	logtalkKeyword		"\<atomic\ze("
170syn match	logtalkKeyword		"\<compound\ze("
171syn match	logtalkKeyword		"\<n\(onvar\|umber\)\ze("
172
173
174" Term comparison
175
176syn match	logtalkOperator		"@=<"
177syn match	logtalkOperator		"=="
178syn match	logtalkOperator		"\\=="
179syn match	logtalkOperator		"@<"
180syn match	logtalkOperator		"@>"
181syn match	logtalkOperator		"@>="
182
183
184" Term creation and decomposition
185
186syn match	logtalkKeyword		"\<functor\ze("
187syn match	logtalkKeyword		"\<arg\ze("
188syn match	logtalkOperator		"=\.\."
189syn match	logtalkKeyword		"\<copy_term\ze("
190
191
192" Arithemtic evaluation
193
194syn keyword	logtalkOperator		is
195
196
197" Arithemtic comparison
198
199syn match	logtalkOperator		"=:="
200syn match	logtalkOperator		"=\\="
201syn match	logtalkOperator		"<"
202syn match	logtalkOperator		"=<"
203syn match	logtalkOperator		">"
204syn match	logtalkOperator		">="
205
206
207" Stream selection and control
208
209syn match	logtalkKeyword		"\<current_\(input\|output\)\ze("
210syn match	logtalkKeyword		"\<set_\(input\|output\)\ze("
211syn match	logtalkKeyword		"\<open\ze("
212syn match	logtalkKeyword		"\<close\ze("
213syn match	logtalkKeyword		"\<flush_output\ze("
214syn match	logtalkKeyword		"\<flush_output\>"
215syn match	logtalkKeyword		"\<stream_property\ze("
216syn match	logtalkKeyword		"\<at_end_of_stream\ze("
217syn match	logtalkKeyword		"\<at_end_of_stream\>"
218syn match	logtalkKeyword		"\<set_stream_position\ze("
219
220
221" Character and byte input/output
222
223syn match	logtalkKeyword		"\<\(get\|peek\|put\)_\(char\|code\|byte\)\ze("
224syn match	logtalkKeyword		"\<nl\ze("
225syn match	logtalkKeyword		"\<nl\>"
226
227
228" Term input/output
229
230syn match	logtalkKeyword		"\<read_term\ze("
231syn match	logtalkKeyword		"\<read\ze("
232syn match	logtalkKeyword		"\<write\ze("
233syn match	logtalkKeyword		"\<writeq\ze("
234syn match	logtalkKeyword		"\<write_\(canonical\|term\)\ze("
235syn match	logtalkKeyword		"\<op\ze("
236syn match	logtalkKeyword		"\<current_op\ze("
237syn match	logtalkKeyword		"\<char_conversion\ze("
238syn match	logtalkKeyword		"\<current_char_conversion\ze("
239
240
241" Logic and control
242
243syn match	logtalkOperator		"\\+"
244syn match	logtalkKeyword		"\<once\ze("
245syn match	logtalkKeyword		"\<repeat\>"
246
247
248" Atomic term processing
249
250syn match	logtalkKeyword		"\<atom_\(length\|concat\|chars\|codes\)\ze("
251syn match	logtalkKeyword		"\<sub_atom\ze("
252syn match	logtalkKeyword		"\<char_code\ze("
253syn match	logtalkKeyword		"\<number_\(chars\|codes\)\ze("
254
255
256" Implementation defined hooks functions
257
258syn match	logtalkKeyword		"\<\(current\|set\)_prolog_flag\ze("
259syn match	logtalkKeyword		"\<halt\ze("
260syn match	logtalkKeyword		"\<halt\>"
261
262
263" Evaluable functors
264
265syn match	logtalkOperator		"+"
266syn match	logtalkOperator		"-"
267syn match	logtalkOperator		"\*"
268syn match	logtalkOperator		"//"
269syn match	logtalkOperator		"/"
270syn match	logtalkKeyword		"\<rem(?=[(])"
271syn match	logtalkKeyword		"\<rem\>"
272syn match	logtalkKeyword		"\<mod\ze("
273syn match	logtalkKeyword		"\<mod\>"
274syn match	logtalkKeyword		"\<abs\ze("
275syn match	logtalkKeyword		"\<sign\ze("
276syn match	logtalkKeyword		"\<float_\(integer\|fractional\)_part\ze("
277syn match	logtalkKeyword		"\<float\ze("
278syn match	logtalkKeyword		"\<floor\ze("
279syn match	logtalkKeyword		"\<truncate\ze("
280syn match	logtalkKeyword		"\<round\ze("
281syn match	logtalkKeyword		"\<ceiling\ze("
282
283
284" Other arithemtic functors
285
286syn match	logtalkOperator		"\*\*"
287syn match	logtalkKeyword		"\<s\(in\|qrt\)\ze("
288syn match	logtalkKeyword		"\<cos\ze("
289syn match	logtalkKeyword		"\<atan\ze("
290syn match	logtalkKeyword		"\<exp\ze("
291syn match	logtalkKeyword		"\<log\ze("
292
293
294" Bitwise functors
295
296syn match	logtalkOperator		">>"
297syn match	logtalkOperator		"<<"
298syn match	logtalkOperator		"/\\"
299syn match	logtalkOperator		"\\/"
300syn match	logtalkOperator		"\\"
301
302
303" Logtalk end-of-clause
304
305syn match	logtalkOperator		"\."
306
307
308" Logtalk list operator
309
310syn match	logtalkOperator		"|"
311
312
313" Logtalk comments
314
315syn region	logtalkBlockComment	start="/\*"	end="\*/"
316syn match	logtalkLineComment	"%.*"
317
318
319" Logtalk numbers
320
321syn match	logtalkNumber		"\<[0-9]\+\>"
322syn match	logtalkNumber		"\<[0-9]\+\.[0-9]\+\>"
323syn match	logtalkNumber		"\<[0-9]\+\.[0-9]\+[eE][-+][0-9]+\>"
324syn match	logtalkNumber		"\<0'[0-9a-zA-Z]\>"
325syn match	logtalkNumber		"\<0b[0-1]\+\>"
326syn match	logtalkNumber		"\<0o[0-7]\+\>"
327syn match	logtalkNumber		"\<0x[0-9a-fA-F]\+\>"
328
329
330syn sync ccomment maxlines=50
331
332
333" Define the default highlighting.
334" For version 5.7 and earlier: only when not done already
335" For version 5.8 and later: only when an item doesn't have highlighting yet
336
337if version >= 508 || !exists("did_logtalk_syn_inits")
338	if version < 508
339		let did_logtalk_syn_inits = 1
340		command -nargs=+ HiLink hi link <args>
341	else
342		command -nargs=+ HiLink hi def link <args>
343	endif
344
345	HiLink	logtalkBlockComment	Comment
346	HiLink	logtalkLineComment	Comment
347
348	HiLink	logtalkOpenEntityDir	Normal
349	HiLink	logtalkOpenEntityDirTag	PreProc
350
351	HiLink	logtalkEntity		Normal
352
353	HiLink	logtalkEntityRel	Normal
354	HiLink	logtalkEntityRelTag	PreProc
355
356	HiLink	logtalkCloseEntityDir	PreProc
357
358	HiLink	logtalkDir		Normal
359	HiLink	logtalkDirTag		PreProc
360
361	HiLink	logtalkAtom		String
362	HiLink	logtalkString		String
363
364	HiLink	logtalkNumber		Number
365
366	HiLink	logtalkKeyword		Keyword
367
368	HiLink	logtalkBuiltIn		Keyword
369	HiLink	logtalkBuiltInMethod	Keyword
370
371	HiLink	logtalkOperator		Operator
372
373	HiLink	logtalkExtCall		Normal
374	HiLink	logtalkExtCallTag	Operator
375
376	HiLink	logtalkVariable		Identifier
377
378	delcommand HiLink
379
380endif
381
382
383let b:current_syntax = "logtalk"
384
385setlocal ts=4
386