neovim/runtime/syntax/murphi.vim

128 lines
4.6 KiB
VimL
Raw Normal View History

" Vim syntax file
" Language: Murphi model checking language
" Maintainer: Matthew Fernandez <matthew.fernandez@gmail.com>
" Last Change: 2017 May 3
" Version: 2
" Remark: Originally authored by Diego Ongaro <ongaro@cs.stanford.edu>
if version < 600
syntax clear
elseif exists("b:current_syntax")
finish
endif
" Keywords are case insensitive.
" Keep these in alphabetical order.
syntax case ignore
syn keyword murphiKeyword alias
syn keyword murphiStructure array
syn keyword murphiKeyword assert
syn keyword murphiKeyword begin
syn keyword murphiType boolean
syn keyword murphiKeyword by
syn keyword murphiLabel case
syn keyword murphiKeyword clear
syn keyword murphiLabel const
syn keyword murphiRepeat do
syn keyword murphiConditional else
syn keyword murphiConditional elsif
syn keyword murphiKeyword end
syn keyword murphiKeyword endalias
syn keyword murphiRepeat endexists
syn keyword murphiRepeat endfor
syn keyword murphiRepeat endforall
syn keyword murphiKeyword endfunction
syn keyword murphiConditional endif
syn keyword murphiKeyword endprocedure
syn keyword murphiStructure endrecord
syn keyword murphiKeyword endrule
syn keyword murphiKeyword endruleset
syn keyword murphiKeyword endstartstate
syn keyword murphiConditional endswitch
syn keyword murphiRepeat endwhile
syn keyword murphiStructure enum
syn keyword murphiKeyword error
syn keyword murphiRepeat exists
syn keyword murphiBoolean false
syn keyword murphiRepeat for
syn keyword murphiRepeat forall
syn keyword murphiKeyword function
syn keyword murphiConditional if
syn keyword murphiKeyword in
syn keyword murphiKeyword interleaved
syn keyword murphiLabel invariant
syn keyword murphiFunction ismember
syn keyword murphiFunction isundefined
syn keyword murphiKeyword log
syn keyword murphiStructure of
syn keyword murphiType multiset
syn keyword murphiFunction multisetadd
syn keyword murphiFunction multisetcount
syn keyword murphiFunction multisetremove
syn keyword murphiFunction multisetremovepred
syn keyword murphiKeyword procedure
syn keyword murphiKeyword process
syn keyword murphiKeyword program
syn keyword murphiKeyword put
syn keyword murphiStructure record
syn keyword murphiKeyword return
syn keyword murphiLabel rule
syn keyword murphiLabel ruleset
syn keyword murphiType scalarset
syn keyword murphiLabel startstate
syn keyword murphiConditional switch
syn keyword murphiConditional then
syn keyword murphiRepeat to
syn keyword murphiKeyword traceuntil
syn keyword murphiBoolean true
syn keyword murphiLabel type
syn keyword murphiKeyword undefine
syn keyword murphiStructure union
syn keyword murphiLabel var
syn keyword murphiRepeat while
syn keyword murphiTodo contained todo xxx fixme
syntax case match
" Integers.
syn match murphiNumber "\<\d\+\>"
" Operators and special characters.
syn match murphiOperator "[\+\-\*\/%&|=!<>:\?]\|\."
syn match murphiDelimiter "\(:[^=]\|[;,]\)"
syn match murphiSpecial "[()\[\]]"
" Double equal sign is a common error: use one equal sign for equality testing.
syn match murphiError "==[^>]"he=e-1
" Double && and || are errors.
syn match murphiError "&&\|||"
" Strings. This is defined so late so that it overrides previous matches.
syn region murphiString start=+"+ end=+"+
" Comments. This is defined so late so that it overrides previous matches.
syn region murphiComment start="--" end="$" contains=murphiTodo
syn region murphiComment start="/\*" end="\*/" contains=murphiTodo
" Link the rules to some groups.
highlight link murphiComment Comment
highlight link murphiString String
highlight link murphiNumber Number
highlight link murphiBoolean Boolean
highlight link murphiIdentifier Identifier
highlight link murphiFunction Function
highlight link murphiStatement Statement
highlight link murphiConditional Conditional
highlight link murphiRepeat Repeat
highlight link murphiLabel Label
highlight link murphiOperator Operator
highlight link murphiKeyword Keyword
highlight link murphiType Type
highlight link murphiStructure Structure
highlight link murphiSpecial Special
highlight link murphiDelimiter Delimiter
highlight link murphiError Error
highlight link murphiTodo Todo
let b:current_syntax = "murphi"