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