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