summaryrefslogblamecommitdiffstats
path: root/syntax/rego.vim
blob: 5fa20d1a0ec81179954e85ec6992f96eab75d751 (plain) (tree)




























































                                                                                                          
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'rego') == -1

" Vim syntax file
" Language: Rego (http://github.com/open-policy-agent/opa)
" Maintainers: Torin Sandall <torinsandall@gmail.com>

if version < 600
    syntax clear
elseif exists("b:current_syntax")
    finish
endif

syn case match

" language keywords
syn keyword regoKeyword package import as not with default else some

" comments
syn match regoComment "#.*$" contains=regoTodo,@Spell
syn keyword regoTodo FIXME XXX TODO contained

" data types
syn keyword regoNull null
syn keyword regoBoolean true false
syn match regoNumber "\<\(0[0-7]*\|0[xx]\x\+\|\d\+\)[ll]\=\>"
syn match regoNumber "\(\<\d\+\.\d*\|\.\d\+\)\([ee][-+]\=\d\+\)\=[ffdd]\="
syn match regoNumber "\<\d\+[ee][-+]\=\d\+[ffdd]\=\>"
syn match regoNumber "\<\d\+\([ee][-+]\=\d\+\)\=[ffdd]\>"
syn region regoString start="\"" skip="\\\"" end="\"" contains=regoStringEscape
syn match regoStringEscape "\\u[0-9a-fA-F]\{4}" contained
syn match regoStringEscape "\\[nrfvb\\\"]" contained

" rules
syn match regoRuleName "^\(\w\+\)"
syn region regoBody start="{" end="}" transparent

" operators
syn match regoEquality "="
syn match regoInequality "[<>!]"
syn match regoArith "[+-/*&|]"
syn match regoBuiltin "\w\+(" nextgroup=regoBuiltinArgs contains=regoBuiltinArgs
syn region regoBuiltinArgs start="(" end=")" contained contains=regoNull,regoBoolean,regoNumber,regoString

" highlighting
hi link regoKeyword Keyword
hi link regoNull Function
hi link regoBoolean Boolean
hi link regoNumber Number
hi link regoString String

hi link regoRuleName Function

hi link regoEquality Keyword
hi link regoInequality Keyword
hi link regoArith Keyword
hi link regoBuiltin Type

hi link regoComment Comment
hi link regoTodo Todo

endif