" Vim syntax file
" Language: Slige
" Maintainer: SFJ
" Latest Revision: 1 January 1984

if exists("b:current_syntax")
  finish
endif

syn keyword Keyword break return let fn loop if else struct import or and not while for in
syn keyword Special null
syn keyword Type int string bool
syn keyword Boolean true false

syn match Operator '+'
syn match Operator '-'
syn match Operator '\*'
syn match Operator '/'
syn match Operator '='
syn match Operator '+='
syn match Operator '-='
syn match Operator '=='
syn match Operator '!='
syn match Operator '<'
syn match Operator '>'
syn match Operator '<='
syn match Operator '>='
syn match Operator '\.'
syn match Operator ':'
syn match Operator '->'
syn match Operator '::'
syn match Operator '::<'

syn match Number '0'
syn match Number '[1-9][0-9]*'
syn match Number '0[0-7]\+'
syn match Number '0x[0-9a-fA-F]\+'
syn match Number '0b[01]\+'

syn match Character "'[^\\]'"
syn match Character "'\\.'"

syn region String   start=+"+  skip=+\\"+  end=+"+

syn keyword Todo contained TODO FIXME XXX NOTE
syn match Comment "//.*$" contains=Todo

syn region Comment start=+/\*+ end=+\*/+ contains=Todo

syn match Identifier '[a-z_]\w*'
syn match Type '[A-Z]\w*'

syn match Function '[a-zA-Z_]\w*\ze('

syn region sligeBlock start="{" end="}" transparent fold

let b:current_syntax = "slige"
