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