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