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