blob: 9925ba51387bd5f458d728e94c695922b176832a [file] [log] [blame]
Bram Moolenaar00a927d2010-05-14 23:24:24 +02001" Vim syntax file
2" Language: ChaiScript
3" Maintainer: Jason Turner <lefticus 'at' gmail com>
4
5" Quit when a (custom) syntax file was already loaded
6if exists("b:current_syntax")
7 finish
8end
9
10syn case match
11
12" syncing method
13syn sync fromstart
14
15" Strings
16syn region chaiscriptString start=+"+ end=+"+ skip=+\\\\\|\\"+ contains=chaiscriptSpecial,chaiscriptEval,@Spell
17
18" Escape characters
19syn match chaiscriptSpecial contained "\\[\\abfnrtv\'\"]\|\\\d\{,3}"
20
21" String evals
22syn region chaiscriptEval contained start="${" end="}"
23
24" integer number
25syn match chaiscriptNumber "\<\d\+\>"
26
27" floating point number, with dot, optional exponent
28syn match chaiscriptFloat "\<\d\+\.\d*\%(e[-+]\=\d\+\)\=\>"
29
30" floating point number, starting with a dot, optional exponent
31syn match chaiscriptFloat "\.\d\+\%(e[-+]\=\d\+\)\=\>"
32
33" floating point number, without dot, with exponent
34syn match chaiscriptFloat "\<\d\+e[-+]\=\d\+\>"
35
36" Hex strings
37syn match chaiscriptNumber "\<0x\x\+\>"
38
39" Binary strings
40syn match chaiscriptNumber "\<0b[01]\+\>"
41
42" Various language features
43syn keyword chaiscriptCond if else
44syn keyword chaiscriptRepeat while for do
45syn keyword chaiscriptStatement break continue return
46syn keyword chaiscriptExceptions try catch throw
47
48"Keyword
49syn keyword chaiscriptKeyword def true false attr
50
51"Built in types
52syn keyword chaiscriptType fun var
53
54"Built in funcs, keep it simple
55syn keyword chaiscriptFunc eval throw
56
57"Let's treat all backtick operator function lookups as built in too
58syn region chaiscriptFunc matchgroup=chaiscriptFunc start="`" end="`"
59
60" Account for the "[1..10]" syntax, treating it as an operator
61" Intentionally leaving out all of the normal, well known operators
62syn match chaiscriptOperator "\.\."
63
Viktor Szépe3fc7a7e2023-08-23 21:20:00 +020064" Guard separator as an operator
Bram Moolenaar00a927d2010-05-14 23:24:24 +020065syn match chaiscriptOperator ":"
66
67" Comments
68syn match chaiscriptComment "//.*$" contains=@Spell
69syn region chaiscriptComment matchgroup=chaiscriptComment start="/\*" end="\*/" contains=@Spell
70
71
72
73hi def link chaiscriptExceptions Exception
74hi def link chaiscriptKeyword Keyword
75hi def link chaiscriptStatement Statement
76hi def link chaiscriptRepeat Repeat
77hi def link chaiscriptString String
78hi def link chaiscriptNumber Number
79hi def link chaiscriptFloat Float
80hi def link chaiscriptOperator Operator
81hi def link chaiscriptConstant Constant
82hi def link chaiscriptCond Conditional
83hi def link chaiscriptFunction Function
84hi def link chaiscriptComment Comment
85hi def link chaiscriptTodo Todo
86hi def link chaiscriptError Error
87hi def link chaiscriptSpecial SpecialChar
88hi def link chaiscriptFunc Identifier
89hi def link chaiscriptType Type
90hi def link chaiscriptEval Special
91
92let b:current_syntax = "chaiscript"
93
94" vim: nowrap sw=2 sts=2 ts=8 noet