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