1" Vim syntax file 2" 3" Language: Logtalk 4" Maintainer: Paulo Moura <[email protected]> 5" Last Change: February 4, 2012 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 16let s:cpo_save = &cpo 17set cpo&vim 18 19" Logtalk is case sensitive: 20 21syn case match 22 23 24" Logtalk variables 25 26syn match logtalkVariable "\<\(\u\|_\)\(\w\)*\>" 27 28 29" Logtalk clause functor 30 31syn match logtalkOperator ":-" 32 33 34" Logtalk quoted atoms and strings 35 36syn region logtalkString start=+"+ skip=+\\"+ end=+"+ 37syn region logtalkAtom start=+'+ skip=+\\'+ end=+'+ contains=logtalkEscapeSequence 38 39syn match logtalkEscapeSequence contained "\\\([\\abfnrtv\"\']\|\(x[a-fA-F0-9]\+\|[0-7]\+\)\\\)" 40 41 42" Logtalk message sending operators 43 44syn match logtalkOperator "::" 45syn match logtalkOperator ":" 46syn match logtalkOperator "\^\^" 47 48 49" Logtalk external call 50 51syn region logtalkExtCall matchgroup=logtalkExtCallTag start="{" matchgroup=logtalkExtCallTag end="}" contains=ALL 52 53 54" Logtalk opening entity directives 55 56syn region logtalkOpenEntityDir matchgroup=logtalkOpenEntityDirTag start=":- object(" matchgroup=logtalkOpenEntityDirTag end=")\." contains=logtalkEntity,logtalkVariable,logtalkNumber,logtalkOperator,logtalkString,logtalkAtom,logtalkEntityRel,logtalkLineComment 57syn region logtalkOpenEntityDir matchgroup=logtalkOpenEntityDirTag start=":- protocol(" matchgroup=logtalkOpenEntityDirTag end=")\." contains=logtalkEntity,logtalkVariable,logtalkNumber,logtalkOperator,logtalkEntityRel,logtalkLineComment 58syn region logtalkOpenEntityDir matchgroup=logtalkOpenEntityDirTag start=":- category(" matchgroup=logtalkOpenEntityDirTag end=")\." contains=logtalkEntity,logtalkVariable,logtalkNumber,logtalkOperator,logtalkEntityRel,logtalkLineComment 59 60 61" Logtalk closing entity directives 62 63syn match logtalkCloseEntityDir ":- end_object\." 64syn match logtalkCloseEntityDir ":- end_protocol\." 65syn match logtalkCloseEntityDir ":- end_category\." 66 67 68" Logtalk entity relations 69 70syn region logtalkEntityRel matchgroup=logtalkEntityRelTag start="instantiates(" matchgroup=logtalkEntityRelTag end=")" contains=logtalkEntity,logtalkVariable,logtalkNumber,logtalkOperator,logtalkString,logtalkAtom contained 71syn region logtalkEntityRel matchgroup=logtalkEntityRelTag start="specializes(" matchgroup=logtalkEntityRelTag end=")" contains=logtalkEntity,logtalkVariable,logtalkNumber,logtalkOperator,logtalkString,logtalkAtom contained 72syn region logtalkEntityRel matchgroup=logtalkEntityRelTag start="extends(" matchgroup=logtalkEntityRelTag end=")" contains=logtalkEntity,logtalkVariable,logtalkNumber,logtalkOperator,logtalkString,logtalkAtom contained 73syn region logtalkEntityRel matchgroup=logtalkEntityRelTag start="imports(" matchgroup=logtalkEntityRelTag end=")" contains=logtalkEntity,logtalkVariable,logtalkNumber,logtalkOperator,logtalkString,logtalkAtom contained 74syn region logtalkEntityRel matchgroup=logtalkEntityRelTag start="implements(" matchgroup=logtalkEntityRelTag end=")" contains=logtalkEntity,logtalkVariable,logtalkNumber,logtalkOperator,logtalkString,logtalkAtom contained 75syn region logtalkEntityRel matchgroup=logtalkEntityRelTag start="complements(" matchgroup=logtalkEntityRelTag end=")" contains=logtalkEntity,logtalkVariable,logtalkNumber,logtalkOperator,logtalkString,logtalkAtom contained 76 77 78" Logtalk directives 79 80syn region logtalkDir matchgroup=logtalkDirTag start=":- if(" matchgroup=logtalkDirTag end=")\." contains=ALL 81syn region logtalkDir matchgroup=logtalkDirTag start=":- elif(" matchgroup=logtalkDirTag end=")\." contains=ALL 82syn match logtalkDirTag ":- else\." 83syn match logtalkDirTag ":- endif\." 84syn region logtalkDir matchgroup=logtalkDirTag start=":- alias(" matchgroup=logtalkDirTag end=")\." contains=ALL 85syn region logtalkDir matchgroup=logtalkDirTag start=":- calls(" matchgroup=logtalkDirTag end=")\." contains=ALL 86syn region logtalkDir matchgroup=logtalkDirTag start=":- coinductive(" matchgroup=logtalkDirTag end=")\." contains=ALL 87syn region logtalkDir matchgroup=logtalkDirTag start=":- encoding(" matchgroup=logtalkDirTag end=")\." contains=ALL 88syn region logtalkDir matchgroup=logtalkDirTag start=":- initialization(" matchgroup=logtalkDirTag end=")\." contains=ALL 89syn region logtalkDir matchgroup=logtalkDirTag start=":- info(" matchgroup=logtalkDirTag end=")\." contains=ALL 90syn region logtalkDir matchgroup=logtalkDirTag start=":- mode(" matchgroup=logtalkDirTag end=")\." contains=logtalkOperator, logtalkAtom 91syn region logtalkDir matchgroup=logtalkDirTag start=":- dynamic(" matchgroup=logtalkDirTag end=")\." contains=ALL 92syn match logtalkDirTag ":- dynamic\." 93syn region logtalkDir matchgroup=logtalkDirTag start=":- discontiguous(" matchgroup=logtalkDirTag end=")\." contains=ALL 94syn region logtalkDir matchgroup=logtalkDirTag start=":- multifile(" matchgroup=logtalkDirTag end=")\." contains=ALL 95syn region logtalkDir matchgroup=logtalkDirTag start=":- public(" matchgroup=logtalkDirTag end=")\." contains=ALL 96syn region logtalkDir matchgroup=logtalkDirTag start=":- protected(" matchgroup=logtalkDirTag end=")\." contains=ALL 97syn region logtalkDir matchgroup=logtalkDirTag start=":- private(" matchgroup=logtalkDirTag end=")\." contains=ALL 98syn region logtalkDir matchgroup=logtalkDirTag start=":- meta_predicate(" matchgroup=logtalkDirTag end=")\." contains=ALL 99syn region logtalkDir matchgroup=logtalkDirTag start=":- meta_non_terminal(" matchgroup=logtalkDirTag end=")\." contains=ALL 100syn region logtalkDir matchgroup=logtalkDirTag start=":- op(" matchgroup=logtalkDirTag end=")\." contains=ALL 101syn region logtalkDir matchgroup=logtalkDirTag start=":- set_logtalk_flag(" matchgroup=logtalkDirTag end=")\." contains=ALL 102syn region logtalkDir matchgroup=logtalkDirTag start=":- synchronized(" matchgroup=logtalkDirTag end=")\." contains=ALL 103syn match logtalkDirTag ":- synchronized\." 104syn region logtalkDir matchgroup=logtalkDirTag start=":- uses(" matchgroup=logtalkDirTag end=")\." contains=ALL 105syn match logtalkDirTag ":- threaded\." 106 107 108" Prolog directives 109 110syn region logtalkDir matchgroup=logtalkDirTag start=":- ensure_loaded(" matchgroup=logtalkDirTag end=")\." contains=ALL 111syn region logtalkDir matchgroup=logtalkDirTag start=":- include(" matchgroup=logtalkDirTag end=")\." contains=ALL 112syn region logtalkDir matchgroup=logtalkDirTag start=":- set_prolog_flag(" matchgroup=logtalkDirTag end=")\." contains=ALL 113 114 115" Module directives 116 117syn region logtalkDir matchgroup=logtalkDirTag start=":- module(" matchgroup=logtalkDirTag end=")\." contains=ALL 118syn region logtalkDir matchgroup=logtalkDirTag start=":- export(" matchgroup=logtalkDirTag end=")\." contains=ALL 119syn region logtalkDir matchgroup=logtalkDirTag start=":- reexport(" matchgroup=logtalkDirTag end=")\." contains=ALL 120syn region logtalkDir matchgroup=logtalkDirTag start=":- use_module(" matchgroup=logtalkDirTag end=")\." contains=ALL 121 122 123" Logtalk built-in predicates 124 125syn match logtalkBuiltIn "\<\(abolish\|c\(reate\|urrent\)\)_\(object\|protocol\|category\)\ze(" 126 127syn match logtalkBuiltIn "\<\(object\|protocol\|category\)_property\ze(" 128 129syn match logtalkBuiltIn "\<co\(mplements_object\|nforms_to_protocol\)\ze(" 130syn match logtalkBuiltIn "\<extends_\(object\|protocol\|category\)\ze(" 131syn match logtalkBuiltIn "\<imp\(orts_category\|lements_protocol\)\ze(" 132syn match logtalkBuiltIn "\<\(instantiat\|specializ\)es_class\ze(" 133 134syn match logtalkBuiltIn "\<\(abolish\|define\)_events\ze(" 135syn match logtalkBuiltIn "\<current_event\ze(" 136 137syn match logtalkBuiltIn "\<\(curren\|se\)t_logtalk_flag\ze(" 138 139syn match logtalkBuiltIn "\<logtalk_\(compile\|l\(ibrary_path\|oad\|oad_context\)\)\ze(" 140 141syn match logtalkBuiltIn "\<\(for\|retract\)all\ze(" 142 143syn match logtalkBuiltIn "\<threaded\(_\(call\|once\|ignore\|exit\|peek\|wait\|notify\)\)\?\ze(" 144 145 146" Logtalk built-in methods 147 148syn match logtalkBuiltInMethod "\<parameter\ze(" 149syn match logtalkBuiltInMethod "\<se\(lf\|nder\)\ze(" 150syn match logtalkBuiltInMethod "\<this\ze(" 151 152syn match logtalkBuiltInMethod "\<current_predicate\ze(" 153syn match logtalkBuiltInMethod "\<predicate_property\ze(" 154 155syn match logtalkBuiltInMethod "\<a\(bolish\|ssert\(a\|z\)\)\ze(" 156syn match logtalkBuiltInMethod "\<clause\ze(" 157syn match logtalkBuiltInMethod "\<retract\(all\)\?\ze(" 158 159syn match logtalkBuiltInMethod "\<\(bag\|set\)of\ze(" 160syn match logtalkBuiltInMethod "\<f\(ind\|or\)all\ze(" 161 162syn match logtalkBuiltInMethod "\<before\ze(" 163syn match logtalkBuiltInMethod "\<after\ze(" 164 165syn match logtalkBuiltInMethod "\<expand_\(goal\|term\)\ze(" 166syn match logtalkBuiltInMethod "\<\(goal\|term\)_expansion\ze(" 167syn match logtalkBuiltInMethod "\<phrase\ze(" 168 169 170" Mode operators 171 172syn match logtalkOperator "?" 173syn match logtalkOperator "@" 174 175 176" Control constructs 177 178syn match logtalkKeyword "\<true\>" 179syn match logtalkKeyword "\<fail\>" 180syn match logtalkKeyword "\<ca\(ll\|tch\)\ze(" 181syn match logtalkOperator "!" 182" syn match logtalkOperator "," 183syn match logtalkOperator ";" 184syn match logtalkOperator "-->" 185syn match logtalkOperator "->" 186syn match logtalkKeyword "\<throw\ze(" 187 188 189" Term unification 190 191syn match logtalkOperator "=" 192syn match logtalkKeyword "\<unify_with_occurs_check\ze(" 193syn match logtalkOperator "\\=" 194 195 196" Term testing 197 198syn match logtalkKeyword "\<var\ze(" 199syn match logtalkKeyword "\<atom\(ic\)\?\ze(" 200syn match logtalkKeyword "\<integer\ze(" 201syn match logtalkKeyword "\<float\ze(" 202syn match logtalkKeyword "\<c\(allable\|ompound\)\ze(" 203syn match logtalkKeyword "\<n\(onvar\|umber\)\ze(" 204syn match logtalkKeyword "\<ground\ze(" 205 206 207" Term comparison 208 209syn match logtalkKeyword "\<compare\ze(" 210syn match logtalkOperator "@=<" 211syn match logtalkOperator "==" 212syn match logtalkOperator "\\==" 213syn match logtalkOperator "@<" 214syn match logtalkOperator "@>" 215syn match logtalkOperator "@>=" 216 217 218" Term creation and decomposition 219 220syn match logtalkKeyword "\<functor\ze(" 221syn match logtalkKeyword "\<arg\ze(" 222syn match logtalkOperator "=\.\." 223syn match logtalkKeyword "\<copy_term\ze(" 224syn match logtalkKeyword "\<numbervars\ze(" 225 226 227" Arithemtic evaluation 228 229syn match logtalkOperator "\<is\>" 230 231 232" Arithemtic comparison 233 234syn match logtalkOperator "=:=" 235syn match logtalkOperator "=\\=" 236syn match logtalkOperator "<" 237syn match logtalkOperator "=<" 238syn match logtalkOperator ">" 239syn match logtalkOperator ">=" 240 241 242" Stream selection and control 243 244syn match logtalkKeyword "\<\(curren\|se\)t_\(in\|out\)put\ze(" 245syn match logtalkKeyword "\<open\ze(" 246syn match logtalkKeyword "\<close\ze(" 247syn match logtalkKeyword "\<flush_output\ze(" 248syn match logtalkKeyword "\<flush_output\>" 249syn match logtalkKeyword "\<stream_property\ze(" 250syn match logtalkKeyword "\<at_end_of_stream\ze(" 251syn match logtalkKeyword "\<at_end_of_stream\>" 252syn match logtalkKeyword "\<set_stream_position\ze(" 253 254 255" Character and byte input/output 256 257syn match logtalkKeyword "\<\(get\|p\(eek\|ut\)\)_\(c\(har\|ode\)\|byte\)\ze(" 258syn match logtalkKeyword "\<nl\ze(" 259syn match logtalkKeyword "\<nl\>" 260 261 262" Term input/output 263 264syn match logtalkKeyword "\<read\(_term\)\?\ze(" 265syn match logtalkKeyword "\<write\(q\|_\(canonical\|term\)\)\?\ze(" 266syn match logtalkKeyword "\<\(current_\)\?op\ze(" 267syn match logtalkKeyword "\<\(current_\)\?char_conversion\ze(" 268 269 270" Logic and control 271 272syn match logtalkOperator "\\+" 273syn match logtalkKeyword "\<ignore\ze(" 274syn match logtalkKeyword "\<once\ze(" 275syn match logtalkKeyword "\<repeat\>" 276 277 278" Atomic term processing 279 280syn match logtalkKeyword "\<atom_\(length\|c\(hars\|o\(ncat\|des\)\)\)\ze(" 281syn match logtalkKeyword "\<sub_atom\ze(" 282syn match logtalkKeyword "\<char_code\ze(" 283syn match logtalkKeyword "\<number_c\(har\|ode\)s\ze(" 284 285 286" Implementation defined hooks functions 287 288syn match logtalkKeyword "\<\(curren\|se\)t_prolog_flag\ze(" 289syn match logtalkKeyword "\<halt\ze(" 290syn match logtalkKeyword "\<halt\>" 291 292 293" Sorting 294 295syn match logtalkKeyword "\<\(key\)\?sort\ze(" 296 297 298" Evaluable functors 299 300syn match logtalkOperator "+" 301syn match logtalkOperator "-" 302syn match logtalkOperator "\*" 303syn match logtalkOperator "//" 304syn match logtalkOperator "/" 305syn match logtalkKeyword "\<r\(ound\|em\)\ze(" 306syn match logtalkKeyword "\<e\>" 307syn match logtalkKeyword "\<pi\>" 308syn match logtalkKeyword "\<rem\>" 309syn match logtalkKeyword "\<mod\ze(" 310syn match logtalkKeyword "\<mod\>" 311syn match logtalkKeyword "\<abs\ze(" 312syn match logtalkKeyword "\<sign\ze(" 313syn match logtalkKeyword "\<flo\(or\|at\(_\(integer\|fractional\)_part\)\?\)\ze(" 314syn match logtalkKeyword "\<truncate\ze(" 315syn match logtalkKeyword "\<ceiling\ze(" 316 317 318" Other arithemtic functors 319 320syn match logtalkOperator "\*\*" 321syn match logtalkKeyword "\<s\(in\|qrt\)\ze(" 322syn match logtalkKeyword "\<cos\ze(" 323syn match logtalkKeyword "\<atan\ze(" 324syn match logtalkKeyword "\<exp\ze(" 325syn match logtalkKeyword "\<log\ze(" 326 327 328" Bitwise functors 329 330syn match logtalkOperator ">>" 331syn match logtalkOperator "<<" 332syn match logtalkOperator "/\\" 333syn match logtalkOperator "\\/" 334syn match logtalkOperator "\\" 335 336 337" Logtalk list operator 338 339syn match logtalkOperator "|" 340 341 342" Logtalk existential quantifier operator 343 344syn match logtalkOperator "\^" 345 346 347" Logtalk numbers 348 349syn match logtalkNumber "\<\d\+\>" 350syn match logtalkNumber "\<\d\+\.\d\+\>" 351syn match logtalkNumber "\<\d\+[eE][-+]\=\d\+\>" 352syn match logtalkNumber "\<\d\+\.\d\+[eE][-+]\=\d\+\>" 353syn match logtalkNumber "\<0'.\|0''\|0'\"\>" 354syn match logtalkNumber "\<0b[0-1]\+\>" 355syn match logtalkNumber "\<0o\o\+\>" 356syn match logtalkNumber "\<0x\x\+\>" 357 358 359" Logtalk end-of-clause 360 361syn match logtalkOperator "\." 362 363 364" Logtalk comments 365 366syn region logtalkBlockComment start="/\*" end="\*/" fold 367syn match logtalkLineComment "%.*" 368 369syn cluster logtalkComment contains=logtalkBlockComment,logtalkLineComment 370 371 372" Logtalk conditional compilation folding 373 374syn region logtalkIfContainer transparent keepend extend start=":- if(" end=":- endif\." containedin=ALLBUT,@logtalkComment contains=NONE 375syn region logtalkIf transparent fold keepend start=":- if(" end=":- \(else\.\|elif(\)"ms=s-1,me=s-1 contained containedin=logtalkIfContainer nextgroup=logtalkElseIf,logtalkElse contains=TOP 376syn region logtalkElseIf transparent fold keepend start=":- elif(" end=":- \(else\.\|elif(\)"ms=s-1,me=s-1 contained containedin=logtalkIfContainer nextgroup=logtalkElseIf,logtalkElse contains=TOP 377syn region logtalkElse transparent fold keepend start=":- else\." end=":- endif\." contained containedin=logtalkIfContainer contains=TOP 378 379 380 381" Logtalk entity folding 382 383syn region logtalkEntity transparent fold keepend start=":- object(" end=":- end_object\." contains=ALL 384syn region logtalkEntity transparent fold keepend start=":- protocol(" end=":- end_protocol\." contains=ALL 385syn region logtalkEntity transparent fold keepend start=":- category(" end=":- end_category\." contains=ALL 386 387 388syn sync ccomment logtalkBlockComment maxlines=50 389 390 391" Define the default highlighting. 392" For version 5.7 and earlier: only when not done already 393" For version 5.8 and later: only when an item doesn't have highlighting yet 394 395if version >= 508 || !exists("did_logtalk_syn_inits") 396 if version < 508 397 let did_logtalk_syn_inits = 1 398 command -nargs=+ HiLink hi link <args> 399 else 400 command -nargs=+ HiLink hi def link <args> 401 endif 402 403 HiLink logtalkBlockComment Comment 404 HiLink logtalkLineComment Comment 405 406 HiLink logtalkOpenEntityDir Normal 407 HiLink logtalkOpenEntityDirTag PreProc 408 409 HiLink logtalkIfContainer PreProc 410 HiLink logtalkIf PreProc 411 HiLink logtalkElseIf PreProc 412 HiLink logtalkElse PreProc 413 414 HiLink logtalkEntity Normal 415 416 HiLink logtalkEntityRel Normal 417 HiLink logtalkEntityRelTag PreProc 418 419 HiLink logtalkCloseEntityDir PreProc 420 421 HiLink logtalkDir Normal 422 HiLink logtalkDirTag PreProc 423 424 HiLink logtalkAtom String 425 HiLink logtalkString String 426 HiLink logtalkEscapeSequence SpecialChar 427 428 HiLink logtalkNumber Number 429 430 HiLink logtalkKeyword Keyword 431 432 HiLink logtalkBuiltIn Keyword 433 HiLink logtalkBuiltInMethod Keyword 434 435 HiLink logtalkOperator Operator 436 437 HiLink logtalkExtCall Normal 438 HiLink logtalkExtCallTag Operator 439 440 HiLink logtalkVariable Identifier 441 442 delcommand HiLink 443 444endif 445 446 447let b:current_syntax = "logtalk" 448 449let &cpo = s:cpo_save 450unlet s:cpo_save 451