1" Vim syntax file
2" Language:	Datascript
3" Maintainer:	Dominique Pelle <[email protected]>
4" Last Change:	2010-08-01
5"
6" DataScript is a formal language for modelling binary datatypes,
7" bitstreams or file formats. For more information, see:
8" http://datascript.berlios.de/DataScriptLanguageOverview.html
9
10if version < 600
11  syntax clear
12elseif exists("b:current_syntax")
13  finish
14endif
15
16syn keyword dsPackage      import package
17syn keyword dsType         bit string
18syn keyword dsType         int8 int16 int32 int64
19syn keyword dsType         uint8 uint16 uint32 uint64
20syn keyword dsType         leint16 leint32 leint64
21syn keyword dsType         leuint16 leuint32 leuint64
22syn keyword dsEndian       little big
23syn keyword dsAlign        align
24syn keyword dsLabel        case default
25syn keyword dsConditional  if condition
26syn keyword dsCompound     union choice on enum bitmask subtype
27syn keyword dsKeyword      function return
28syn keyword dsOperator     sizeof bitsizeof lengthof is sum forall in
29syn keyword dsStorageClass const
30syn keyword dsTodo         contained TODO FIXME XXX
31syn keyword dsSql          sql sql_table sql_database sql_pragma
32syn keyword dsSql          sql_integer sql_metadata sql_key
33
34" dsCommentGroup allows adding matches for special things in comments.
35syn cluster dsCommentGroup  contains=dsTodo
36
37syn match   dsOffset        display "^\s*[a-zA-Z_:\.][a-zA-Z0-9_:\.]*\s*:"
38
39syn match   dsNumber        display "\<\d\+\>"
40syn match   dsNumberHex     display "\<0[xX]\x\+\>"
41syn match   dsNumberBin     display "\<[01]\+[bB]\>" contains=dsBinaryB
42syn match   dsBinaryB       display contained "[bB]\>"
43syn match   dsOctal         display "\<0\o\+\>" contains=dsOctalZero
44syn match   dsOctalZero     display contained "\<0"
45
46syn match   dsOctalError    display "\<0\o*[89]\d*\>"
47
48syn match   dsCommentError      display "\*/"
49syn match   dsCommentStartError display "/\*"me=e-1 contained
50
51syn region   dsCommentL
52  \ start="//" skip="\\$" end="$" keepend
53  \ contains=@dsCommentGroup,@Spell
54syn region   dsComment
55  \ matchgroup=dsCommentStart start="/\*" end="\*/"
56  \ contains=@dsCommentGroup,dsCommentStartError,@Spell extend
57
58syn region  dsString
59  \ start=+L\="+ skip=+\\\\\|\\"+ end=+"+ contains=@Spell
60
61" Define the default highlighting.
62hi def link dsType              Type
63hi def link dsEndian            StorageClass
64hi def link dsStorageClass      StorageClass
65hi def link dsAlign             Label
66hi def link dsLabel             Label
67hi def link dsOffset            Label
68hi def link dsSql               PreProc
69hi def link dsCompound          Structure
70hi def link dsConditional       Conditional
71hi def link dsKeyword           Statement
72hi def link dsString            String
73hi def link dsNumber            Number
74hi def link dsNumberBin         Number
75hi def link dsBinaryB           Special
76hi def link dsOctal             Number
77hi def link dsOctalZero         Special
78hi def link dsOctalError        Error
79hi def link dsNumberHex         Number
80hi def link dsTodo              Todo
81hi def link dsOperator          Operator
82hi def link dsPackage           Include
83hi def link dsCommentError      Error
84hi def link dsCommentStartError Error
85hi def link dsCommentStart      dsComment
86hi def link dsCommentL          dsComment
87hi def link cCommentL           dsComment
88hi def link dsComment           Comment
89
90let b:current_syntax = "datascript"
91