3ac73c8881
git-svn-id: https://yap.svn.sf.net/svnroot/yap/trunk@1713 b08c6af1-5177-4d33-ba66-4b1c6b8b522a
398 lines
13 KiB
VimL
398 lines
13 KiB
VimL
" Vim syntax file
|
|
"
|
|
" Language: Logtalk
|
|
" Maintainer: Paulo Moura <pmoura@logtalk.org>
|
|
" Last Change: September 17, 2006
|
|
|
|
|
|
" Quit when a syntax file was already loaded:
|
|
|
|
if version < 600
|
|
syntax clear
|
|
elseif exists("b:current_syntax")
|
|
finish
|
|
endif
|
|
|
|
|
|
" Logtalk is case sensitive:
|
|
|
|
syn case match
|
|
|
|
|
|
" Logtalk variables
|
|
|
|
syn match logtalkVariable "\<\(\u\|_\)\(\w\)*\>"
|
|
|
|
|
|
" Logtalk clause functor
|
|
|
|
syn match logtalkOperator ":-"
|
|
|
|
|
|
" Logtalk quoted atoms and strings
|
|
|
|
syn region logtalkString start=+"+ skip=+\\"+ end=+"+
|
|
syn region logtalkAtom start=+'+ skip=+\\'+ end=+'+
|
|
|
|
|
|
" Logtalk message sending operators
|
|
|
|
syn match logtalkOperator "::"
|
|
syn match logtalkOperator "\^\^"
|
|
|
|
|
|
" Logtalk external call
|
|
|
|
syn region logtalkExtCall matchgroup=logtalkExtCallTag start="{" matchgroup=logtalkExtCallTag end="}" contains=ALL
|
|
|
|
|
|
" Logtalk opening entity directives
|
|
|
|
syn region logtalkOpenEntityDir matchgroup=logtalkOpenEntityDirTag start=":- object(" matchgroup=logtalkOpenEntityDirTag end=")\." contains=logtalkEntity,logtalkVariable,logtalkNumber,logtalkOperator,logtalkEntityRel
|
|
syn region logtalkOpenEntityDir matchgroup=logtalkOpenEntityDirTag start=":- protocol(" matchgroup=logtalkOpenEntityDirTag end=")\." contains=logtalkEntity,logtalkVariable,logtalkNumber,logtalkOperator,logtalkEntityRel
|
|
syn region logtalkOpenEntityDir matchgroup=logtalkOpenEntityDirTag start=":- category(" matchgroup=logtalkOpenEntityDirTag end=")\." contains=logtalkEntity,logtalkVariable,logtalkNumber,logtalkOperator,logtalkEntityRel
|
|
|
|
|
|
" Logtalk closing entity directives
|
|
|
|
syn match logtalkCloseEntityDir ":- end_object\."
|
|
syn match logtalkCloseEntityDir ":- end_protocol\."
|
|
syn match logtalkCloseEntityDir ":- end_category\."
|
|
|
|
|
|
" Logtalk entity relations
|
|
|
|
syn region logtalkEntityRel matchgroup=logtalkEntityRelTag start="instantiates(" matchgroup=logtalkEntityRelTag end=")" contains=logtalkEntity,logtalkVariable,logtalkNumber,logtalkOperator contained
|
|
syn region logtalkEntityRel matchgroup=logtalkEntityRelTag start="specializes(" matchgroup=logtalkEntityRelTag end=")" contains=logtalkEntity,logtalkVariable,logtalkNumber,logtalkOperator contained
|
|
syn region logtalkEntityRel matchgroup=logtalkEntityRelTag start="extends(" matchgroup=logtalkEntityRelTag end=")" contains=logtalkEntity,logtalkVariable,logtalkNumber,logtalkOperator contained
|
|
syn region logtalkEntityRel matchgroup=logtalkEntityRelTag start="imports(" matchgroup=logtalkEntityRelTag end=")" contains=logtalkEntity,logtalkVariable,logtalkNumber,logtalkOperator contained
|
|
syn region logtalkEntityRel matchgroup=logtalkEntityRelTag start="implements(" matchgroup=logtalkEntityRelTag end=")" contains=logtalkEntity,logtalkVariable,logtalkNumber,logtalkOperator contained
|
|
|
|
|
|
" Logtalk directives
|
|
|
|
syn region logtalkDir matchgroup=logtalkDirTag start=":- alias(" matchgroup=logtalkDirTag end=")\." contains=ALL
|
|
syn region logtalkDir matchgroup=logtalkDirTag start=":- atomic(" matchgroup=logtalkDirTag end=")\." contains=ALL
|
|
syn region logtalkDir matchgroup=logtalkDirTag start=":- encoding(" matchgroup=logtalkDirTag end=")\." contains=ALL
|
|
syn region logtalkDir matchgroup=logtalkDirTag start=":- initialization(" matchgroup=logtalkDirTag end=")\." contains=ALL
|
|
syn region logtalkDir matchgroup=logtalkDirTag start=":- info(" matchgroup=logtalkDirTag end=")\." contains=ALL
|
|
syn region logtalkDir matchgroup=logtalkDirTag start=":- mode(" matchgroup=logtalkDirTag end=")\." contains=logtalkOperator, logtalkAtom
|
|
syn region logtalkDir matchgroup=logtalkDirTag start=":- dynamic(" matchgroup=logtalkDirTag end=")\." contains=ALL
|
|
syn match logtalkDirTag ":- dynamic\."
|
|
syn region logtalkDir matchgroup=logtalkDirTag start=":- discontiguous(" matchgroup=logtalkDirTag end=")\." contains=ALL
|
|
syn region logtalkDir matchgroup=logtalkDirTag start=":- multifile(" matchgroup=logtalkDirTag end=")\." contains=ALL
|
|
syn region logtalkDir matchgroup=logtalkDirTag start=":- public(" matchgroup=logtalkDirTag end=")\." contains=ALL
|
|
syn region logtalkDir matchgroup=logtalkDirTag start=":- protected(" matchgroup=logtalkDirTag end=")\." contains=ALL
|
|
syn region logtalkDir matchgroup=logtalkDirTag start=":- private(" matchgroup=logtalkDirTag end=")\." contains=ALL
|
|
syn region logtalkDir matchgroup=logtalkDirTag start=":- meta_predicate(" matchgroup=logtalkDirTag end=")\." contains=ALL
|
|
syn region logtalkDir matchgroup=logtalkDirTag start=":- op(" matchgroup=logtalkDirTag end=")\." contains=ALL
|
|
syn region logtalkDir matchgroup=logtalkDirTag start=":- calls(" matchgroup=logtalkDirTag end=")\." contains=ALL
|
|
syn region logtalkDir matchgroup=logtalkDirTag start=":- uses(" matchgroup=logtalkDirTag end=")\." contains=ALL
|
|
syn match logtalkDirTag ":- threaded\."
|
|
|
|
|
|
" Module directives
|
|
|
|
syn region logtalkDir matchgroup=logtalkDirTag start=":- module(" matchgroup=logtalkDirTag end=")\." contains=ALL
|
|
syn region logtalkDir matchgroup=logtalkDirTag start=":- export(" matchgroup=logtalkDirTag end=")\." contains=ALL
|
|
syn region logtalkDir matchgroup=logtalkDirTag start=":- use_module(" matchgroup=logtalkDirTag end=")\." contains=ALL
|
|
|
|
|
|
" Logtalk built-in predicates
|
|
|
|
syn match logtalkBuiltIn "\<\(abolish\|c\(reate\|urrent\)\)_\(object\|protocol\|category\)\ze("
|
|
|
|
syn match logtalkBuiltIn "\<\(object\|protocol\|category\)_property\ze("
|
|
|
|
syn match logtalkBuiltIn "\<extends_\(object\|protocol\)\ze("
|
|
syn match logtalkBuiltIn "\<imp\(orts_category\|lements_protocol\)\ze("
|
|
syn match logtalkBuiltIn "\<\(instantiates\|specializes\)_class\ze("
|
|
|
|
syn match logtalkBuiltIn "\<\(abolish\|define\)_events\ze("
|
|
syn match logtalkBuiltIn "\<current_event\ze("
|
|
|
|
syn match logtalkBuiltIn "\<\(current\|set\)_logtalk_flag\ze("
|
|
|
|
syn match logtalkBuiltIn "\<logtalk_\(compile\|l\(ibrary_path\|oad\)\)\ze("
|
|
|
|
syn match logtalkBuiltIn "\<\(for\|retract\)all\ze("
|
|
|
|
|
|
" Logtalk built-in methods
|
|
|
|
syn match logtalkBuiltInMethod "\<parameter\ze("
|
|
syn match logtalkBuiltInMethod "\<se\(lf\|nder\)\ze("
|
|
syn match logtalkBuiltInMethod "\<this\ze("
|
|
|
|
syn match logtalkBuiltInMethod "\<current_predicate\ze("
|
|
syn match logtalkBuiltInMethod "\<predicate_property\ze("
|
|
|
|
syn match logtalkBuiltInMethod "\<a\(bolish\|ssert\(a\|z\)\)\ze("
|
|
syn match logtalkBuiltInMethod "\<clause\ze("
|
|
syn match logtalkBuiltInMethod "\<retract\(all\)\?\ze("
|
|
|
|
syn match logtalkBuiltInMethod "\<\(bag\|set\)of\ze("
|
|
syn match logtalkBuiltInMethod "\<f\(ind\|or\)all\ze("
|
|
|
|
syn match logtalkBuiltInMethod "\<before\ze("
|
|
syn match logtalkBuiltInMethod "\<after\ze("
|
|
|
|
syn match logtalkBuiltInMethod "\<expand_term\ze("
|
|
syn match logtalkBuiltInMethod "\<term_expansion\ze("
|
|
syn match logtalkBuiltInMethod "\<phrase\ze("
|
|
|
|
syn match logtalkBuiltInMethod "\<threaded_\(call\|exit\)\ze("
|
|
|
|
|
|
" Mode operators
|
|
|
|
syn match logtalkOperator "?"
|
|
syn match logtalkOperator "@"
|
|
|
|
|
|
" Control constructs
|
|
|
|
syn match logtalkKeyword "\<true\>"
|
|
syn match logtalkKeyword "\<fail\>"
|
|
syn match logtalkKeyword "\<ca\(ll\|tch\)\ze("
|
|
syn match logtalkOperator "!"
|
|
" syn match logtalkOperator ","
|
|
syn match logtalkOperator ";"
|
|
syn match logtalkOperator "-->"
|
|
syn match logtalkOperator "->"
|
|
syn match logtalkKeyword "\<throw\ze("
|
|
|
|
|
|
" Term unification
|
|
|
|
syn match logtalkOperator "="
|
|
syn match logtalkKeyword "\<unify_with_occurs_check\ze("
|
|
syn match logtalkOperator "\\="
|
|
|
|
|
|
" Term testing
|
|
|
|
syn match logtalkKeyword "\<var\ze("
|
|
syn match logtalkKeyword "\<atom\(ic\)\?\ze("
|
|
syn match logtalkKeyword "\<integer\ze("
|
|
syn match logtalkKeyword "\<float\ze("
|
|
syn match logtalkKeyword "\<compound\ze("
|
|
syn match logtalkKeyword "\<n\(onvar\|umber\)\ze("
|
|
|
|
|
|
" Term comparison
|
|
|
|
syn match logtalkOperator "@=<"
|
|
syn match logtalkOperator "=="
|
|
syn match logtalkOperator "\\=="
|
|
syn match logtalkOperator "@<"
|
|
syn match logtalkOperator "@>"
|
|
syn match logtalkOperator "@>="
|
|
|
|
|
|
" Term creation and decomposition
|
|
|
|
syn match logtalkKeyword "\<functor\ze("
|
|
syn match logtalkKeyword "\<arg\ze("
|
|
syn match logtalkOperator "=\.\."
|
|
syn match logtalkKeyword "\<copy_term\ze("
|
|
|
|
|
|
" Arithemtic evaluation
|
|
|
|
syn match logtalkOperator "\<is\>"
|
|
|
|
|
|
" Arithemtic comparison
|
|
|
|
syn match logtalkOperator "=:="
|
|
syn match logtalkOperator "=\\="
|
|
syn match logtalkOperator "<"
|
|
syn match logtalkOperator "=<"
|
|
syn match logtalkOperator ">"
|
|
syn match logtalkOperator ">="
|
|
|
|
|
|
" Stream selection and control
|
|
|
|
syn match logtalkKeyword "\<\(current\|set\)_\(in\|out\)put\ze("
|
|
syn match logtalkKeyword "\<open\ze("
|
|
syn match logtalkKeyword "\<close\ze("
|
|
syn match logtalkKeyword "\<flush_output\ze("
|
|
syn match logtalkKeyword "\<flush_output\>"
|
|
syn match logtalkKeyword "\<stream_property\ze("
|
|
syn match logtalkKeyword "\<at_end_of_stream\ze("
|
|
syn match logtalkKeyword "\<at_end_of_stream\>"
|
|
syn match logtalkKeyword "\<set_stream_position\ze("
|
|
|
|
|
|
" Character and byte input/output
|
|
|
|
syn match logtalkKeyword "\<\(get\|p\(eek\|ut\)\)_\(c\(har\|ode\)\|byte\)\ze("
|
|
syn match logtalkKeyword "\<nl\ze("
|
|
syn match logtalkKeyword "\<nl\>"
|
|
|
|
|
|
" Term input/output
|
|
|
|
syn match logtalkKeyword "\<read\(_term\)\?\ze("
|
|
syn match logtalkKeyword "\<write\(q\|_\(canonical\|term\)\)\?\ze("
|
|
syn match logtalkKeyword "\<\(current_\)\?op\ze("
|
|
syn match logtalkKeyword "\<\(current\)\?char_conversion\ze("
|
|
|
|
|
|
" Logic and control
|
|
|
|
syn match logtalkOperator "\\+"
|
|
syn match logtalkKeyword "\<once\ze("
|
|
syn match logtalkKeyword "\<repeat\>"
|
|
|
|
|
|
" Atomic term processing
|
|
|
|
syn match logtalkKeyword "\<atom_\(length\|c\(hars\|o\(ncat\|des\)\)\)\ze("
|
|
syn match logtalkKeyword "\<sub_atom\ze("
|
|
syn match logtalkKeyword "\<char_code\ze("
|
|
syn match logtalkKeyword "\<number_\(c\(hars\|odes\)\)\ze("
|
|
|
|
|
|
" Implementation defined hooks functions
|
|
|
|
syn match logtalkKeyword "\<\(current\|set\)_prolog_flag\ze("
|
|
syn match logtalkKeyword "\<halt\ze("
|
|
syn match logtalkKeyword "\<halt\>"
|
|
|
|
|
|
" Evaluable functors
|
|
|
|
syn match logtalkOperator "+"
|
|
syn match logtalkOperator "-"
|
|
syn match logtalkOperator "\*"
|
|
syn match logtalkOperator "//"
|
|
syn match logtalkOperator "/"
|
|
syn match logtalkKeyword "\<r\(ound\|em\)\ze("
|
|
syn match logtalkKeyword "\<rem\>"
|
|
syn match logtalkKeyword "\<mod\ze("
|
|
syn match logtalkKeyword "\<mod\>"
|
|
syn match logtalkKeyword "\<abs\ze("
|
|
syn match logtalkKeyword "\<sign\ze("
|
|
syn match logtalkKeyword "\<flo\(or\|at\(_\(integer\|fractional\)_part\)\?\)\ze("
|
|
syn match logtalkKeyword "\<truncate\ze("
|
|
syn match logtalkKeyword "\<ceiling\ze("
|
|
|
|
|
|
" Other arithemtic functors
|
|
|
|
syn match logtalkOperator "\*\*"
|
|
syn match logtalkKeyword "\<s\(in\|qrt\)\ze("
|
|
syn match logtalkKeyword "\<cos\ze("
|
|
syn match logtalkKeyword "\<atan\ze("
|
|
syn match logtalkKeyword "\<exp\ze("
|
|
syn match logtalkKeyword "\<log\ze("
|
|
|
|
|
|
" Bitwise functors
|
|
|
|
syn match logtalkOperator ">>"
|
|
syn match logtalkOperator "<<"
|
|
syn match logtalkOperator "/\\"
|
|
syn match logtalkOperator "\\/"
|
|
syn match logtalkOperator "\\"
|
|
|
|
|
|
" Logtalk list operator
|
|
|
|
syn match logtalkOperator "|"
|
|
|
|
|
|
" Logtalk numbers
|
|
|
|
syn match logtalkNumber "\<\d\+\>"
|
|
syn match logtalkNumber "\<\d\+\.\d\+\>"
|
|
syn match logtalkNumber "\<\d\+[eE][-+]\=\d\+\>"
|
|
syn match logtalkNumber "\<\d\+\.\d\+[eE][-+]\=\d\+\>"
|
|
syn match logtalkNumber "\<0'.\>"
|
|
syn match logtalkNumber "\<0b[0-1]\+\>"
|
|
syn match logtalkNumber "\<0o\o\+\>"
|
|
syn match logtalkNumber "\<0x\x\+\>"
|
|
|
|
|
|
" Logtalk end-of-clause
|
|
|
|
syn match logtalkOperator "\."
|
|
|
|
|
|
" Logtalk comments
|
|
|
|
syn region logtalkBlockComment start="/\*" end="\*/" fold
|
|
syn match logtalkLineComment "%.*"
|
|
|
|
|
|
" Logtalk entity folding
|
|
|
|
syn region logtalkEntity transparent fold keepend start=":- object(" end=":- end_object\." contains=ALL
|
|
syn region logtalkEntity transparent fold keepend start=":- protocol(" end=":- end_protocol\." contains=ALL
|
|
syn region logtalkEntity transparent fold keepend start=":- category(" end=":- end_category\." contains=ALL
|
|
|
|
|
|
syn sync ccomment logtalkBlockComment maxlines=50
|
|
|
|
|
|
" Define the default highlighting.
|
|
" For version 5.7 and earlier: only when not done already
|
|
" For version 5.8 and later: only when an item doesn't have highlighting yet
|
|
|
|
if version >= 508 || !exists("did_logtalk_syn_inits")
|
|
if version < 508
|
|
let did_logtalk_syn_inits = 1
|
|
command -nargs=+ HiLink hi link <args>
|
|
else
|
|
command -nargs=+ HiLink hi def link <args>
|
|
endif
|
|
|
|
HiLink logtalkBlockComment Comment
|
|
HiLink logtalkLineComment Comment
|
|
|
|
HiLink logtalkOpenEntityDir Normal
|
|
HiLink logtalkOpenEntityDirTag PreProc
|
|
|
|
HiLink logtalkEntity Normal
|
|
|
|
HiLink logtalkEntityRel Normal
|
|
HiLink logtalkEntityRelTag PreProc
|
|
|
|
HiLink logtalkCloseEntityDir PreProc
|
|
|
|
HiLink logtalkDir Normal
|
|
HiLink logtalkDirTag PreProc
|
|
|
|
HiLink logtalkAtom String
|
|
HiLink logtalkString String
|
|
|
|
HiLink logtalkNumber Number
|
|
|
|
HiLink logtalkKeyword Keyword
|
|
|
|
HiLink logtalkBuiltIn Keyword
|
|
HiLink logtalkBuiltInMethod Keyword
|
|
|
|
HiLink logtalkOperator Operator
|
|
|
|
HiLink logtalkExtCall Normal
|
|
HiLink logtalkExtCallTag Operator
|
|
|
|
HiLink logtalkVariable Identifier
|
|
|
|
delcommand HiLink
|
|
|
|
endif
|
|
|
|
|
|
let b:current_syntax = "logtalk"
|
|
|
|
setlocal ts=4
|
|
setlocal sw=4
|
|
setlocal fdm=syntax
|
|
setlocal fdc=2
|
|
setlocal autoindent
|