Install vim73
[msysgit/mtrensch.git] / share / vim / vim73 / syntax / logtalk.vim
blob7d90cd88ef05a44fb585ca7dd907f9faa5a82422
1 " Vim syntax file
3 " Language:     Logtalk
4 " Maintainer:   Paulo Moura <pmoura@logtalk.org>
5 " Last Change:  Oct 31, 2008
8 " Quit when a syntax file was already loaded:
10 if version < 600
11         syntax clear
12 elseif exists("b:current_syntax")
13         finish
14 endif
17 " Logtalk is case sensitive:
19 syn case match
22 " Logtalk variables
24 syn match   logtalkVariable             "\<\(\u\|_\)\(\w\)*\>"
27 " Logtalk clause functor
29 syn match       logtalkOperator         ":-"
32 " Logtalk quoted atoms and strings
34 syn region      logtalkString           start=+"+       skip=+\\"+      end=+"+
35 syn region      logtalkAtom             start=+'+       skip=+\\'+      end=+'+         contains=logtalkEscapeSequence
37 syn match       logtalkEscapeSequence   contained       "\\\([\\abfnrtv\"\']\|\(x[a-fA-F0-9]\+\|[0-7]\+\)\\\)"
40 " Logtalk message sending operators
42 syn match       logtalkOperator         "::"
43 syn match       logtalkOperator         ":"
44 syn match       logtalkOperator         "\^\^"
47 " Logtalk external call
49 syn region      logtalkExtCall          matchgroup=logtalkExtCallTag            start="{"               matchgroup=logtalkExtCallTag            end="}"         contains=ALL
52 " Logtalk opening entity directives
54 syn region      logtalkOpenEntityDir    matchgroup=logtalkOpenEntityDirTag      start=":- object("      matchgroup=logtalkOpenEntityDirTag      end=")\."       contains=logtalkEntity,logtalkVariable,logtalkNumber,logtalkOperator,logtalkString,logtalkAtom,logtalkEntityRel,logtalkLineComment
55 syn region      logtalkOpenEntityDir    matchgroup=logtalkOpenEntityDirTag      start=":- protocol("    matchgroup=logtalkOpenEntityDirTag      end=")\."       contains=logtalkEntity,logtalkVariable,logtalkNumber,logtalkOperator,logtalkEntityRel,logtalkLineComment
56 syn region      logtalkOpenEntityDir    matchgroup=logtalkOpenEntityDirTag      start=":- category("    matchgroup=logtalkOpenEntityDirTag      end=")\."       contains=logtalkEntity,logtalkVariable,logtalkNumber,logtalkOperator,logtalkEntityRel,logtalkLineComment
59 " Logtalk closing entity directives
61 syn match       logtalkCloseEntityDir   ":- end_object\."
62 syn match       logtalkCloseEntityDir   ":- end_protocol\."
63 syn match       logtalkCloseEntityDir   ":- end_category\."
66 " Logtalk entity relations
68 syn region      logtalkEntityRel        matchgroup=logtalkEntityRelTag  start="instantiates("   matchgroup=logtalkEntityRelTag  end=")"         contains=logtalkEntity,logtalkVariable,logtalkNumber,logtalkOperator,logtalkString,logtalkAtom  contained
69 syn region      logtalkEntityRel        matchgroup=logtalkEntityRelTag  start="specializes("    matchgroup=logtalkEntityRelTag  end=")"         contains=logtalkEntity,logtalkVariable,logtalkNumber,logtalkOperator,logtalkString,logtalkAtom  contained
70 syn region      logtalkEntityRel        matchgroup=logtalkEntityRelTag  start="extends("        matchgroup=logtalkEntityRelTag  end=")"         contains=logtalkEntity,logtalkVariable,logtalkNumber,logtalkOperator,logtalkString,logtalkAtom  contained
71 syn region      logtalkEntityRel        matchgroup=logtalkEntityRelTag  start="imports("        matchgroup=logtalkEntityRelTag  end=")"         contains=logtalkEntity,logtalkVariable,logtalkNumber,logtalkOperator,logtalkString,logtalkAtom  contained
72 syn region      logtalkEntityRel        matchgroup=logtalkEntityRelTag  start="implements("     matchgroup=logtalkEntityRelTag  end=")"         contains=logtalkEntity,logtalkVariable,logtalkNumber,logtalkOperator,logtalkString,logtalkAtom  contained
73 syn region      logtalkEntityRel        matchgroup=logtalkEntityRelTag  start="complements("    matchgroup=logtalkEntityRelTag  end=")"         contains=logtalkEntity,logtalkVariable,logtalkNumber,logtalkOperator,logtalkString,logtalkAtom  contained
76 " Logtalk directives
78 syn region      logtalkDir              matchgroup=logtalkDirTag        start=":- alias("               matchgroup=logtalkDirTag        end=")\."       contains=ALL
79 syn region      logtalkDir              matchgroup=logtalkDirTag        start=":- calls("               matchgroup=logtalkDirTag        end=")\."       contains=ALL
80 syn region      logtalkDir              matchgroup=logtalkDirTag        start=":- encoding("            matchgroup=logtalkDirTag        end=")\."       contains=ALL
81 syn region      logtalkDir              matchgroup=logtalkDirTag        start=":- initialization("      matchgroup=logtalkDirTag        end=")\."       contains=ALL
82 syn region      logtalkDir              matchgroup=logtalkDirTag        start=":- info("                matchgroup=logtalkDirTag        end=")\."       contains=ALL
83 syn region      logtalkDir              matchgroup=logtalkDirTag        start=":- mode("                matchgroup=logtalkDirTag        end=")\."       contains=logtalkOperator, logtalkAtom
84 syn region      logtalkDir              matchgroup=logtalkDirTag        start=":- dynamic("             matchgroup=logtalkDirTag        end=")\."       contains=ALL
85 syn match       logtalkDirTag           ":- dynamic\."
86 syn region      logtalkDir              matchgroup=logtalkDirTag        start=":- discontiguous("       matchgroup=logtalkDirTag        end=")\."       contains=ALL
87 syn region      logtalkDir              matchgroup=logtalkDirTag        start=":- multifile("           matchgroup=logtalkDirTag        end=")\."       contains=ALL
88 syn region      logtalkDir              matchgroup=logtalkDirTag        start=":- public("              matchgroup=logtalkDirTag        end=")\."       contains=ALL
89 syn region      logtalkDir              matchgroup=logtalkDirTag        start=":- protected("           matchgroup=logtalkDirTag        end=")\."       contains=ALL
90 syn region      logtalkDir              matchgroup=logtalkDirTag        start=":- private("             matchgroup=logtalkDirTag        end=")\."       contains=ALL
91 syn region      logtalkDir              matchgroup=logtalkDirTag        start=":- meta_predicate("      matchgroup=logtalkDirTag        end=")\."       contains=ALL
92 syn region      logtalkDir              matchgroup=logtalkDirTag        start=":- op("                  matchgroup=logtalkDirTag        end=")\."       contains=ALL
93 syn region      logtalkDir              matchgroup=logtalkDirTag        start=":- synchronized("        matchgroup=logtalkDirTag        end=")\."       contains=ALL
94 syn match       logtalkDirTag           ":- synchronized\."
95 syn region      logtalkDir              matchgroup=logtalkDirTag        start=":- uses("                matchgroup=logtalkDirTag        end=")\."       contains=ALL
96 syn match       logtalkDirTag           ":- threaded\."
99 " Module directives
101 syn region      logtalkDir              matchgroup=logtalkDirTag        start=":- module("              matchgroup=logtalkDirTag        end=")\."       contains=ALL
102 syn region      logtalkDir              matchgroup=logtalkDirTag        start=":- export("              matchgroup=logtalkDirTag        end=")\."       contains=ALL
103 syn region      logtalkDir              matchgroup=logtalkDirTag        start=":- use_module("          matchgroup=logtalkDirTag        end=")\."       contains=ALL
106 " Logtalk built-in predicates
108 syn match       logtalkBuiltIn          "\<\(abolish\|c\(reate\|urrent\)\)_\(object\|protocol\|category\)\ze("
110 syn match       logtalkBuiltIn          "\<\(object\|protocol\|category\)_property\ze("
112 syn match       logtalkBuiltIn          "\<complements_object\ze("
113 syn match       logtalkBuiltIn          "\<extends_\(object\|protocol\|category\)\ze("
114 syn match       logtalkBuiltIn          "\<imp\(orts_category\|lements_protocol\)\ze("
115 syn match       logtalkBuiltIn          "\<\(instantiat\|specializ\)es_class\ze("
117 syn match       logtalkBuiltIn          "\<\(abolish\|define\)_events\ze("
118 syn match       logtalkBuiltIn          "\<current_event\ze("
120 syn match       logtalkBuiltIn          "\<\(curren\|se\)t_logtalk_flag\ze("
122 syn match       logtalkBuiltIn          "\<logtalk_\(compile\|l\(ibrary_path\|oad\)\)\ze("
124 syn match       logtalkBuiltIn          "\<\(for\|retract\)all\ze("
126 syn match       logtalkBuiltIn          "\<threaded\(_\(call\|once\|ignore\|exit\|peek\|wait\|notify\)\)\?\ze("
129 " Logtalk built-in methods
131 syn match       logtalkBuiltInMethod    "\<parameter\ze("
132 syn match       logtalkBuiltInMethod    "\<se\(lf\|nder\)\ze("
133 syn match       logtalkBuiltInMethod    "\<this\ze("
135 syn match       logtalkBuiltInMethod    "\<current_predicate\ze("
136 syn match       logtalkBuiltInMethod    "\<predicate_property\ze("
138 syn match       logtalkBuiltInMethod    "\<a\(bolish\|ssert\(a\|z\)\)\ze("
139 syn match       logtalkBuiltInMethod    "\<clause\ze("
140 syn match       logtalkBuiltInMethod    "\<retract\(all\)\?\ze("
142 syn match       logtalkBuiltInMethod    "\<\(bag\|set\)of\ze("
143 syn match       logtalkBuiltInMethod    "\<f\(ind\|or\)all\ze("
145 syn match       logtalkBuiltInMethod    "\<before\ze("
146 syn match       logtalkBuiltInMethod    "\<after\ze("
148 syn match       logtalkBuiltInMethod    "\<expand_term\ze("
149 syn match       logtalkBuiltInMethod    "\<\(goal\|term\)_expansion\ze("
150 syn match       logtalkBuiltInMethod    "\<phrase\ze("
153 " Mode operators
155 syn match       logtalkOperator         "?"
156 syn match       logtalkOperator         "@"
159 " Control constructs
161 syn match       logtalkKeyword          "\<true\>"
162 syn match       logtalkKeyword          "\<fail\>"
163 syn match       logtalkKeyword          "\<ca\(ll\|tch\)\ze("
164 syn match       logtalkOperator         "!"
165 " syn match     logtalkOperator         ","
166 syn match       logtalkOperator         ";"
167 syn match       logtalkOperator         "-->"
168 syn match       logtalkOperator         "->"
169 syn match       logtalkKeyword          "\<throw\ze("
172 " Term unification
174 syn match       logtalkOperator         "="
175 syn match       logtalkKeyword          "\<unify_with_occurs_check\ze("
176 syn match       logtalkOperator         "\\="
179 " Term testing
181 syn match       logtalkKeyword          "\<var\ze("
182 syn match       logtalkKeyword          "\<atom\(ic\)\?\ze("
183 syn match       logtalkKeyword          "\<integer\ze("
184 syn match       logtalkKeyword          "\<float\ze("
185 syn match       logtalkKeyword          "\<compound\ze("
186 syn match       logtalkKeyword          "\<n\(onvar\|umber\)\ze("
189 " Term comparison
191 syn match       logtalkOperator         "@=<"
192 syn match       logtalkOperator         "=="
193 syn match       logtalkOperator         "\\=="
194 syn match       logtalkOperator         "@<"
195 syn match       logtalkOperator         "@>"
196 syn match       logtalkOperator         "@>="
199 " Term creation and decomposition
201 syn match       logtalkKeyword          "\<functor\ze("
202 syn match       logtalkKeyword          "\<arg\ze("
203 syn match       logtalkOperator         "=\.\."
204 syn match       logtalkKeyword          "\<copy_term\ze("
207 " Arithemtic evaluation
209 syn match       logtalkOperator         "\<is\>"
212 " Arithemtic comparison
214 syn match       logtalkOperator         "=:="
215 syn match       logtalkOperator         "=\\="
216 syn match       logtalkOperator         "<"
217 syn match       logtalkOperator         "=<"
218 syn match       logtalkOperator         ">"
219 syn match       logtalkOperator         ">="
222 " Stream selection and control
224 syn match       logtalkKeyword          "\<\(curren\|se\)t_\(in\|out\)put\ze("
225 syn match       logtalkKeyword          "\<open\ze("
226 syn match       logtalkKeyword          "\<close\ze("
227 syn match       logtalkKeyword          "\<flush_output\ze("
228 syn match       logtalkKeyword          "\<flush_output\>"
229 syn match       logtalkKeyword          "\<stream_property\ze("
230 syn match       logtalkKeyword          "\<at_end_of_stream\ze("
231 syn match       logtalkKeyword          "\<at_end_of_stream\>"
232 syn match       logtalkKeyword          "\<set_stream_position\ze("
235 " Character and byte input/output
237 syn match       logtalkKeyword          "\<\(get\|p\(eek\|ut\)\)_\(c\(har\|ode\)\|byte\)\ze("
238 syn match       logtalkKeyword          "\<nl\ze("
239 syn match       logtalkKeyword          "\<nl\>"
242 " Term input/output
244 syn match       logtalkKeyword          "\<read\(_term\)\?\ze("
245 syn match       logtalkKeyword          "\<write\(q\|_\(canonical\|term\)\)\?\ze("
246 syn match       logtalkKeyword          "\<\(current_\)\?op\ze("
247 syn match       logtalkKeyword          "\<\(current_\)\?char_conversion\ze("
250 " Logic and control
252 syn match       logtalkOperator         "\\+"
253 syn match       logtalkKeyword          "\<once\ze("
254 syn match       logtalkKeyword          "\<repeat\>"
257 " Atomic term processing
259 syn match       logtalkKeyword          "\<atom_\(length\|c\(hars\|o\(ncat\|des\)\)\)\ze("
260 syn match       logtalkKeyword          "\<sub_atom\ze("
261 syn match       logtalkKeyword          "\<char_code\ze("
262 syn match       logtalkKeyword          "\<number_c\(har\|ode\)s\ze("
265 " Implementation defined hooks functions
267 syn match       logtalkKeyword          "\<\(curren\|se\)t_prolog_flag\ze("
268 syn match       logtalkKeyword          "\<halt\ze("
269 syn match       logtalkKeyword          "\<halt\>"
272 " Evaluable functors
274 syn match       logtalkOperator         "+"
275 syn match       logtalkOperator         "-"
276 syn match       logtalkOperator         "\*"
277 syn match       logtalkOperator         "//"
278 syn match       logtalkOperator         "/"
279 syn match       logtalkKeyword          "\<r\(ound\|em\)\ze("
280 syn match       logtalkKeyword          "\<rem\>"
281 syn match       logtalkKeyword          "\<mod\ze("
282 syn match       logtalkKeyword          "\<mod\>"
283 syn match       logtalkKeyword          "\<abs\ze("
284 syn match       logtalkKeyword          "\<sign\ze("
285 syn match       logtalkKeyword          "\<flo\(or\|at\(_\(integer\|fractional\)_part\)\?\)\ze("
286 syn match       logtalkKeyword          "\<truncate\ze("
287 syn match       logtalkKeyword          "\<ceiling\ze("
290 " Other arithemtic functors
292 syn match       logtalkOperator         "\*\*"
293 syn match       logtalkKeyword          "\<s\(in\|qrt\)\ze("
294 syn match       logtalkKeyword          "\<cos\ze("
295 syn match       logtalkKeyword          "\<atan\ze("
296 syn match       logtalkKeyword          "\<exp\ze("
297 syn match       logtalkKeyword          "\<log\ze("
300 " Bitwise functors
302 syn match       logtalkOperator         ">>"
303 syn match       logtalkOperator         "<<"
304 syn match       logtalkOperator         "/\\"
305 syn match       logtalkOperator         "\\/"
306 syn match       logtalkOperator         "\\"
309 " Logtalk list operator
311 syn match       logtalkOperator         "|"
314 " Logtalk numbers
316 syn match       logtalkNumber           "\<\d\+\>"
317 syn match       logtalkNumber           "\<\d\+\.\d\+\>"
318 syn match       logtalkNumber           "\<\d\+[eE][-+]\=\d\+\>"
319 syn match       logtalkNumber           "\<\d\+\.\d\+[eE][-+]\=\d\+\>"
320 syn match       logtalkNumber           "\<0'.\|0''\|0'\"\>"
321 syn match       logtalkNumber           "\<0b[0-1]\+\>"
322 syn match       logtalkNumber           "\<0o\o\+\>"
323 syn match       logtalkNumber           "\<0x\x\+\>"
326 " Logtalk end-of-clause
328 syn match       logtalkOperator         "\."
331 " Logtalk comments
333 syn region      logtalkBlockComment     start="/\*"     end="\*/"       fold
334 syn match       logtalkLineComment      "%.*"
337 " Logtalk entity folding
339 syn region logtalkEntity transparent fold keepend start=":- object(" end=":- end_object\." contains=ALL
340 syn region logtalkEntity transparent fold keepend start=":- protocol(" end=":- end_protocol\." contains=ALL
341 syn region logtalkEntity transparent fold keepend start=":- category(" end=":- end_category\." contains=ALL
344 syn sync ccomment logtalkBlockComment maxlines=50
347 " Define the default highlighting.
348 " For version 5.7 and earlier: only when not done already
349 " For version 5.8 and later: only when an item doesn't have highlighting yet
351 if version >= 508 || !exists("did_logtalk_syn_inits")
352         if version < 508
353                 let did_logtalk_syn_inits = 1
354                 command -nargs=+ HiLink hi link <args>
355         else
356                 command -nargs=+ HiLink hi def link <args>
357         endif
359         HiLink  logtalkBlockComment     Comment
360         HiLink  logtalkLineComment      Comment
362         HiLink  logtalkOpenEntityDir    Normal
363         HiLink  logtalkOpenEntityDirTag PreProc
365         HiLink  logtalkEntity           Normal
367         HiLink  logtalkEntityRel        Normal
368         HiLink  logtalkEntityRelTag     PreProc
370         HiLink  logtalkCloseEntityDir   PreProc
372         HiLink  logtalkDir              Normal
373         HiLink  logtalkDirTag           PreProc
375         HiLink  logtalkAtom             String
376         HiLink  logtalkString           String
377         HiLink  logtalkEscapeSequence   SpecialChar
379         HiLink  logtalkNumber           Number
381         HiLink  logtalkKeyword          Keyword
383         HiLink  logtalkBuiltIn          Keyword
384         HiLink  logtalkBuiltInMethod    Keyword
386         HiLink  logtalkOperator         Operator
388         HiLink  logtalkExtCall          Normal
389         HiLink  logtalkExtCallTag       Operator
391         HiLink  logtalkVariable         Identifier
393         delcommand HiLink
395 endif
398 let b:current_syntax = "logtalk"