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