190df5507SBram Moolenaar" Vim syntax file
2fc39ecf8SBram Moolenaar" Language:	DataScript
390df5507SBram Moolenaar" Maintainer:	Dominique Pelle <[email protected]>
4fc39ecf8SBram Moolenaar" Last Change:	2015 Jul 30
590df5507SBram Moolenaar"
690df5507SBram Moolenaar" DataScript is a formal language for modelling binary datatypes,
790df5507SBram Moolenaar" bitstreams or file formats. For more information, see:
8fc39ecf8SBram Moolenaar"
9fc39ecf8SBram Moolenaar" http://dstools.sourceforge.net/DataScriptLanguageOverview.html
1090df5507SBram Moolenaar
11*89bcfda6SBram Moolenaar" quit when a syntax file was already loaded
12*89bcfda6SBram Moolenaarif exists("b:current_syntax")
1390df5507SBram Moolenaar  finish
1490df5507SBram Moolenaarendif
159a7224b5SBram Moolenaarlet s:keepcpo= &cpo
169a7224b5SBram Moolenaarset cpo&vim
1790df5507SBram Moolenaar
1890df5507SBram Moolenaarsyn keyword dsPackage      import package
1976f3b1adSBram Moolenaarsyn keyword dsType         bit bool string
2076f3b1adSBram Moolenaarsyn keyword dsType         int int8 int16 int32 int64
2190df5507SBram Moolenaarsyn keyword dsType         uint8 uint16 uint32 uint64
22fc39ecf8SBram Moolenaarsyn keyword dsType         varint16 varint32 varint64
23fc39ecf8SBram Moolenaarsyn keyword dsType         varuint16 varuint32 varuint64
2490df5507SBram Moolenaarsyn keyword dsType         leint16 leint32 leint64
2590df5507SBram Moolenaarsyn keyword dsType         leuint16 leuint32 leuint64
2690df5507SBram Moolenaarsyn keyword dsEndian       little big
2790df5507SBram Moolenaarsyn keyword dsAlign        align
2890df5507SBram Moolenaarsyn keyword dsLabel        case default
2990df5507SBram Moolenaarsyn keyword dsConditional  if condition
3076f3b1adSBram Moolenaarsyn keyword dsBoolean      true false
3176f3b1adSBram Moolenaarsyn keyword dsCompound     union choice on enum bitmask subtype explicit
3290df5507SBram Moolenaarsyn keyword dsKeyword      function return
3390df5507SBram Moolenaarsyn keyword dsOperator     sizeof bitsizeof lengthof is sum forall in
3490df5507SBram Moolenaarsyn keyword dsStorageClass const
3590df5507SBram Moolenaarsyn keyword dsTodo         contained TODO FIXME XXX
3676f3b1adSBram Moolenaarsyn keyword dsSql          sql sql_table sql_database sql_pragma sql_index
37fc39ecf8SBram Moolenaarsyn keyword dsSql          sql_integer sql_metadata sql_key sql_virtual
38fc39ecf8SBram Moolenaarsyn keyword dsSql          using reference_key foreign_key to
3990df5507SBram Moolenaar
4090df5507SBram Moolenaar" dsCommentGroup allows adding matches for special things in comments.
4190df5507SBram Moolenaarsyn cluster dsCommentGroup  contains=dsTodo
4290df5507SBram Moolenaar
4390df5507SBram Moolenaarsyn match   dsOffset        display "^\s*[a-zA-Z_:\.][a-zA-Z0-9_:\.]*\s*:"
4490df5507SBram Moolenaar
4590df5507SBram Moolenaarsyn match   dsNumber        display "\<\d\+\>"
4690df5507SBram Moolenaarsyn match   dsNumberHex     display "\<0[xX]\x\+\>"
4790df5507SBram Moolenaarsyn match   dsNumberBin     display "\<[01]\+[bB]\>" contains=dsBinaryB
4890df5507SBram Moolenaarsyn match   dsBinaryB       display contained "[bB]\>"
4990df5507SBram Moolenaarsyn match   dsOctal         display "\<0\o\+\>" contains=dsOctalZero
5090df5507SBram Moolenaarsyn match   dsOctalZero     display contained "\<0"
5190df5507SBram Moolenaar
5290df5507SBram Moolenaarsyn match   dsOctalError    display "\<0\o*[89]\d*\>"
5390df5507SBram Moolenaar
5490df5507SBram Moolenaarsyn match   dsCommentError      display "\*/"
5590df5507SBram Moolenaarsyn match   dsCommentStartError display "/\*"me=e-1 contained
5690df5507SBram Moolenaar
5790df5507SBram Moolenaarsyn region   dsCommentL
5890df5507SBram Moolenaar  \ start="//" skip="\\$" end="$" keepend
5990df5507SBram Moolenaar  \ contains=@dsCommentGroup,@Spell
6090df5507SBram Moolenaarsyn region   dsComment
6190df5507SBram Moolenaar  \ matchgroup=dsCommentStart start="/\*" end="\*/"
6290df5507SBram Moolenaar  \ contains=@dsCommentGroup,dsCommentStartError,@Spell extend
6390df5507SBram Moolenaar
6490df5507SBram Moolenaarsyn region  dsString
6590df5507SBram Moolenaar  \ start=+L\="+ skip=+\\\\\|\\"+ end=+"+ contains=@Spell
6690df5507SBram Moolenaar
67fc39ecf8SBram Moolenaarsyn sync ccomment dsComment
68fc39ecf8SBram Moolenaar
6990df5507SBram Moolenaar" Define the default highlighting.
7090df5507SBram Moolenaarhi def link dsType              Type
7190df5507SBram Moolenaarhi def link dsEndian            StorageClass
7290df5507SBram Moolenaarhi def link dsStorageClass      StorageClass
7390df5507SBram Moolenaarhi def link dsAlign             Label
7490df5507SBram Moolenaarhi def link dsLabel             Label
7590df5507SBram Moolenaarhi def link dsOffset            Label
7690df5507SBram Moolenaarhi def link dsSql               PreProc
7790df5507SBram Moolenaarhi def link dsCompound          Structure
7890df5507SBram Moolenaarhi def link dsConditional       Conditional
7976f3b1adSBram Moolenaarhi def link dsBoolean           Boolean
8090df5507SBram Moolenaarhi def link dsKeyword           Statement
8190df5507SBram Moolenaarhi def link dsString            String
8290df5507SBram Moolenaarhi def link dsNumber            Number
8390df5507SBram Moolenaarhi def link dsNumberBin         Number
8490df5507SBram Moolenaarhi def link dsBinaryB           Special
8590df5507SBram Moolenaarhi def link dsOctal             Number
8690df5507SBram Moolenaarhi def link dsOctalZero         Special
8790df5507SBram Moolenaarhi def link dsOctalError        Error
8890df5507SBram Moolenaarhi def link dsNumberHex         Number
8990df5507SBram Moolenaarhi def link dsTodo              Todo
9090df5507SBram Moolenaarhi def link dsOperator          Operator
9190df5507SBram Moolenaarhi def link dsPackage           Include
9290df5507SBram Moolenaarhi def link dsCommentError      Error
9390df5507SBram Moolenaarhi def link dsCommentStartError Error
9490df5507SBram Moolenaarhi def link dsCommentStart      dsComment
9590df5507SBram Moolenaarhi def link dsCommentL          dsComment
9690df5507SBram Moolenaarhi def link cCommentL           dsComment
9790df5507SBram Moolenaarhi def link dsComment           Comment
9890df5507SBram Moolenaar
9990df5507SBram Moolenaarlet b:current_syntax = "datascript"
1009a7224b5SBram Moolenaar
1019a7224b5SBram Moolenaarlet &cpo = s:keepcpo
1029a7224b5SBram Moolenaarunlet s:keepcpo
103