blob: 347e17f5acecb7b1fc68dc2bb09a7e4d192626f2 [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 Moolenaar06fe74a2019-08-31 16:20:32 +02004" Last Change: 2019 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
Bram Moolenaar74675a62017-07-15 13:53:23 +020064syn 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 "[\+\-\*\/%&|=!<>:\?]\|\."
Bram Moolenaar06fe74a2019-08-31 16:20:32 +020091syn match murphiDelimiter "\(:=\@!\|[;,]\)"
Bram Moolenaar74675a62017-07-15 13:53:23 +020092syn 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.
Bram Moolenaarc572da52017-08-27 16:52:01 +0200107hi 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
Bram Moolenaar74675a62017-07-15 13:53:23 +0200125
126let b:current_syntax = "murphi"