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