N2T/vim/jack.vim

79 lines
2.4 KiB
VimL

if exists("b:current_syntax")
finish
endif
syntax match jackError "\v^\s*[A-Za-z_]+"
syntax match jackIdentifier "\v<Math>"
syntax match jackIdentifier "\v<String>"
syntax match jackIdentifier "\v<Array>"
syntax match jackIdentifier "\v<Output>"
syntax match jackIdentifier "\v<Screen>"
syntax match jackIdentifier "\v<Keyboard>"
syntax match jackIdentifier "\v<Memory>"
syntax match jackIdentifier "\v<Sys>"
syntax match jackKeyword "\v\s*<class>"
syntax match jackFunction "\v\s*<constructor>"
syntax match jackFunction "\v\s*<method>"
syntax match jackFunction "\v\s*<function>"
syntax match jackType "\v<int>"
syntax match jackType "\v<boolean>"
syntax match jackType "\v<char>"
syntax match jackType "\v<void>"
syntax match jackKeyword "\v\s*<var>"
syntax match jackKeyword "\v\s*<static>"
syntax match jackKeyword "\v\s*<field>"
syntax match jackConditional "\v\s*<let>"
syntax match jackConditional "\v\s*<do>"
syntax match jackConditional "\v\s*<if>"
syntax match jackConditional "\v\s*<else>"
syntax match jackConditional "\v\s*<while>"
syntax match jackConditional "\v\s*<return>"
syntax match jackConstant "\v<true>"
syntax match jackConstant "\v<false>"
syntax match jackConstant "\v<null>"
syntax match jackKeyword "\v<this>"
syntax match jackOperator "\v\+"
syntax match jackOperator "\v-"
syntax match jackOperator "\v\*"
syntax match jackOperator "\v/"
syntax match jackOperator "\v\&"
syntax match jackOperator "\v\|"
syntax match jackOperator "\v\~"
syntax match jackOperator "\v\<"
syntax match jackOperator "\v\>"
syntax match jackNumber "\v<([1-9][0-9]*|[0-9])>"
syntax region jackString start=/\v"/ skip=/\v\\./ end=/\v"/
syntax match jackTodo "\vTODO:?" contained
syntax match jackTodo "\vFIXME:?" contained
syntax match jackTodo "\vXXX:?" contained
syntax match jackComment "\v//.*$" contains=jackTodo
syntax region jackComment start="\v/\*\*" end="\v\*/" contains=jackTodo
syntax region jackComment start="\v/\*" end="\v\*/" contains=jackTodo
highlight link jackError Error
highlight link jackIdentifier Identifier
highlight link jackString String
highlight link jackComment Comment
highlight link jackTodo Todo
highlight link jackFunction Function
highlight link jackConditional Conditional
highlight link jackType Type
highlight link jackConstant Constant
highlight link jackOperator Operator
highlight link jackKeyword Keyword
highlight link jackString String
highlight link jackNumber Number
let b:current_syntax = "jack"