ox

The Ox programming language, compiler and tools (WIP)
Log | Files | Refs | README | LICENSE

ox.vim (1221B)



" Clear any existing syntax
if exists("b:current_syntax")
  finish
endif

" Keywords
syntax keyword oxKeyword    if else while fn fx for continue break struct typedef print print_ return

" Types
syntax keyword oxType       int float str bool i8 i16 i32 i64 i128 u8 u16 u32 u64 u128 f32 f64 f128 uint char chr void cstr voidp

" Constants
syntax keyword oxConstant   true false null

" Comments: // EOL
syntax match   oxComment    "//.*$"

" Strings: "..."
syntax region  oxString     start=/"/ end=/"/ skip=/\\"/

" Char def
syntax match   oxChar       /'[^\']'/
syntax match   oxCharError  /'[^\']\{2,}'/

" Numbers
syntax match   oxNumber     "\v(\d+(\.\d+)?)"

" Operators
syntax match   oxOperator   /[?;!~#*\/+\-:=<>]/ containedin=ALL

" Types override
syntax match   oxType2      /\<[i|u|f]\(8\|16\|32\|64\)\>/

" Highlight groups
hi def link    oxOperator   Operator
hi def link    oxKeyword    Keyword
hi def link    oxType       Type
hi def link    oxType2      Type
hi def link    oxConstant   Constant
hi def link    oxComment    Comment
hi def link    oxString     String
hi def link    oxChar       Character
hi def link    oxCharError  Error
hi def link    oxNumber     Number

let b:current_syntax = "ox"