xref: /vim-8.2.3635/runtime/syntax/logtalk.vim (revision 044b68f4)
1" Vim syntax file
2"
3" Language:	Logtalk
4" Maintainer:	Paulo Moura <[email protected]>
5" Last Change:	February 24, 2006
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=logtalkEntity,logtalkVariable,logtalkNumber,logtalkOperator,logtalkEntityRel
52syn region	logtalkOpenEntityDir	matchgroup=logtalkOpenEntityDirTag	start=":- protocol("	matchgroup=logtalkOpenEntityDirTag	end=")\."	contains=logtalkEntity,logtalkVariable,logtalkNumber,logtalkOperator,logtalkEntityRel
53syn region	logtalkOpenEntityDir	matchgroup=logtalkOpenEntityDirTag	start=":- category("	matchgroup=logtalkOpenEntityDirTag	end=")\."	contains=logtalkEntity,logtalkVariable,logtalkNumber,logtalkOperator,logtalkEntityRel
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,logtalkVariable,logtalkNumber,logtalkOperator	contained
66syn region	logtalkEntityRel	matchgroup=logtalkEntityRelTag	start="specializes("	matchgroup=logtalkEntityRelTag	end=")"		contains=logtalkEntity,logtalkVariable,logtalkNumber,logtalkOperator	contained
67syn region	logtalkEntityRel	matchgroup=logtalkEntityRelTag	start="extends("	matchgroup=logtalkEntityRelTag	end=")"		contains=logtalkEntity,logtalkVariable,logtalkNumber,logtalkOperator	contained
68syn region	logtalkEntityRel	matchgroup=logtalkEntityRelTag	start="imports("	matchgroup=logtalkEntityRelTag	end=")"		contains=logtalkEntity,logtalkVariable,logtalkNumber,logtalkOperator	contained
69syn region	logtalkEntityRel	matchgroup=logtalkEntityRelTag	start="implements("	matchgroup=logtalkEntityRelTag	end=")"		contains=logtalkEntity,logtalkVariable,logtalkNumber,logtalkOperator	contained
70
71
72" Logtalk directives
73
74syn region	logtalkDir		matchgroup=logtalkDirTag	start=":- alias("		matchgroup=logtalkDirTag	end=")\."	contains=ALL
75syn region	logtalkDir		matchgroup=logtalkDirTag	start=":- encoding("	matchgroup=logtalkDirTag	end=")\."	contains=ALL
76syn region	logtalkDir		matchgroup=logtalkDirTag	start=":- initialization("	matchgroup=logtalkDirTag	end=")\."	contains=ALL
77syn region	logtalkDir		matchgroup=logtalkDirTag	start=":- info("		matchgroup=logtalkDirTag	end=")\."	contains=ALL
78syn region	logtalkDir		matchgroup=logtalkDirTag	start=":- mode("		matchgroup=logtalkDirTag	end=")\."	contains=logtalkOperator, logtalkAtom
79syn region	logtalkDir		matchgroup=logtalkDirTag	start=":- dynamic("		matchgroup=logtalkDirTag	end=")\."	contains=ALL
80syn match	logtalkDirTag		":- dynamic\."
81syn region	logtalkDir		matchgroup=logtalkDirTag	start=":- discontiguous("	matchgroup=logtalkDirTag	end=")\."	contains=ALL
82syn region	logtalkDir		matchgroup=logtalkDirTag	start=":- multifile("		matchgroup=logtalkDirTag	end=")\."	contains=ALL
83syn region	logtalkDir		matchgroup=logtalkDirTag	start=":- public("		matchgroup=logtalkDirTag	end=")\."	contains=ALL
84syn region	logtalkDir		matchgroup=logtalkDirTag	start=":- protected("		matchgroup=logtalkDirTag	end=")\."	contains=ALL
85syn region	logtalkDir		matchgroup=logtalkDirTag	start=":- private("		matchgroup=logtalkDirTag	end=")\."	contains=ALL
86syn region	logtalkDir		matchgroup=logtalkDirTag	start=":- metapredicate("	matchgroup=logtalkDirTag	end=")\."	contains=ALL
87syn region	logtalkDir		matchgroup=logtalkDirTag	start=":- op("			matchgroup=logtalkDirTag	end=")\."	contains=ALL
88syn region	logtalkDir		matchgroup=logtalkDirTag	start=":- calls("		matchgroup=logtalkDirTag	end=")\."	contains=ALL
89syn region	logtalkDir		matchgroup=logtalkDirTag	start=":- uses("		matchgroup=logtalkDirTag	end=")\."	contains=ALL
90
91
92" Module directives
93
94syn region	logtalkDir		matchgroup=logtalkDirTag	start=":- module("		matchgroup=logtalkDirTag	end=")\."	contains=ALL
95syn region	logtalkDir		matchgroup=logtalkDirTag	start=":- export("		matchgroup=logtalkDirTag	end=")\."	contains=ALL
96syn region	logtalkDir		matchgroup=logtalkDirTag	start=":- meta_predicate("		matchgroup=logtalkDirTag	end=")\."	contains=ALL
97syn region	logtalkDir		matchgroup=logtalkDirTag	start=":- use_module("		matchgroup=logtalkDirTag	end=")\."	contains=ALL
98
99
100" Logtalk built-in predicates
101
102syn match	logtalkBuiltIn		"\<\(abolish\|c\(reate\|urrent\)\)_\(object\|protocol\|category\)\ze("
103
104syn match	logtalkBuiltIn		"\<\(object\|protocol\|category\)_property\ze("
105
106syn match	logtalkBuiltIn		"\<extends_\(object\|protocol\)\ze("
107syn match	logtalkBuiltIn		"\<imp\(orts_category\|lements_protocol\)\ze("
108syn match	logtalkBuiltIn		"\<\(instantiates\|specializes\)_class\ze("
109
110syn match	logtalkBuiltIn		"\<\(abolish\|define\)_events\ze("
111syn match	logtalkBuiltIn		"\<current_event\ze("
112
113syn match	logtalkBuiltIn		"\<\(current\|set\)_logtalk_flag\ze("
114
115syn match	logtalkBuiltIn		"\<logtalk_\(compile\|l\(ibrary_path\|oad\)\)\ze("
116
117syn match	logtalkBuiltIn		"\<\(for\|retract\)all\ze("
118
119
120" Logtalk built-in methods
121
122syn match	logtalkBuiltInMethod	"\<parameter\ze("
123syn match	logtalkBuiltInMethod	"\<se\(lf\|nder\)\ze("
124syn match	logtalkBuiltInMethod	"\<this\ze("
125
126syn match	logtalkBuiltInMethod	"\<current_predicate\ze("
127syn match	logtalkBuiltInMethod	"\<predicate_property\ze("
128
129syn match	logtalkBuiltInMethod	"\<a\(bolish\|ssert\(a\|z\)\)\ze("
130syn match	logtalkBuiltInMethod	"\<clause\ze("
131syn match	logtalkBuiltInMethod	"\<retract\(all\)\?\ze("
132
133syn match	logtalkBuiltInMethod	"\<\(bag\|set\)of\ze("
134syn match	logtalkBuiltInMethod	"\<f\(ind\|or\)all\ze("
135
136syn match	logtalkBuiltInMethod	"\<before\ze("
137syn match	logtalkBuiltInMethod	"\<after\ze("
138
139syn match	logtalkBuiltInMethod	"\<expand_term\ze("
140syn match	logtalkBuiltInMethod	"\<term_expansion\ze("
141syn match	logtalkBuiltInMethod	"\<phrase\ze("
142
143
144" Mode operators
145
146syn match	logtalkOperator		"?"
147syn match	logtalkOperator		"@"
148
149
150" Control constructs
151
152syn match	logtalkKeyword		"\<true\>"
153syn match	logtalkKeyword		"\<fail\>"
154syn match	logtalkKeyword		"\<ca\(ll\|tch\)\ze("
155syn match	logtalkOperator		"!"
156" syn match	logtalkOperator		","
157syn match	logtalkOperator		";"
158syn match	logtalkOperator		"-->"
159syn match	logtalkOperator		"->"
160syn match	logtalkKeyword		"\<throw\ze("
161
162
163" Term unification
164
165syn match	logtalkOperator		"="
166syn match	logtalkKeyword		"\<unify_with_occurs_check\ze("
167syn match	logtalkOperator		"\\="
168
169
170" Term testing
171
172syn match	logtalkKeyword		"\<var\ze("
173syn match	logtalkKeyword		"\<atom\(ic\)\?\ze("
174syn match	logtalkKeyword		"\<integer\ze("
175syn match	logtalkKeyword		"\<float\ze("
176syn match	logtalkKeyword		"\<compound\ze("
177syn match	logtalkKeyword		"\<n\(onvar\|umber\)\ze("
178
179
180" Term comparison
181
182syn match	logtalkOperator		"@=<"
183syn match	logtalkOperator		"=="
184syn match	logtalkOperator		"\\=="
185syn match	logtalkOperator		"@<"
186syn match	logtalkOperator		"@>"
187syn match	logtalkOperator		"@>="
188
189
190" Term creation and decomposition
191
192syn match	logtalkKeyword		"\<functor\ze("
193syn match	logtalkKeyword		"\<arg\ze("
194syn match	logtalkOperator		"=\.\."
195syn match	logtalkKeyword		"\<copy_term\ze("
196
197
198" Arithemtic evaluation
199
200syn match	logtalkOperator		"\<is\>"
201
202
203" Arithemtic comparison
204
205syn match	logtalkOperator		"=:="
206syn match	logtalkOperator		"=\\="
207syn match	logtalkOperator		"<"
208syn match	logtalkOperator		"=<"
209syn match	logtalkOperator		">"
210syn match	logtalkOperator		">="
211
212
213" Stream selection and control
214
215syn match	logtalkKeyword		"\<\(current\|set\)_\(in\|out\)put\ze("
216syn match	logtalkKeyword		"\<open\ze("
217syn match	logtalkKeyword		"\<close\ze("
218syn match	logtalkKeyword		"\<flush_output\ze("
219syn match	logtalkKeyword		"\<flush_output\>"
220syn match	logtalkKeyword		"\<stream_property\ze("
221syn match	logtalkKeyword		"\<at_end_of_stream\ze("
222syn match	logtalkKeyword		"\<at_end_of_stream\>"
223syn match	logtalkKeyword		"\<set_stream_position\ze("
224
225
226" Character and byte input/output
227
228syn match	logtalkKeyword		"\<\(get\|p\(eek\|ut\)\)_\(c\(har\|ode\)\|byte\)\ze("
229syn match	logtalkKeyword		"\<nl\ze("
230syn match	logtalkKeyword		"\<nl\>"
231
232
233" Term input/output
234
235syn match	logtalkKeyword		"\<read\(_term\)\?\ze("
236syn match	logtalkKeyword		"\<write\(q\|_\(canonical\|term\)\)\?\ze("
237syn match	logtalkKeyword		"\<\(current_\)\?op\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\|c\(hars\|o\(ncat\|des\)\)\)\ze("
251syn match	logtalkKeyword		"\<sub_atom\ze("
252syn match	logtalkKeyword		"\<char_code\ze("
253syn match	logtalkKeyword		"\<number_\(c\(hars\|odes\)\)\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		"\<r\(ound\|em\)\ze("
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		"\<flo\(or\|at\(_\(integer\|fractional\)_part\)\?\)\ze("
277syn match	logtalkKeyword		"\<truncate\ze("
278syn match	logtalkKeyword		"\<ceiling\ze("
279
280
281" Other arithemtic functors
282
283syn match	logtalkOperator		"\*\*"
284syn match	logtalkKeyword		"\<s\(in\|qrt\)\ze("
285syn match	logtalkKeyword		"\<cos\ze("
286syn match	logtalkKeyword		"\<atan\ze("
287syn match	logtalkKeyword		"\<exp\ze("
288syn match	logtalkKeyword		"\<log\ze("
289
290
291" Bitwise functors
292
293syn match	logtalkOperator		">>"
294syn match	logtalkOperator		"<<"
295syn match	logtalkOperator		"/\\"
296syn match	logtalkOperator		"\\/"
297syn match	logtalkOperator		"\\"
298
299
300" Logtalk list operator
301
302syn match	logtalkOperator		"|"
303
304
305" Logtalk numbers
306
307syn match	logtalkNumber		"\<\d\+\>"
308syn match	logtalkNumber		"\<\d\+\.\d\+\>"
309syn match	logtalkNumber		"\<\d\+[eE][-+]\=\d\+\>"
310syn match	logtalkNumber		"\<\d\+\.\d\+[eE][-+]\=\d\+\>"
311syn match	logtalkNumber		"\<0'.\>"
312syn match	logtalkNumber		"\<0b[0-1]\+\>"
313syn match	logtalkNumber		"\<0o\o\+\>"
314syn match	logtalkNumber		"\<0x\x\+\>"
315
316
317" Logtalk end-of-clause
318
319syn match	logtalkOperator		"\."
320
321
322" Logtalk comments
323
324syn region	logtalkBlockComment	start="/\*"	end="\*/"	fold
325syn match	logtalkLineComment	"%.*"
326
327
328" Logtalk entity folding
329
330syn region logtalkEntity transparent fold keepend start=":- object(" end=":- end_object\." contains=ALL
331syn region logtalkEntity transparent fold keepend start=":- protocol(" end=":- end_protocol\." contains=ALL
332syn region logtalkEntity transparent fold keepend start=":- category(" end=":- end_category\." contains=ALL
333
334
335syn sync ccomment logtalkBlockComment maxlines=50
336
337
338" Define the default highlighting.
339" For version 5.7 and earlier: only when not done already
340" For version 5.8 and later: only when an item doesn't have highlighting yet
341
342if version >= 508 || !exists("did_logtalk_syn_inits")
343	if version < 508
344		let did_logtalk_syn_inits = 1
345		command -nargs=+ HiLink hi link <args>
346	else
347		command -nargs=+ HiLink hi def link <args>
348	endif
349
350	HiLink	logtalkBlockComment	Comment
351	HiLink	logtalkLineComment	Comment
352
353	HiLink	logtalkOpenEntityDir	Normal
354	HiLink	logtalkOpenEntityDirTag	PreProc
355
356	HiLink	logtalkEntity		Normal
357
358	HiLink	logtalkEntityRel	Normal
359	HiLink	logtalkEntityRelTag	PreProc
360
361	HiLink	logtalkCloseEntityDir	PreProc
362
363	HiLink	logtalkDir		Normal
364	HiLink	logtalkDirTag		PreProc
365
366	HiLink	logtalkAtom		String
367	HiLink	logtalkString		String
368
369	HiLink	logtalkNumber		Number
370
371	HiLink	logtalkKeyword		Keyword
372
373	HiLink	logtalkBuiltIn		Keyword
374	HiLink	logtalkBuiltInMethod	Keyword
375
376	HiLink	logtalkOperator		Operator
377
378	HiLink	logtalkExtCall		Normal
379	HiLink	logtalkExtCallTag	Operator
380
381	HiLink	logtalkVariable		Identifier
382
383	delcommand HiLink
384
385endif
386
387
388let b:current_syntax = "logtalk"
389
390setlocal ts=4
391setlocal fdm=syntax
392setlocal fdc=2
393