vim-polyglot/syntax/lprolog.vim
2017-09-27 20:43:42 +02:00

129 lines
4.0 KiB
VimL

if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1
" Vim syntax file
" Language: LambdaProlog (Teyjus)
" Filenames: *.mod *.sig
" Maintainer: Markus Mottl <markus.mottl@gmail.com>
" URL: http://www.ocaml.info/vim/syntax/lprolog.vim
" Last Change: 2006 Feb 05
" 2001 Apr 26 - Upgraded for new Vim version
" 2000 Jun 5 - Initial release
" quit when a syntax file was already loaded
if exists("b:current_syntax")
finish
endif
" Lambda Prolog is case sensitive.
syn case match
syn match lprologBrackErr "\]"
syn match lprologParenErr ")"
syn cluster lprologContained contains=lprologTodo,lprologModuleName,lprologTypeNames,lprologTypeName
" Enclosing delimiters
syn region lprologEncl transparent matchgroup=lprologKeyword start="(" matchgroup=lprologKeyword end=")" contains=ALLBUT,@lprologContained,lprologParenErr
syn region lprologEncl transparent matchgroup=lprologKeyword start="\[" matchgroup=lprologKeyword end="\]" contains=ALLBUT,@lprologContained,lprologBrackErr
" General identifiers
syn match lprologIdentifier "\<\(\w\|[-+*/\\^<>=`'~?@#$&!_]\)*\>"
syn match lprologVariable "\<\(\u\|_\)\(\w\|[-+*/\\^<>=`'~?@#$&!]\)*\>"
syn match lprologOperator "/"
" Comments
syn region lprologComment start="/\*" end="\*/" contains=lprologComment,lprologTodo
syn region lprologComment start="%" end="$" contains=lprologTodo
syn keyword lprologTodo contained TODO FIXME XXX
syn match lprologInteger "\<\d\+\>"
syn match lprologReal "\<\(\d\+\)\=\.\d+\>"
syn region lprologString start=+"+ skip=+\\\\\|\\"+ end=+"+
" Clause definitions
syn region lprologClause start="^\w\+" end=":-\|\."
" Modules
syn region lprologModule matchgroup=lprologKeyword start="^\<module\>" matchgroup=lprologKeyword end="\."
" Types
syn match lprologKeyword "^\<type\>" skipwhite nextgroup=lprologTypeNames
syn region lprologTypeNames matchgroup=lprologBraceErr start="\<\w\+\>" matchgroup=lprologKeyword end="\." contained contains=lprologTypeName,lprologOperator
syn match lprologTypeName "\<\w\+\>" contained
" Keywords
syn keyword lprologKeyword end import accumulate accum_sig
syn keyword lprologKeyword local localkind closed sig
syn keyword lprologKeyword kind exportdef useonly
syn keyword lprologKeyword infixl infixr infix prefix
syn keyword lprologKeyword prefixr postfix postfixl
syn keyword lprologSpecial pi sigma is true fail halt stop not
" Operators
syn match lprologSpecial ":-"
syn match lprologSpecial "->"
syn match lprologSpecial "=>"
syn match lprologSpecial "\\"
syn match lprologSpecial "!"
syn match lprologSpecial ","
syn match lprologSpecial ";"
syn match lprologSpecial "&"
syn match lprologOperator "+"
syn match lprologOperator "-"
syn match lprologOperator "*"
syn match lprologOperator "\~"
syn match lprologOperator "\^"
syn match lprologOperator "<"
syn match lprologOperator ">"
syn match lprologOperator "=<"
syn match lprologOperator ">="
syn match lprologOperator "::"
syn match lprologOperator "="
syn match lprologOperator "\."
syn match lprologOperator ":"
syn match lprologOperator "|"
syn match lprologCommentErr "\*/"
syn sync minlines=50
syn sync maxlines=500
" Define the default highlighting.
" Only when an item doesn't have highlighting yet
hi def link lprologComment Comment
hi def link lprologTodo Todo
hi def link lprologKeyword Keyword
hi def link lprologSpecial Special
hi def link lprologOperator Operator
hi def link lprologIdentifier Normal
hi def link lprologInteger Number
hi def link lprologReal Number
hi def link lprologString String
hi def link lprologCommentErr Error
hi def link lprologBrackErr Error
hi def link lprologParenErr Error
hi def link lprologModuleName Special
hi def link lprologTypeName Identifier
hi def link lprologVariable Keyword
hi def link lprologAtom Normal
hi def link lprologClause Type
let b:current_syntax = "lprolog"
" vim: ts=8
endif