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