murphi.vim (4579B)
1 " Vim syntax file 2 " Language: Murphi model checking language 3 " Maintainer: Matthew Fernandez <matthew.fernandez@gmail.com> 4 " Last Change: 2019 Aug 27 5 " Version: 2 6 " Remark: Originally authored by Diego Ongaro <ongaro@cs.stanford.edu> 7 8 if version < 600 9 syntax clear 10 elseif exists("b:current_syntax") 11 finish 12 endif 13 14 " Keywords are case insensitive. 15 " Keep these in alphabetical order. 16 syntax case ignore 17 syn keyword murphiKeyword alias 18 syn keyword murphiStructure array 19 syn keyword murphiKeyword assert 20 syn keyword murphiKeyword begin 21 syn keyword murphiType boolean 22 syn keyword murphiKeyword by 23 syn keyword murphiLabel case 24 syn keyword murphiKeyword clear 25 syn keyword murphiLabel const 26 syn keyword murphiRepeat do 27 syn keyword murphiConditional else 28 syn keyword murphiConditional elsif 29 syn keyword murphiKeyword end 30 syn keyword murphiKeyword endalias 31 syn keyword murphiRepeat endexists 32 syn keyword murphiRepeat endfor 33 syn keyword murphiRepeat endforall 34 syn keyword murphiKeyword endfunction 35 syn keyword murphiConditional endif 36 syn keyword murphiKeyword endprocedure 37 syn keyword murphiStructure endrecord 38 syn keyword murphiKeyword endrule 39 syn keyword murphiKeyword endruleset 40 syn keyword murphiKeyword endstartstate 41 syn keyword murphiConditional endswitch 42 syn keyword murphiRepeat endwhile 43 syn keyword murphiStructure enum 44 syn keyword murphiKeyword error 45 syn keyword murphiRepeat exists 46 syn keyword murphiBoolean false 47 syn keyword murphiRepeat for 48 syn keyword murphiRepeat forall 49 syn keyword murphiKeyword function 50 syn keyword murphiConditional if 51 syn keyword murphiKeyword in 52 syn keyword murphiKeyword interleaved 53 syn keyword murphiLabel invariant 54 syn keyword murphiFunction ismember 55 syn keyword murphiFunction isundefined 56 syn keyword murphiKeyword log 57 syn keyword murphiStructure of 58 syn keyword murphiType multiset 59 syn keyword murphiFunction multisetadd 60 syn keyword murphiFunction multisetcount 61 syn keyword murphiFunction multisetremove 62 syn keyword murphiFunction multisetremovepred 63 syn keyword murphiKeyword procedure 64 syn keyword murphiKeyword program 65 syn keyword murphiKeyword put 66 syn keyword murphiStructure record 67 syn keyword murphiKeyword return 68 syn keyword murphiLabel rule 69 syn keyword murphiLabel ruleset 70 syn keyword murphiType scalarset 71 syn keyword murphiLabel startstate 72 syn keyword murphiConditional switch 73 syn keyword murphiConditional then 74 syn keyword murphiRepeat to 75 syn keyword murphiKeyword traceuntil 76 syn keyword murphiBoolean true 77 syn keyword murphiLabel type 78 syn keyword murphiKeyword undefine 79 syn keyword murphiStructure union 80 syn keyword murphiLabel var 81 syn keyword murphiRepeat while 82 83 syn keyword murphiTodo contained todo xxx fixme 84 syntax case match 85 86 " Integers. 87 syn match murphiNumber "\<\d\+\>" 88 89 " Operators and special characters. 90 syn match murphiOperator "[\+\-\*\/%&|=!<>:\?]\|\." 91 syn match murphiDelimiter "\(:=\@!\|[;,]\)" 92 syn match murphiSpecial "[()\[\]]" 93 94 " Double equal sign is a common error: use one equal sign for equality testing. 95 syn match murphiError "==[^>]"he=e-1 96 " Double && and || are errors. 97 syn match murphiError "&&\|||" 98 99 " Strings. This is defined so late so that it overrides previous matches. 100 syn region murphiString start=+"+ end=+"+ 101 102 " Comments. This is defined so late so that it overrides previous matches. 103 syn region murphiComment start="--" end="$" contains=murphiTodo 104 syn region murphiComment start="/\*" end="\*/" contains=murphiTodo 105 106 " Link the rules to some groups. 107 hi def link murphiComment Comment 108 hi def link murphiString String 109 hi def link murphiNumber Number 110 hi def link murphiBoolean Boolean 111 hi def link murphiIdentifier Identifier 112 hi def link murphiFunction Function 113 hi def link murphiStatement Statement 114 hi def link murphiConditional Conditional 115 hi def link murphiRepeat Repeat 116 hi def link murphiLabel Label 117 hi def link murphiOperator Operator 118 hi def link murphiKeyword Keyword 119 hi def link murphiType Type 120 hi def link murphiStructure Structure 121 hi def link murphiSpecial Special 122 hi def link murphiDelimiter Delimiter 123 hi def link murphiError Error 124 hi def link murphiTodo Todo 125 126 let b:current_syntax = "murphi"