blob: b2faa8c119d50082f4d1da824f205f15041342f0 [file] [log] [blame]
Bram Moolenaar74675a62017-07-15 13:53:23 +02001" Vim syntax file
2" Language: Murphi model checking language
3" Maintainer: Matthew Fernandez <matthew.fernandez@gmail.com>
Bram Moolenaarc572da52017-08-27 16:52:01 +02004" Last Change: 2017 Aug 27
Bram Moolenaar74675a62017-07-15 13:53:23 +02005" Version: 2
6" Remark: Originally authored by Diego Ongaro <ongaro@cs.stanford.edu>
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 process
65syn keyword murphiKeyword program
66syn keyword murphiKeyword put
67syn keyword murphiStructure record
68syn keyword murphiKeyword return
69syn keyword murphiLabel rule
70syn keyword murphiLabel ruleset
71syn keyword murphiType scalarset
72syn keyword murphiLabel startstate
73syn keyword murphiConditional switch
74syn keyword murphiConditional then
75syn keyword murphiRepeat to
76syn keyword murphiKeyword traceuntil
77syn keyword murphiBoolean true
78syn keyword murphiLabel type
79syn keyword murphiKeyword undefine
80syn keyword murphiStructure union
81syn keyword murphiLabel var
82syn keyword murphiRepeat while
83
84syn keyword murphiTodo contained todo xxx fixme
85syntax case match
86
87" Integers.
88syn match murphiNumber "\<\d\+\>"
89
90" Operators and special characters.
91syn match murphiOperator "[\+\-\*\/%&|=!<>:\?]\|\."
92syn match murphiDelimiter "\(:[^=]\|[;,]\)"
93syn match murphiSpecial "[()\[\]]"
94
95" Double equal sign is a common error: use one equal sign for equality testing.
96syn match murphiError "==[^>]"he=e-1
97" Double && and || are errors.
98syn match murphiError "&&\|||"
99
100" Strings. This is defined so late so that it overrides previous matches.
101syn region murphiString start=+"+ end=+"+
102
103" Comments. This is defined so late so that it overrides previous matches.
104syn region murphiComment start="--" end="$" contains=murphiTodo
105syn region murphiComment start="/\*" end="\*/" contains=murphiTodo
106
107" Link the rules to some groups.
Bram Moolenaarc572da52017-08-27 16:52:01 +0200108hi def link murphiComment Comment
109hi def link murphiString String
110hi def link murphiNumber Number
111hi def link murphiBoolean Boolean
112hi def link murphiIdentifier Identifier
113hi def link murphiFunction Function
114hi def link murphiStatement Statement
115hi def link murphiConditional Conditional
116hi def link murphiRepeat Repeat
117hi def link murphiLabel Label
118hi def link murphiOperator Operator
119hi def link murphiKeyword Keyword
120hi def link murphiType Type
121hi def link murphiStructure Structure
122hi def link murphiSpecial Special
123hi def link murphiDelimiter Delimiter
124hi def link murphiError Error
125hi def link murphiTodo Todo
Bram Moolenaar74675a62017-07-15 13:53:23 +0200126
127let b:current_syntax = "murphi"