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