blob: 8001b1fe7e280fc7b91176df997dbfb7eb3a2613 [file] [log] [blame]
Bram Moolenaar071d4272004-06-13 20:20:40 +00001" Vim syntax file
2" Language: CSP (Communication Sequential Processes, using FDR input syntax)
3" Maintainer: Jan Bredereke <brederek@tzi.de>
4" Version: 0.6.0
5" Last change: Mon Mar 25, 2002
6" URL: http://www.tzi.de/~brederek/vim/
7" Copying: You may distribute and use this file freely, in the same
8" way as the vim editor itself.
9"
10" To Do: - Probably I missed some keywords or operators, please
11" fix them and notify me, the maintainer.
12" - Currently, we do lexical highlighting only. It would be
13" nice to have more actual syntax checks, including
14" highlighting of wrong syntax.
15" - The additional syntax for the RT-Tester (pseudo-comments)
16" should be optional.
17
Bram Moolenaar89bcfda2016-08-30 23:26:57 +020018" quit when a syntax file was already loaded
19if exists("b:current_syntax")
Bram Moolenaar071d4272004-06-13 20:20:40 +000020 finish
21endif
22
23" case is significant to FDR:
24syn case match
25
26" Block comments in CSP are between {- and -}
27syn region cspComment start="{-" end="-}" contains=cspTodo
28" Single-line comments start with --
29syn region cspComment start="--" end="$" contains=cspTodo,cspOldRttComment,cspSdlRttComment keepend
30
31" Numbers:
32syn match cspNumber "\<\d\+\>"
33
34" Conditionals:
35syn keyword cspConditional if then else
36
37" Operators on processes:
38" -> ? : ! ' ; /\ \ [] |~| [> & [[..<-..]] ||| [|..|] || [..<->..] ; : @ |||
39syn match cspOperator "->"
40syn match cspOperator "/\\"
41syn match cspOperator "[^/]\\"lc=1
42syn match cspOperator "\[\]"
43syn match cspOperator "|\~|"
44syn match cspOperator "\[>"
45syn match cspOperator "\[\["
46syn match cspOperator "\]\]"
47syn match cspOperator "<-"
48syn match cspOperator "|||"
49syn match cspOperator "[^|]||[^|]"lc=1,me=e-1
50syn match cspOperator "[^|{\~]|[^|}\~]"lc=1,me=e-1
51syn match cspOperator "\[|"
52syn match cspOperator "|\]"
53syn match cspOperator "\[[^>]"me=e-1
54syn match cspOperator "\]"
55syn match cspOperator "<->"
56syn match cspOperator "[?:!';@]"
57syn match cspOperator "&"
58syn match cspOperator "\."
59
60" (not on processes:)
61" syn match cspDelimiter "{|"
62" syn match cspDelimiter "|}"
63" syn match cspDelimiter "{[^-|]"me=e-1
64" syn match cspDelimiter "[^-|]}"lc=1
65
66" Keywords:
67syn keyword cspKeyword length null head tail concat elem
68syn keyword cspKeyword union inter diff Union Inter member card
69syn keyword cspKeyword empty set Set Seq
70syn keyword cspKeyword true false and or not within let
71syn keyword cspKeyword nametype datatype diamond normal
72syn keyword cspKeyword sbisim tau_loop_factor model_compress
73syn keyword cspKeyword explicate
74syn match cspKeyword "transparent"
75syn keyword cspKeyword external chase prioritize
76syn keyword cspKeyword channel Events
77syn keyword cspKeyword extensions productions
78syn keyword cspKeyword Bool Int
79
80" Reserved keywords:
81syn keyword cspReserved attribute embed module subtype
82
83" Include:
84syn region cspInclude matchgroup=cspIncludeKeyword start="^include" end="$" keepend contains=cspIncludeArg
85syn region cspIncludeArg start='\s\+\"' end= '\"\s*' contained
86
87" Assertions:
88syn keyword cspAssert assert deterministic divergence free deadlock
89syn keyword cspAssert livelock
90syn match cspAssert "\[T="
91syn match cspAssert "\[F="
92syn match cspAssert "\[FD="
93syn match cspAssert "\[FD\]"
94syn match cspAssert "\[F\]"
95
96" Types and Sets
97" (first char a capital, later at least one lower case, no trailing underscore):
98syn match cspType "\<_*[A-Z][A-Z_0-9]*[a-z]\(\|[A-Za-z_0-9]*[A-Za-z0-9]\)\>"
99
100" Processes (all upper case, no trailing underscore):
101" (For identifiers that could be types or sets, too, this second rule set
102" wins.)
103syn match cspProcess "\<[A-Z_][A-Z_0-9]*[A-Z0-9]\>"
104syn match cspProcess "\<[A-Z_]\>"
105
106" reserved identifiers for tool output (ending in underscore):
107syn match cspReservedIdentifier "\<[A-Za-z_][A-Za-z_0-9]*_\>"
108
109" ToDo markers:
110syn match cspTodo "FIXME" contained
111syn match cspTodo "TODO" contained
112syn match cspTodo "!!!" contained
113
114" RT-Tester pseudo comments:
115" (The now obsolete syntax:)
116syn match cspOldRttComment "^--\$\$AM_UNDEF"lc=2 contained
117syn match cspOldRttComment "^--\$\$AM_ERROR"lc=2 contained
118syn match cspOldRttComment "^--\$\$AM_WARNING"lc=2 contained
119syn match cspOldRttComment "^--\$\$AM_SET_TIMER"lc=2 contained
120syn match cspOldRttComment "^--\$\$AM_RESET_TIMER"lc=2 contained
121syn match cspOldRttComment "^--\$\$AM_ELAPSED_TIMER"lc=2 contained
122syn match cspOldRttComment "^--\$\$AM_OUTPUT"lc=2 contained
123syn match cspOldRttComment "^--\$\$AM_INPUT"lc=2 contained
124" (The current syntax:)
125syn region cspRttPragma matchgroup=cspRttPragmaKeyword start="^pragma\s\+" end="\s*$" oneline keepend contains=cspRttPragmaArg,cspRttPragmaSdl
126syn keyword cspRttPragmaArg AM_ERROR AM_WARNING AM_SET_TIMER contained
127syn keyword cspRttPragmaArg AM_RESET_TIMER AM_ELAPSED_TIMER contained
128syn keyword cspRttPragmaArg AM_OUTPUT AM_INPUT AM_INTERNAL contained
129" the "SDL_MATCH" extension:
130syn region cspRttPragmaSdl matchgroup=cspRttPragmaKeyword start="SDL_MATCH\s\+" end="\s*$" contains=cspRttPragmaSdlArg contained
131syn keyword cspRttPragmaSdlArg TRANSLATE nextgroup=cspRttPragmaSdlTransName contained
132syn keyword cspRttPragmaSdlArg PARAM SKIP OPTIONAL CHOICE ARRAY nextgroup=cspRttPragmaSdlName contained
133syn match cspRttPragmaSdlName "\s*\S\+\s*" nextgroup=cspRttPragmaSdlTail contained
134syn region cspRttPragmaSdlTail start="" end="\s*$" contains=cspRttPragmaSdlTailArg contained
135syn keyword cspRttPragmaSdlTailArg SUBSET_USED DEFAULT_VALUE Present contained
136syn match cspRttPragmaSdlTransName "\s*\w\+\s*" nextgroup=cspRttPragmaSdlTransTail contained
137syn region cspRttPragmaSdlTransTail start="" end="\s*$" contains=cspRttPragmaSdlTransTailArg contained
138syn keyword cspRttPragmaSdlTransTailArg sizeof contained
139syn match cspRttPragmaSdlTransTailArg "\*" contained
140syn match cspRttPragmaSdlTransTailArg "(" contained
141syn match cspRttPragmaSdlTransTailArg ")" contained
142
143" temporary syntax extension for commented-out "pragma SDL_MATCH":
144syn match cspSdlRttComment "pragma\s\+SDL_MATCH\s\+" nextgroup=cspRttPragmaSdlArg contained
145
146syn sync lines=250
147
148" Define the default highlighting.
Bram Moolenaar89bcfda2016-08-30 23:26:57 +0200149" Only when an item doesn't have highlighting yet
Bram Moolenaar071d4272004-06-13 20:20:40 +0000150
Bram Moolenaar89bcfda2016-08-30 23:26:57 +0200151" The default methods for highlighting. Can be overridden later
152" (For vim version <=5.7, the command groups are defined in
153" $VIMRUNTIME/syntax/synload.vim )
Bram Moolenaarf37506f2016-08-31 22:22:10 +0200154hi def link cspComment Comment
155hi def link cspNumber Number
156hi def link cspConditional Conditional
157hi def link cspOperator Delimiter
158hi def link cspKeyword Keyword
159hi def link cspReserved SpecialChar
160hi def link cspInclude Error
161hi def link cspIncludeKeyword Include
162hi def link cspIncludeArg Include
163hi def link cspAssert PreCondit
164hi def link cspType Type
165hi def link cspProcess Function
166hi def link cspTodo Todo
167hi def link cspOldRttComment Define
168hi def link cspRttPragmaKeyword Define
169hi def link cspSdlRttComment Define
170hi def link cspRttPragmaArg Define
171hi def link cspRttPragmaSdlArg Define
172hi def link cspRttPragmaSdlName Default
173hi def link cspRttPragmaSdlTailArg Define
174hi def link cspRttPragmaSdlTransName Default
175hi def link cspRttPragmaSdlTransTailArg Define
176hi def link cspReservedIdentifier Error
Bram Moolenaar89bcfda2016-08-30 23:26:57 +0200177" (Currently unused vim method: Debug)
Bram Moolenaar071d4272004-06-13 20:20:40 +0000178
Bram Moolenaar071d4272004-06-13 20:20:40 +0000179
180let b:current_syntax = "csp"
181
182" vim: ts=8