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