ox

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

ox.vim (1221B)


      1 " Clear any existing syntax
      2 if exists("b:current_syntax")
      3   finish
      4 endif
      5 
      6 " Keywords
      7 syntax keyword oxKeyword    if else while fn fx for continue break struct typedef print print_ return
      8 
      9 " Types
     10 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
     11 
     12 " Constants
     13 syntax keyword oxConstant   true false null
     14 
     15 " Comments: // EOL
     16 syntax match   oxComment    "//.*$"
     17 
     18 " Strings: "..."
     19 syntax region  oxString     start=/"/ end=/"/ skip=/\\"/
     20 
     21 " Char def
     22 syntax match   oxChar       /'[^\']'/
     23 syntax match   oxCharError  /'[^\']\{2,}'/
     24 
     25 " Numbers
     26 syntax match   oxNumber     "\v(\d+(\.\d+)?)"
     27 
     28 " Operators
     29 syntax match   oxOperator   /[?;!~#*\/+\-:=<>]/ containedin=ALL
     30 
     31 " Types override
     32 syntax match   oxType2      /\<[i|u|f]\(8\|16\|32\|64\)\>/
     33 
     34 " Highlight groups
     35 hi def link    oxOperator   Operator
     36 hi def link    oxKeyword    Keyword
     37 hi def link    oxType       Type
     38 hi def link    oxType2      Type
     39 hi def link    oxConstant   Constant
     40 hi def link    oxComment    Comment
     41 hi def link    oxString     String
     42 hi def link    oxChar       Character
     43 hi def link    oxCharError  Error
     44 hi def link    oxNumber     Number
     45 
     46 let b:current_syntax = "ox"