1" Vim syntax file 2" 3" Language: Logtalk 4" Maintainer: Paulo Moura <[email protected]> 5" Last Change: 2004 May 16 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\." 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 contained 66syn region logtalkEntityRel matchgroup=logtalkEntityRelTag start="specializes(" matchgroup=logtalkEntityRelTag end=")" contains=logtalkEntity contained 67syn region logtalkEntityRel matchgroup=logtalkEntityRelTag start="extends(" matchgroup=logtalkEntityRelTag end=")" contains=logtalkEntity contained 68syn region logtalkEntityRel matchgroup=logtalkEntityRelTag start="imports(" matchgroup=logtalkEntityRelTag end=")" contains=logtalkEntity contained 69syn region logtalkEntityRel matchgroup=logtalkEntityRelTag start="implements(" matchgroup=logtalkEntityRelTag end=")" contains=logtalkEntity contained 70 71 72" Logtalk directives 73 74syn region logtalkDir matchgroup=logtalkDirTag start=":- initialization(" matchgroup=logtalkDirTag end=")\." contains=ALL 75syn region logtalkDir matchgroup=logtalkDirTag start=":- info(" matchgroup=logtalkDirTag end=")\." contains=ALL 76syn region logtalkDir matchgroup=logtalkDirTag start=":- mode(" matchgroup=logtalkDirTag end=")\." contains=logtalkOperator,logtalkAtom 77syn region logtalkDir matchgroup=logtalkDirTag start=":- dynamic(" matchgroup=logtalkDirTag end=")\." contains=ALL 78syn match logtalkDirTag ":- dynamic\." 79syn region logtalkDir matchgroup=logtalkDirTag start=":- discontiguous(" matchgroup=logtalkDirTag end=")\." contains=ALL 80syn region logtalkDir matchgroup=logtalkDirTag start=":- public(" matchgroup=logtalkDirTag end=")\." contains=ALL 81syn region logtalkDir matchgroup=logtalkDirTag start=":- protected(" matchgroup=logtalkDirTag end=")\." contains=ALL 82syn region logtalkDir matchgroup=logtalkDirTag start=":- private(" matchgroup=logtalkDirTag end=")\." contains=ALL 83syn region logtalkDir matchgroup=logtalkDirTag start=":- metapredicate(" matchgroup=logtalkDirTag end=")\." contains=ALL 84syn region logtalkDir matchgroup=logtalkDirTag start=":- op(" matchgroup=logtalkDirTag end=")\." contains=ALL 85syn region logtalkDir matchgroup=logtalkDirTag start=":- calls(" matchgroup=logtalkDirTag end=")\." contains=ALL 86syn region logtalkDir matchgroup=logtalkDirTag start=":- uses(" matchgroup=logtalkDirTag end=")\." contains=ALL 87 88 89" Logtalk built-in predicates 90 91syn match logtalkBuiltIn "\<current_object\ze(" 92syn match logtalkBuiltIn "\<current_protocol\ze(" 93syn match logtalkBuiltIn "\<current_category\ze(" 94 95syn match logtalkBuiltIn "\<create_object\ze(" 96syn match logtalkBuiltIn "\<create_protocol\ze(" 97syn match logtalkBuiltIn "\<create_category\ze(" 98 99syn match logtalkBuiltIn "\<object_property\ze(" 100syn match logtalkBuiltIn "\<protocol_property\ze(" 101syn match logtalkBuiltIn "\<category_property\ze(" 102 103syn match logtalkBuiltIn "\<abolish_object\ze(" 104syn match logtalkBuiltIn "\<abolish_protocol\ze(" 105syn match logtalkBuiltIn "\<abolish_category\ze(" 106 107syn match logtalkBuiltIn "\<extends_object\ze(" 108syn match logtalkBuiltIn "\<extends_protocol\ze(" 109syn match logtalkBuiltIn "\<implements_protocol\ze(" 110syn match logtalkBuiltIn "\<instantiates_class\ze(" 111syn match logtalkBuiltIn "\<specializes_class\ze(" 112syn match logtalkBuiltIn "\<imports_category\ze(" 113 114syn match logtalkBuiltIn "\<abolish_events\ze(" 115syn match logtalkBuiltIn "\<current_event\ze(" 116syn match logtalkBuiltIn "\<define_events\ze(" 117 118syn match logtalkBuiltIn "\<current_logtalk_flag\ze(" 119syn match logtalkBuiltIn "\<set_logtalk_flag\ze(" 120 121syn match logtalkBuiltIn "\<logtalk_compile\ze(" 122syn match logtalkBuiltIn "\<logtalk_load\ze(" 123 124syn match logtalkBuiltIn "\<forall\ze(" 125syn match logtalkBuiltIn "\<retractall\ze(" 126 127 128" Logtalk built-in methods 129 130syn match logtalkBuiltInMethod "\<parameter\ze(" 131syn match logtalkBuiltInMethod "\<self\ze(" 132syn match logtalkBuiltInMethod "\<sender\ze(" 133syn match logtalkBuiltInMethod "\<this\ze(" 134 135syn match logtalkBuiltInMethod "\<current_predicate\ze(" 136syn match logtalkBuiltInMethod "\<predicate_property\ze(" 137 138syn match logtalkBuiltInMethod "\<abolish\ze(" 139syn match logtalkBuiltInMethod "\<asserta\ze(" 140syn match logtalkBuiltInMethod "\<assertz\ze(" 141syn match logtalkBuiltInMethod "\<clause\ze(" 142syn match logtalkBuiltInMethod "\<retract\ze(" 143syn match logtalkBuiltInMethod "\<retractall\ze(" 144 145syn match logtalkBuiltInMethod "\<bagof\ze(" 146syn match logtalkBuiltInMethod "\<findall\ze(" 147syn match logtalkBuiltInMethod "\<forall\ze(" 148syn match logtalkBuiltInMethod "\<setof\ze(" 149 150syn match logtalkBuiltInMethod "\<before\ze(" 151syn match logtalkBuiltInMethod "\<after\ze(" 152 153syn match logtalkBuiltInMethod "\<phrase\ze(" 154 155 156" Mode operators 157 158syn match logtalkOperator "?" 159syn match logtalkOperator "@" 160 161 162" Control constructs 163 164syn match logtalkKeyword "\<true\>" 165syn match logtalkKeyword "\<fail\>" 166syn match logtalkKeyword "\<call\ze(" 167syn match logtalkOperator "!" 168syn match logtalkOperator "," 169syn match logtalkOperator ";" 170syn match logtalkOperator "-->" 171syn match logtalkOperator "->" 172syn match logtalkKeyword "\<catch\ze(" 173syn match logtalkKeyword "\<throw\ze(" 174 175 176" Term unification 177 178syn match logtalkOperator "=" 179syn match logtalkKeyword "\<unify_with_occurs_check\ze(" 180syn match logtalkOperator "\\=" 181 182 183" Term testing 184 185syn match logtalkKeyword "\<var\ze(" 186syn match logtalkKeyword "\<atom\ze(" 187syn match logtalkKeyword "\<integer\ze(" 188syn match logtalkKeyword "\<float\ze(" 189syn match logtalkKeyword "\<atomic\ze(" 190syn match logtalkKeyword "\<compound\ze(" 191syn match logtalkKeyword "\<nonvar\ze(" 192syn match logtalkKeyword "\<number\ze(" 193 194 195" Term comparison 196 197syn match logtalkOperator "@=<" 198syn match logtalkOperator "==" 199syn match logtalkOperator "\\==" 200syn match logtalkOperator "@<" 201syn match logtalkOperator "@>" 202syn match logtalkOperator "@>=" 203 204 205" Term creation and decomposition 206 207syn match logtalkKeyword "\<functor\ze(" 208syn match logtalkKeyword "\<arg\ze(" 209syn match logtalkOperator "=\.\." 210syn match logtalkKeyword "\<copy_term\ze(" 211 212 213" Arithemtic evaluation 214 215syn keyword logtalkOperator is 216 217 218" Arithemtic comparison 219 220syn match logtalkOperator "=:=" 221syn match logtalkOperator "=\\=" 222syn match logtalkOperator "<" 223syn match logtalkOperator "=<" 224syn match logtalkOperator ">" 225syn match logtalkOperator ">=" 226 227 228" Stream selection and control 229 230syn match logtalkKeyword "\<current_input\ze(" 231syn match logtalkKeyword "\<current_output\ze(" 232syn match logtalkKeyword "\<set_input\ze(" 233syn match logtalkKeyword "\<set_output\ze(" 234syn match logtalkKeyword "\<open\ze(" 235syn match logtalkKeyword "\<close\ze(" 236syn match logtalkKeyword "\<flush_output\ze(" 237syn match logtalkKeyword "\<flush_output\>" 238syn match logtalkKeyword "\<stream_property\ze(" 239syn match logtalkKeyword "\<at_end_of_stream\ze(" 240syn match logtalkKeyword "\<at_end_of_stream\>" 241syn match logtalkKeyword "\<set_stream_position\ze(" 242 243 244" Character input/output 245 246syn match logtalkKeyword "\<get_char\ze(" 247syn match logtalkKeyword "\<get_code\ze(" 248syn match logtalkKeyword "\<peek_char\ze(" 249syn match logtalkKeyword "\<peek_code\ze(" 250syn match logtalkKeyword "\<put_char\ze(" 251syn match logtalkKeyword "\<put_code\ze(" 252syn match logtalkKeyword "\<nl\ze(" 253syn match logtalkKeyword "\<nl\>" 254 255 256" Byte input/output 257 258syn match logtalkKeyword "\<get_byte\ze(" 259syn match logtalkKeyword "\<peek_byte\ze(" 260syn match logtalkKeyword "\<put_byte\ze(" 261 262 263" Term input/output 264 265syn match logtalkKeyword "\<read_term\ze(" 266syn match logtalkKeyword "\<read\ze(" 267syn match logtalkKeyword "\<write_term\ze(" 268syn match logtalkKeyword "\<write\ze(" 269syn match logtalkKeyword "\<writeq\ze(" 270syn match logtalkKeyword "\<write_canonical\ze(" 271syn match logtalkKeyword "\<op\ze(" 272syn match logtalkKeyword "\<current_op\ze(" 273syn match logtalkKeyword "\<char_conversion\ze(" 274syn match logtalkKeyword "\<current_char_conversion\ze(" 275 276 277" Logic and control 278 279syn match logtalkOperator "\\+" 280syn match logtalkKeyword "\<once\ze(" 281syn match logtalkKeyword "\<repeat\>" 282 283 284" Atomic term processing 285 286syn match logtalkKeyword "\<atom_length\ze(" 287syn match logtalkKeyword "\<atom_concat\ze(" 288syn match logtalkKeyword "\<sub_atom\ze(" 289syn match logtalkKeyword "\<atom_chars\ze(" 290syn match logtalkKeyword "\<atom_codes\ze(" 291syn match logtalkKeyword "\<char_code\ze(" 292syn match logtalkKeyword "\<number_chars\ze(" 293syn match logtalkKeyword "\<number_codes\ze(" 294 295 296" Implementation defined hooks functions 297 298syn match logtalkKeyword "\<set_prolog_flag\ze(" 299syn match logtalkKeyword "\<current_prolog_flag\ze(" 300syn match logtalkKeyword "\<halt\ze(" 301syn match logtalkKeyword "\<halt\>" 302 303 304" Evaluable functors 305 306syn match logtalkOperator "+" 307syn match logtalkOperator "-" 308syn match logtalkOperator "\*" 309syn match logtalkOperator "//" 310syn match logtalkOperator "/" 311syn match logtalkKeyword "\<rem(?=[(])" 312syn match logtalkKeyword "\<rem\>" 313syn match logtalkKeyword "\<mod\ze(" 314syn match logtalkKeyword "\<mod\>" 315syn match logtalkKeyword "\<abs\ze(" 316syn match logtalkKeyword "\<sign\ze(" 317syn match logtalkKeyword "\<float_integer_part\ze(" 318syn match logtalkKeyword "\<float_fractional_part\ze(" 319syn match logtalkKeyword "\<float\ze(" 320syn match logtalkKeyword "\<floor\ze(" 321syn match logtalkKeyword "\<truncate\ze(" 322syn match logtalkKeyword "\<round\ze(" 323syn match logtalkKeyword "\<ceiling\ze(" 324 325 326" Other arithemtic functors 327 328syn match logtalkOperator "\*\*" 329syn match logtalkKeyword "\<sin\ze(" 330syn match logtalkKeyword "\<cos\ze(" 331syn match logtalkKeyword "\<atan\ze(" 332syn match logtalkKeyword "\<exp\ze(" 333syn match logtalkKeyword "\<log\ze(" 334syn match logtalkKeyword "\<sqrt\ze(" 335 336 337" Bitwise functors 338 339syn match logtalkOperator ">>" 340syn match logtalkOperator "<<" 341syn match logtalkOperator "/\\" 342syn match logtalkOperator "\\/" 343syn match logtalkOperator "\\" 344 345 346" Logtalk end-of-clause 347 348syn match logtalkOperator "\." 349 350 351" Logtalk list operator 352 353syn match logtalkOperator "|" 354 355 356" Logtalk comments 357 358syn region logtalkBlockComment start="/\*" end="\*/" 359syn match logtalkLineComment "%.*" 360 361 362" Logtalk numbers 363 364syn match logtalkNumber "\<[0-9]\+\>" 365syn match logtalkNumber "\<[0-9]\+\.[0-9]\+\>" 366syn match logtalkNumber "\<[0-9]\+\.[0-9]\+[eE][-+][0-9]+\>" 367syn match logtalkNumber "\<0'[0-9a-zA-Z]\>" 368syn match logtalkNumber "\<0b[0-1]\+\>" 369syn match logtalkNumber "\<0o[0-7]\+\>" 370syn match logtalkNumber "\<0x[0-9a-fA-F]\+\>" 371 372 373syn sync ccomment maxlines=50 374 375 376" Define the default highlighting. 377" For version 5.7 and earlier: only when not done already 378" For version 5.8 and later: only when an item doesn't have highlighting yet 379 380if version >= 508 || !exists("did_logtalk_syn_inits") 381 if version < 508 382 let did_logtalk_syn_inits = 1 383 command -nargs=+ HiLink hi link <args> 384 else 385 command -nargs=+ HiLink hi def link <args> 386 endif 387 388 HiLink logtalkBlockComment Comment 389 HiLink logtalkLineComment Comment 390 391 HiLink logtalkOpenEntityDir Normal 392 HiLink logtalkOpenEntityDirTag PreProc 393 394 HiLink logtalkEntity Normal 395 396 HiLink logtalkEntityRel Normal 397 HiLink logtalkEntityRelTag PreProc 398 399 HiLink logtalkCloseEntityDir PreProc 400 401 HiLink logtalkDir Normal 402 HiLink logtalkDirTag PreProc 403 404 HiLink logtalkAtom String 405 HiLink logtalkString String 406 407 HiLink logtalkNumber Number 408 409 HiLink logtalkKeyword Keyword 410 411 HiLink logtalkBuiltIn Keyword 412 HiLink logtalkBuiltInMethod Keyword 413 414 HiLink logtalkOperator Operator 415 416 HiLink logtalkExtCall Normal 417 HiLink logtalkExtCallTag Operator 418 419 HiLink logtalkVariable Identifier 420 421 delcommand HiLink 422 423endif 424 425 426let b:current_syntax = "logtalk" 427 428setlocal ts=4 429