summaryrefslogtreecommitdiff
path: root/runtime/syntax
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2010-08-01 21:48:21 +0200
committerBram Moolenaar <Bram@vim.org>2010-08-01 21:48:21 +0200
commit90df5507c03e83dfcadb2334a8b1c7229c6caa78 (patch)
treed6ef3185e4c5297168849349bfc038b8bce888d7 /runtime/syntax
parent3a0ae77fe644f69b7d3c432d0ceb2d15c43dbdfb (diff)
downloadvim-90df5507c03e83dfcadb2334a8b1c7229c6caa78.zip
Add Datascript syntax file. (Dominique Pelle)
Diffstat (limited to 'runtime/syntax')
-rw-r--r--runtime/syntax/datascript.vim90
1 files changed, 90 insertions, 0 deletions
diff --git a/runtime/syntax/datascript.vim b/runtime/syntax/datascript.vim
new file mode 100644
index 000000000..b51f41877
--- /dev/null
+++ b/runtime/syntax/datascript.vim
@@ -0,0 +1,90 @@
+" Vim syntax file
+" Language: Datascript
+" Maintainer: Dominique Pelle <dominique.pelle@gmail.com>
+" Last Change: 2010-08-01
+"
+" DataScript is a formal language for modelling binary datatypes,
+" bitstreams or file formats. For more information, see:
+" http://datascript.berlios.de/DataScriptLanguageOverview.html
+
+if version < 600
+ syntax clear
+elseif exists("b:current_syntax")
+ finish
+endif
+
+syn keyword dsPackage import package
+syn keyword dsType bit string
+syn keyword dsType int8 int16 int32 int64
+syn keyword dsType uint8 uint16 uint32 uint64
+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 dsCompound union choice on enum bitmask subtype
+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
+syn keyword dsSql sql_integer sql_metadata sql_key
+
+" 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
+
+" 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 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"