A simple scripting language in C++
Ferenc Szontágh
2025-04-19 55abb4f6f81fc370e349385b38dffb05fa9d5dcb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
" Vim syntax file for VoidScript
" Save as ~/.vim/syntax/voidscript.vim
 
if exists("b:current_syntax")
  finish
endif
 
 
" --- Keywords ---
syntax keyword voidscriptKeyword const function return for if else new sizeof this
 
" --- Access Modifiers ---
syntax keyword voidscriptAccess public private protected
 
" --- Types ---
syntax keyword voidscriptType int string float double boolean object class void
 
" --- Control values ---
syntax keyword voidscriptBoolean true false null
 
" --- Variable Names ---
syntax match voidscriptVariable /\$\k\+/
 
" --- Class definitions ---
syntax match voidscriptClass /\<class\s\+\k\+\>/
 
" --- Object property access (this->something or object->key) ---
syntax match voidscriptObjectAccess /\<this\>\|->/
 
" --- Function calls (e.g. func(...)) ---
syntax match voidscriptFunction /\<\k\+\s*(/ containedin=ALL
 
" --- Numbers ---
syntax match voidscriptNumber /\<\d\+\(\.\d\+\)\?\>/
 
" --- Strings with variable highlighting ---
syntax region voidscriptString start=/"/ skip=/\\"/ end=/"/ contains=voidscriptVariable
 
" --- Object literal keys (key: value) ---
syntax match voidscriptObjectKey /\<\k\+\>\s*:/
 
" Comments
syntax match voidscriptComment "#.*"
syntax match voidscriptComment "\/\/.*" contains=voidscriptTodo
highlight link voidscriptComment Comment
 
" Optional: highlight TODO, FIXME, NOTE in comments
syntax match voidscriptTodo "\(TODO\|FIXME\|NOTE\):" contained
highlight link voidscriptTodo Todo
 
 
" --- Operators ---
syntax match voidscriptOperator /==\|!=\|<=\|>=\|[-+*/%<>=!&|]/
 
" --- Braces & Delimiters ---
syntax match voidscriptBraces /[{}[\]()]/
syntax match voidscriptArrow /->/
 
" --- Highlight groups ---
highlight link voidscriptKeyword Keyword
highlight link voidscriptAccess StorageClass
highlight link voidscriptType Type
highlight link voidscriptBoolean Boolean
highlight link voidscriptVariable Identifier
highlight link voidscriptFunction Function
highlight link voidscriptNumber Number
highlight link voidscriptString String
highlight link voidscriptComment Comment
highlight link voidscriptTodo Todo
highlight link voidscriptOperator Operator
highlight link voidscriptBraces Delimiter
highlight link voidscriptArrow Operator
highlight link voidscriptClass Structure
highlight link voidscriptObjectAccess Operator
highlight link voidscriptObjectKey Identifier
 
let b:current_syntax = "voidscript"