neovim/runtime/syntax/datascript.vim

103 lines
3.7 KiB
VimL

" Vim syntax file
" Language: DataScript
" Maintainer: Dominique Pelle <dominique.pelle@gmail.com>
" Last Change: 2015 Jul 30
"
" DataScript is a formal language for modelling binary datatypes,
" bitstreams or file formats. For more information, see:
"
" http://dstools.sourceforge.net/DataScriptLanguageOverview.html
" quit when a syntax file was already loaded
if exists("b:current_syntax")
finish
endif
let s:keepcpo= &cpo
set cpo&vim
syn keyword dsPackage import package
syn keyword dsType bit bool string
syn keyword dsType int int8 int16 int32 int64
syn keyword dsType uint8 uint16 uint32 uint64
syn keyword dsType varint16 varint32 varint64
syn keyword dsType varuint16 varuint32 varuint64
syn keyword dsType leint16 leint32 leint64
syn keyword dsType leuint16 leuint32 leuint64
syn keyword dsEndian little big
syn keyword dsAlign align
syn keyword dsLabel case default
syn keyword dsConditional if condition
syn keyword dsBoolean true false
syn keyword dsCompound union choice on enum bitmask subtype explicit
syn keyword dsKeyword function return
syn keyword dsOperator sizeof bitsizeof lengthof is sum forall in
syn keyword dsStorageClass const
syn keyword dsTodo contained TODO FIXME XXX
syn keyword dsSql sql sql_table sql_database sql_pragma sql_index
syn keyword dsSql sql_integer sql_metadata sql_key sql_virtual
syn keyword dsSql using reference_key foreign_key to
" dsCommentGroup allows adding matches for special things in comments.
syn cluster dsCommentGroup contains=dsTodo
syn match dsOffset display "^\s*[a-zA-Z_:\.][a-zA-Z0-9_:\.]*\s*:"
syn match dsNumber display "\<\d\+\>"
syn match dsNumberHex display "\<0[xX]\x\+\>"
syn match dsNumberBin display "\<[01]\+[bB]\>" contains=dsBinaryB
syn match dsBinaryB display contained "[bB]\>"
syn match dsOctal display "\<0\o\+\>" contains=dsOctalZero
syn match dsOctalZero display contained "\<0"
syn match dsOctalError display "\<0\o*[89]\d*\>"
syn match dsCommentError display "\*/"
syn match dsCommentStartError display "/\*"me=e-1 contained
syn region dsCommentL
\ start="//" skip="\\$" end="$" keepend
\ contains=@dsCommentGroup,@Spell
syn region dsComment
\ matchgroup=dsCommentStart start="/\*" end="\*/"
\ contains=@dsCommentGroup,dsCommentStartError,@Spell extend
syn region dsString
\ start=+L\="+ skip=+\\\\\|\\"+ end=+"+ contains=@Spell
syn sync ccomment dsComment
" Define the default highlighting.
hi def link dsType Type
hi def link dsEndian StorageClass
hi def link dsStorageClass StorageClass
hi def link dsAlign Label
hi def link dsLabel Label
hi def link dsOffset Label
hi def link dsSql PreProc
hi def link dsCompound Structure
hi def link dsConditional Conditional
hi def link dsBoolean Boolean
hi def link dsKeyword Statement
hi def link dsString String
hi def link dsNumber Number
hi def link dsNumberBin Number
hi def link dsBinaryB Special
hi def link dsOctal Number
hi def link dsOctalZero Special
hi def link dsOctalError Error
hi def link dsNumberHex Number
hi def link dsTodo Todo
hi def link dsOperator Operator
hi def link dsPackage Include
hi def link dsCommentError Error
hi def link dsCommentStartError Error
hi def link dsCommentStart dsComment
hi def link dsCommentL dsComment
hi def link cCommentL dsComment
hi def link dsComment Comment
let b:current_syntax = "datascript"
let &cpo = s:keepcpo
unlet s:keepcpo