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