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