xref: /vim-8.2.3635/runtime/syntax/logtalk.vim (revision 071d4279)
1" Vim syntax file
2"
3" Language:	Logtalk
4" Maintainer:	Paulo Moura <[email protected]>
5" Last Change:	2004 May 16
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\."
59syn match	logtalkCloseEntityDir	":- end_protocol\."
60syn match	logtalkCloseEntityDir	":- end_category\."
61
62
63" Logtalk entity relations
64
65syn region	logtalkEntityRel	matchgroup=logtalkEntityRelTag	start="instantiates("	matchgroup=logtalkEntityRelTag	end=")"		contains=logtalkEntity		contained
66syn region	logtalkEntityRel	matchgroup=logtalkEntityRelTag	start="specializes("	matchgroup=logtalkEntityRelTag	end=")"		contains=logtalkEntity		contained
67syn region	logtalkEntityRel	matchgroup=logtalkEntityRelTag	start="extends("	matchgroup=logtalkEntityRelTag	end=")"		contains=logtalkEntity		contained
68syn region	logtalkEntityRel	matchgroup=logtalkEntityRelTag	start="imports("	matchgroup=logtalkEntityRelTag	end=")"		contains=logtalkEntity		contained
69syn region	logtalkEntityRel	matchgroup=logtalkEntityRelTag	start="implements("	matchgroup=logtalkEntityRelTag	end=")"		contains=logtalkEntity		contained
70
71
72" Logtalk directives
73
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=":- public("		matchgroup=logtalkDirTag	end=")\."	contains=ALL
81syn region	logtalkDir		matchgroup=logtalkDirTag	start=":- protected("		matchgroup=logtalkDirTag	end=")\."	contains=ALL
82syn region	logtalkDir		matchgroup=logtalkDirTag	start=":- private("		matchgroup=logtalkDirTag	end=")\."	contains=ALL
83syn region	logtalkDir		matchgroup=logtalkDirTag	start=":- metapredicate("	matchgroup=logtalkDirTag	end=")\."	contains=ALL
84syn region	logtalkDir		matchgroup=logtalkDirTag	start=":- op("			matchgroup=logtalkDirTag	end=")\."	contains=ALL
85syn region	logtalkDir		matchgroup=logtalkDirTag	start=":- calls("		matchgroup=logtalkDirTag	end=")\."	contains=ALL
86syn region	logtalkDir		matchgroup=logtalkDirTag	start=":- uses("		matchgroup=logtalkDirTag	end=")\."	contains=ALL
87
88
89" Logtalk built-in predicates
90
91syn match	logtalkBuiltIn		"\<current_object\ze("
92syn match	logtalkBuiltIn		"\<current_protocol\ze("
93syn match	logtalkBuiltIn		"\<current_category\ze("
94
95syn match	logtalkBuiltIn		"\<create_object\ze("
96syn match	logtalkBuiltIn		"\<create_protocol\ze("
97syn match	logtalkBuiltIn		"\<create_category\ze("
98
99syn match	logtalkBuiltIn		"\<object_property\ze("
100syn match	logtalkBuiltIn		"\<protocol_property\ze("
101syn match	logtalkBuiltIn		"\<category_property\ze("
102
103syn match	logtalkBuiltIn		"\<abolish_object\ze("
104syn match	logtalkBuiltIn		"\<abolish_protocol\ze("
105syn match	logtalkBuiltIn		"\<abolish_category\ze("
106
107syn match	logtalkBuiltIn		"\<extends_object\ze("
108syn match	logtalkBuiltIn		"\<extends_protocol\ze("
109syn match	logtalkBuiltIn		"\<implements_protocol\ze("
110syn match	logtalkBuiltIn		"\<instantiates_class\ze("
111syn match	logtalkBuiltIn		"\<specializes_class\ze("
112syn match	logtalkBuiltIn		"\<imports_category\ze("
113
114syn match	logtalkBuiltIn		"\<abolish_events\ze("
115syn match	logtalkBuiltIn		"\<current_event\ze("
116syn match	logtalkBuiltIn		"\<define_events\ze("
117
118syn match	logtalkBuiltIn		"\<current_logtalk_flag\ze("
119syn match	logtalkBuiltIn		"\<set_logtalk_flag\ze("
120
121syn match	logtalkBuiltIn		"\<logtalk_compile\ze("
122syn match	logtalkBuiltIn		"\<logtalk_load\ze("
123
124syn match	logtalkBuiltIn		"\<forall\ze("
125syn match	logtalkBuiltIn		"\<retractall\ze("
126
127
128" Logtalk built-in methods
129
130syn match	logtalkBuiltInMethod	"\<parameter\ze("
131syn match	logtalkBuiltInMethod	"\<self\ze("
132syn match	logtalkBuiltInMethod	"\<sender\ze("
133syn match	logtalkBuiltInMethod	"\<this\ze("
134
135syn match	logtalkBuiltInMethod	"\<current_predicate\ze("
136syn match	logtalkBuiltInMethod	"\<predicate_property\ze("
137
138syn match	logtalkBuiltInMethod	"\<abolish\ze("
139syn match	logtalkBuiltInMethod	"\<asserta\ze("
140syn match	logtalkBuiltInMethod	"\<assertz\ze("
141syn match	logtalkBuiltInMethod	"\<clause\ze("
142syn match	logtalkBuiltInMethod	"\<retract\ze("
143syn match	logtalkBuiltInMethod	"\<retractall\ze("
144
145syn match	logtalkBuiltInMethod	"\<bagof\ze("
146syn match	logtalkBuiltInMethod	"\<findall\ze("
147syn match	logtalkBuiltInMethod	"\<forall\ze("
148syn match	logtalkBuiltInMethod	"\<setof\ze("
149
150syn match	logtalkBuiltInMethod	"\<before\ze("
151syn match	logtalkBuiltInMethod	"\<after\ze("
152
153syn match	logtalkBuiltInMethod	"\<phrase\ze("
154
155
156" Mode operators
157
158syn match	logtalkOperator		"?"
159syn match	logtalkOperator		"@"
160
161
162" Control constructs
163
164syn match	logtalkKeyword		"\<true\>"
165syn match	logtalkKeyword		"\<fail\>"
166syn match	logtalkKeyword		"\<call\ze("
167syn match	logtalkOperator		"!"
168syn match	logtalkOperator		","
169syn match	logtalkOperator		";"
170syn match	logtalkOperator		"-->"
171syn match	logtalkOperator		"->"
172syn match	logtalkKeyword		"\<catch\ze("
173syn match	logtalkKeyword		"\<throw\ze("
174
175
176" Term unification
177
178syn match	logtalkOperator		"="
179syn match	logtalkKeyword		"\<unify_with_occurs_check\ze("
180syn match	logtalkOperator		"\\="
181
182
183" Term testing
184
185syn match	logtalkKeyword		"\<var\ze("
186syn match	logtalkKeyword		"\<atom\ze("
187syn match	logtalkKeyword		"\<integer\ze("
188syn match	logtalkKeyword		"\<float\ze("
189syn match	logtalkKeyword		"\<atomic\ze("
190syn match	logtalkKeyword		"\<compound\ze("
191syn match	logtalkKeyword		"\<nonvar\ze("
192syn match	logtalkKeyword		"\<number\ze("
193
194
195" Term comparison
196
197syn match	logtalkOperator		"@=<"
198syn match	logtalkOperator		"=="
199syn match	logtalkOperator		"\\=="
200syn match	logtalkOperator		"@<"
201syn match	logtalkOperator		"@>"
202syn match	logtalkOperator		"@>="
203
204
205" Term creation and decomposition
206
207syn match	logtalkKeyword		"\<functor\ze("
208syn match	logtalkKeyword		"\<arg\ze("
209syn match	logtalkOperator		"=\.\."
210syn match	logtalkKeyword		"\<copy_term\ze("
211
212
213" Arithemtic evaluation
214
215syn keyword	logtalkOperator		is
216
217
218" Arithemtic comparison
219
220syn match	logtalkOperator		"=:="
221syn match	logtalkOperator		"=\\="
222syn match	logtalkOperator		"<"
223syn match	logtalkOperator		"=<"
224syn match	logtalkOperator		">"
225syn match	logtalkOperator		">="
226
227
228" Stream selection and control
229
230syn match	logtalkKeyword		"\<current_input\ze("
231syn match	logtalkKeyword		"\<current_output\ze("
232syn match	logtalkKeyword		"\<set_input\ze("
233syn match	logtalkKeyword		"\<set_output\ze("
234syn match	logtalkKeyword		"\<open\ze("
235syn match	logtalkKeyword		"\<close\ze("
236syn match	logtalkKeyword		"\<flush_output\ze("
237syn match	logtalkKeyword		"\<flush_output\>"
238syn match	logtalkKeyword		"\<stream_property\ze("
239syn match	logtalkKeyword		"\<at_end_of_stream\ze("
240syn match	logtalkKeyword		"\<at_end_of_stream\>"
241syn match	logtalkKeyword		"\<set_stream_position\ze("
242
243
244" Character input/output
245
246syn match	logtalkKeyword		"\<get_char\ze("
247syn match	logtalkKeyword		"\<get_code\ze("
248syn match	logtalkKeyword		"\<peek_char\ze("
249syn match	logtalkKeyword		"\<peek_code\ze("
250syn match	logtalkKeyword		"\<put_char\ze("
251syn match	logtalkKeyword		"\<put_code\ze("
252syn match	logtalkKeyword		"\<nl\ze("
253syn match	logtalkKeyword		"\<nl\>"
254
255
256" Byte input/output
257
258syn match	logtalkKeyword		"\<get_byte\ze("
259syn match	logtalkKeyword		"\<peek_byte\ze("
260syn match	logtalkKeyword		"\<put_byte\ze("
261
262
263" Term input/output
264
265syn match	logtalkKeyword		"\<read_term\ze("
266syn match	logtalkKeyword		"\<read\ze("
267syn match	logtalkKeyword		"\<write_term\ze("
268syn match	logtalkKeyword		"\<write\ze("
269syn match	logtalkKeyword		"\<writeq\ze("
270syn match	logtalkKeyword		"\<write_canonical\ze("
271syn match	logtalkKeyword		"\<op\ze("
272syn match	logtalkKeyword		"\<current_op\ze("
273syn match	logtalkKeyword		"\<char_conversion\ze("
274syn match	logtalkKeyword		"\<current_char_conversion\ze("
275
276
277" Logic and control
278
279syn match	logtalkOperator		"\\+"
280syn match	logtalkKeyword		"\<once\ze("
281syn match	logtalkKeyword		"\<repeat\>"
282
283
284" Atomic term processing
285
286syn match	logtalkKeyword		"\<atom_length\ze("
287syn match	logtalkKeyword		"\<atom_concat\ze("
288syn match	logtalkKeyword		"\<sub_atom\ze("
289syn match	logtalkKeyword		"\<atom_chars\ze("
290syn match	logtalkKeyword		"\<atom_codes\ze("
291syn match	logtalkKeyword		"\<char_code\ze("
292syn match	logtalkKeyword		"\<number_chars\ze("
293syn match	logtalkKeyword		"\<number_codes\ze("
294
295
296" Implementation defined hooks functions
297
298syn match	logtalkKeyword		"\<set_prolog_flag\ze("
299syn match	logtalkKeyword		"\<current_prolog_flag\ze("
300syn match	logtalkKeyword		"\<halt\ze("
301syn match	logtalkKeyword		"\<halt\>"
302
303
304" Evaluable functors
305
306syn match	logtalkOperator		"+"
307syn match	logtalkOperator		"-"
308syn match	logtalkOperator		"\*"
309syn match	logtalkOperator		"//"
310syn match	logtalkOperator		"/"
311syn match	logtalkKeyword		"\<rem(?=[(])"
312syn match	logtalkKeyword		"\<rem\>"
313syn match	logtalkKeyword		"\<mod\ze("
314syn match	logtalkKeyword		"\<mod\>"
315syn match	logtalkKeyword		"\<abs\ze("
316syn match	logtalkKeyword		"\<sign\ze("
317syn match	logtalkKeyword		"\<float_integer_part\ze("
318syn match	logtalkKeyword		"\<float_fractional_part\ze("
319syn match	logtalkKeyword		"\<float\ze("
320syn match	logtalkKeyword		"\<floor\ze("
321syn match	logtalkKeyword		"\<truncate\ze("
322syn match	logtalkKeyword		"\<round\ze("
323syn match	logtalkKeyword		"\<ceiling\ze("
324
325
326" Other arithemtic functors
327
328syn match	logtalkOperator		"\*\*"
329syn match	logtalkKeyword		"\<sin\ze("
330syn match	logtalkKeyword		"\<cos\ze("
331syn match	logtalkKeyword		"\<atan\ze("
332syn match	logtalkKeyword		"\<exp\ze("
333syn match	logtalkKeyword		"\<log\ze("
334syn match	logtalkKeyword		"\<sqrt\ze("
335
336
337" Bitwise functors
338
339syn match	logtalkOperator		">>"
340syn match	logtalkOperator		"<<"
341syn match	logtalkOperator		"/\\"
342syn match	logtalkOperator		"\\/"
343syn match	logtalkOperator		"\\"
344
345
346" Logtalk end-of-clause
347
348syn match	logtalkOperator		"\."
349
350
351" Logtalk list operator
352
353syn match	logtalkOperator		"|"
354
355
356" Logtalk comments
357
358syn region	logtalkBlockComment	start="/\*"	end="\*/"
359syn match	logtalkLineComment	"%.*"
360
361
362" Logtalk numbers
363
364syn match	logtalkNumber		"\<[0-9]\+\>"
365syn match	logtalkNumber		"\<[0-9]\+\.[0-9]\+\>"
366syn match	logtalkNumber		"\<[0-9]\+\.[0-9]\+[eE][-+][0-9]+\>"
367syn match	logtalkNumber		"\<0'[0-9a-zA-Z]\>"
368syn match	logtalkNumber		"\<0b[0-1]\+\>"
369syn match	logtalkNumber		"\<0o[0-7]\+\>"
370syn match	logtalkNumber		"\<0x[0-9a-fA-F]\+\>"
371
372
373syn sync ccomment maxlines=50
374
375
376" Define the default highlighting.
377" For version 5.7 and earlier: only when not done already
378" For version 5.8 and later: only when an item doesn't have highlighting yet
379
380if version >= 508 || !exists("did_logtalk_syn_inits")
381	if version < 508
382		let did_logtalk_syn_inits = 1
383		command -nargs=+ HiLink hi link <args>
384	else
385		command -nargs=+ HiLink hi def link <args>
386	endif
387
388	HiLink	logtalkBlockComment	Comment
389	HiLink	logtalkLineComment	Comment
390
391	HiLink	logtalkOpenEntityDir	Normal
392	HiLink	logtalkOpenEntityDirTag	PreProc
393
394	HiLink	logtalkEntity		Normal
395
396	HiLink	logtalkEntityRel	Normal
397	HiLink	logtalkEntityRelTag	PreProc
398
399	HiLink	logtalkCloseEntityDir	PreProc
400
401	HiLink	logtalkDir		Normal
402	HiLink	logtalkDirTag		PreProc
403
404	HiLink	logtalkAtom		String
405	HiLink	logtalkString		String
406
407	HiLink	logtalkNumber		Number
408
409	HiLink	logtalkKeyword		Keyword
410
411	HiLink	logtalkBuiltIn		Keyword
412	HiLink	logtalkBuiltInMethod	Keyword
413
414	HiLink	logtalkOperator		Operator
415
416	HiLink	logtalkExtCall		Normal
417	HiLink	logtalkExtCallTag	Operator
418
419	HiLink	logtalkVariable		Identifier
420
421	delcommand HiLink
422
423endif
424
425
426let b:current_syntax = "logtalk"
427
428setlocal ts=4
429