summaryrefslogtreecommitdiffstats
path: root/runtime/syntax
diff options
context:
space:
mode:
authorDominique Pellé <dominique.pelle@gmail.com>2023-09-01 23:10:26 +0200
committerGitHub <noreply@github.com>2023-09-01 23:10:26 +0200
commitacb91d3905cfef5eff8edfb76e62a6b6bab1e91e (patch)
tree4b93b1f8370ef5b1fbaced52f99a3296d23b13d5 /runtime/syntax
parent738ce77aa9e4922dd724d1470960285cbb9ab3c2 (diff)
runtime(zserio): add zserio syntax (#13005)
Signed-off-by: Christian Brabandt <cb@256bit.org>
Diffstat (limited to 'runtime/syntax')
-rw-r--r--runtime/syntax/zserio.vim112
1 files changed, 112 insertions, 0 deletions
diff --git a/runtime/syntax/zserio.vim b/runtime/syntax/zserio.vim
new file mode 100644
index 0000000000..5459915c01
--- /dev/null
+++ b/runtime/syntax/zserio.vim
@@ -0,0 +1,112 @@
+" Vim syntax file
+" Language: Zserio
+" Maintainer: Dominique Pellé <dominique.pelle@gmail.com>
+" Last Change: 2023 Jun 18
+"
+" Zserio is a serialization schema language for modeling binary
+" data types, bitstreams or file formats. Based on the zserio
+" language it is possible to automatically generate encoders and
+" decoders for a given schema in various target languages
+" (e.g. Java, C++, Python).
+"
+" Zserio is an evolution of the DataScript language.
+"
+" For more information, see:
+" - http://zserio.org/
+" - https://github.com/ndsev/zserio
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+let s:keepcpo= &cpo
+set cpo&vim
+
+syn case match
+
+syn keyword zserioPackage import package zserio_compatibility_version
+syn keyword zserioType bit bool string
+syn keyword zserioType int int8 int16 int32 int64
+syn keyword zserioType uint8 uint16 uint32 uint64
+syn keyword zserioType float16 float32 float64
+syn keyword zserioType varint varint16 varint32 varint64
+syn keyword zserioType varuint varsize varuint16 varuint32 varuint64
+syn keyword zserioAlign align
+syn keyword zserioLabel case default
+syn keyword zserioConditional if condition
+syn keyword zserioBoolean true false
+syn keyword zserioCompound struct union choice on enum bitmask subtype
+syn keyword zserioKeyword function return
+syn keyword zserioOperator lengthof valueof instanceof numbits isset
+syn keyword zserioRpc service pubsub topic publish subscribe
+syn keyword zserioRule rule_group rule
+syn keyword zserioStorageClass const implicit packed instantiate
+syn keyword zserioTodo contained TODO FIXME XXX
+syn keyword zserioSql sql sql_table sql_database sql_virtual sql_without_rowid
+syn keyword zserioSql explicit using
+
+" zserioCommentGroup allows adding matches for special things in comments.
+syn cluster zserioCommentGroup contains=zserioTodo
+
+syn match zserioOffset display "^\s*[a-zA-Z_:\.][a-zA-Z0-9_:\.]*\s*:"
+
+syn match zserioNumber display "\<\d\+\>"
+syn match zserioNumberHex display "\<0[xX]\x\+\>"
+syn match zserioNumberBin display "\<[01]\+[bB]\>" contains=zserioBinaryB
+syn match zserioBinaryB display contained "[bB]\>"
+syn match zserioOctal display "\<0\o\+\>" contains=zserioOctalZero
+syn match zserioOctalZero display contained "\<0"
+
+syn match zserioOctalError display "\<0\o*[89]\d*\>"
+
+syn match zserioCommentError display "\*/"
+syn match zserioCommentStartError display "/\*"me=e-1 contained
+
+syn region zserioCommentL
+ \ start="//" skip="\\$" end="$" keepend
+ \ contains=@zserioCommentGroup,@Spell
+syn region zserioComment
+ \ matchgroup=zserioCommentStart start="/\*" end="\*/"
+ \ contains=@zserioCommentGroup,zserioCommentStartError,@Spell extend
+
+syn region zserioString
+ \ start=+L\="+ skip=+\\\\\|\\"+ end=+"+ contains=@Spell
+
+syn sync ccomment zserioComment
+
+" Define the default highlighting.
+hi def link zserioType Type
+hi def link zserioEndian StorageClass
+hi def link zserioStorageClass StorageClass
+hi def link zserioAlign Label
+hi def link zserioLabel Label
+hi def link zserioOffset Label
+hi def link zserioSql PreProc
+hi def link zserioCompound Structure
+hi def link zserioConditional Conditional
+hi def link zserioBoolean Boolean
+hi def link zserioKeyword Statement
+hi def link zserioRpc Keyword
+hi def link zserioRule Keyword
+hi def link zserioString String
+hi def link zserioNumber Number
+hi def link zserioNumberBin Number
+hi def link zserioBinaryB Special
+hi def link zserioOctal Number
+hi def link zserioOctalZero Special
+hi def link zserioOctalError Error
+hi def link zserioNumberHex Number
+hi def link zserioTodo Todo
+hi def link zserioOperator Operator
+hi def link zserioPackage Include
+hi def link zserioCommentError Error
+hi def link zserioCommentStartError Error
+hi def link zserioCommentStart zserioComment
+hi def link zserioCommentL zserioComment
+hi def link zserioComment Comment
+
+let b:current_syntax = "zserio"
+
+let &cpo = s:keepcpo
+unlet s:keepcpo