summaryrefslogtreecommitdiffstats
path: root/runtime/syntax/datascript.vim
diff options
context:
space:
mode:
Diffstat (limited to 'runtime/syntax/datascript.vim')
-rw-r--r--runtime/syntax/datascript.vim102
1 files changed, 102 insertions, 0 deletions
diff --git a/runtime/syntax/datascript.vim b/runtime/syntax/datascript.vim
new file mode 100644
index 0000000..7b686a1
--- /dev/null
+++ b/runtime/syntax/datascript.vim
@@ -0,0 +1,102 @@
+" 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