xref: /vim-8.2.3635/runtime/syntax/csp.vim (revision cb03397a)
1" Vim syntax file
2" Language:	CSP (Communication Sequential Processes, using FDR input syntax)
3" Maintainer:	Jan Bredereke <[email protected]>
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
18" For version 5.x: Clear all syntax items
19" For version 6.x: Quit when a syntax file was already loaded
20if version < 600
21  syntax clear
22elseif exists("b:current_syntax")
23  finish
24endif
25
26" case is significant to FDR:
27syn case match
28
29" Block comments in CSP are between {- and -}
30syn region cspComment	start="{-"  end="-}" contains=cspTodo
31" Single-line comments start with --
32syn region cspComment	start="--"  end="$" contains=cspTodo,cspOldRttComment,cspSdlRttComment keepend
33
34" Numbers:
35syn match  cspNumber "\<\d\+\>"
36
37" Conditionals:
38syn keyword  cspConditional if then else
39
40" Operators on processes:
41" -> ? : ! ' ; /\ \ [] |~| [> & [[..<-..]] ||| [|..|] || [..<->..] ; : @ |||
42syn match  cspOperator "->"
43syn match  cspOperator "/\\"
44syn match  cspOperator "[^/]\\"lc=1
45syn match  cspOperator "\[\]"
46syn match  cspOperator "|\~|"
47syn match  cspOperator "\[>"
48syn match  cspOperator "\[\["
49syn match  cspOperator "\]\]"
50syn match  cspOperator "<-"
51syn match  cspOperator "|||"
52syn match  cspOperator "[^|]||[^|]"lc=1,me=e-1
53syn match  cspOperator "[^|{\~]|[^|}\~]"lc=1,me=e-1
54syn match  cspOperator "\[|"
55syn match  cspOperator "|\]"
56syn match  cspOperator "\[[^>]"me=e-1
57syn match  cspOperator "\]"
58syn match  cspOperator "<->"
59syn match  cspOperator "[?:!';@]"
60syn match  cspOperator "&"
61syn match  cspOperator "\."
62
63" (not on processes:)
64" syn match  cspDelimiter	"{|"
65" syn match  cspDelimiter	"|}"
66" syn match  cspDelimiter	"{[^-|]"me=e-1
67" syn match  cspDelimiter	"[^-|]}"lc=1
68
69" Keywords:
70syn keyword cspKeyword		length null head tail concat elem
71syn keyword cspKeyword		union inter diff Union Inter member card
72syn keyword cspKeyword		empty set Set Seq
73syn keyword cspKeyword		true false and or not within let
74syn keyword cspKeyword		nametype datatype diamond normal
75syn keyword cspKeyword		sbisim tau_loop_factor model_compress
76syn keyword cspKeyword		explicate
77syn match cspKeyword		"transparent"
78syn keyword cspKeyword		external chase prioritize
79syn keyword cspKeyword		channel Events
80syn keyword cspKeyword		extensions productions
81syn keyword cspKeyword		Bool Int
82
83" Reserved keywords:
84syn keyword cspReserved		attribute embed module subtype
85
86" Include:
87syn region cspInclude matchgroup=cspIncludeKeyword start="^include" end="$" keepend contains=cspIncludeArg
88syn region cspIncludeArg start='\s\+\"' end= '\"\s*' contained
89
90" Assertions:
91syn keyword cspAssert		assert deterministic divergence free deadlock
92syn keyword cspAssert		livelock
93syn match cspAssert		"\[T="
94syn match cspAssert		"\[F="
95syn match cspAssert		"\[FD="
96syn match cspAssert		"\[FD\]"
97syn match cspAssert		"\[F\]"
98
99" Types and Sets
100" (first char a capital, later at least one lower case, no trailing underscore):
101syn match cspType     "\<_*[A-Z][A-Z_0-9]*[a-z]\(\|[A-Za-z_0-9]*[A-Za-z0-9]\)\>"
102
103" Processes (all upper case, no trailing underscore):
104" (For identifiers that could be types or sets, too, this second rule set
105" wins.)
106syn match cspProcess		"\<[A-Z_][A-Z_0-9]*[A-Z0-9]\>"
107syn match cspProcess		"\<[A-Z_]\>"
108
109" reserved identifiers for tool output (ending in underscore):
110syn match cspReservedIdentifier	"\<[A-Za-z_][A-Za-z_0-9]*_\>"
111
112" ToDo markers:
113syn match cspTodo		"FIXME"	contained
114syn match cspTodo		"TODO"	contained
115syn match cspTodo		"!!!"	contained
116
117" RT-Tester pseudo comments:
118" (The now obsolete syntax:)
119syn match cspOldRttComment	"^--\$\$AM_UNDEF"lc=2		contained
120syn match cspOldRttComment	"^--\$\$AM_ERROR"lc=2		contained
121syn match cspOldRttComment	"^--\$\$AM_WARNING"lc=2		contained
122syn match cspOldRttComment	"^--\$\$AM_SET_TIMER"lc=2	contained
123syn match cspOldRttComment	"^--\$\$AM_RESET_TIMER"lc=2	contained
124syn match cspOldRttComment	"^--\$\$AM_ELAPSED_TIMER"lc=2	contained
125syn match cspOldRttComment	"^--\$\$AM_OUTPUT"lc=2		contained
126syn match cspOldRttComment	"^--\$\$AM_INPUT"lc=2		contained
127" (The current syntax:)
128syn region cspRttPragma matchgroup=cspRttPragmaKeyword start="^pragma\s\+" end="\s*$" oneline keepend contains=cspRttPragmaArg,cspRttPragmaSdl
129syn keyword cspRttPragmaArg	AM_ERROR AM_WARNING AM_SET_TIMER contained
130syn keyword cspRttPragmaArg	AM_RESET_TIMER AM_ELAPSED_TIMER  contained
131syn keyword cspRttPragmaArg	AM_OUTPUT AM_INPUT AM_INTERNAL   contained
132" the "SDL_MATCH" extension:
133syn region cspRttPragmaSdl	matchgroup=cspRttPragmaKeyword start="SDL_MATCH\s\+" end="\s*$" contains=cspRttPragmaSdlArg contained
134syn keyword cspRttPragmaSdlArg	TRANSLATE nextgroup=cspRttPragmaSdlTransName contained
135syn keyword cspRttPragmaSdlArg	PARAM SKIP OPTIONAL CHOICE ARRAY nextgroup=cspRttPragmaSdlName contained
136syn match cspRttPragmaSdlName	"\s*\S\+\s*" nextgroup=cspRttPragmaSdlTail contained
137syn region cspRttPragmaSdlTail  start="" end="\s*$" contains=cspRttPragmaSdlTailArg contained
138syn keyword cspRttPragmaSdlTailArg	SUBSET_USED DEFAULT_VALUE Present contained
139syn match cspRttPragmaSdlTransName	"\s*\w\+\s*" nextgroup=cspRttPragmaSdlTransTail contained
140syn region cspRttPragmaSdlTransTail  start="" end="\s*$" contains=cspRttPragmaSdlTransTailArg contained
141syn keyword cspRttPragmaSdlTransTailArg	sizeof contained
142syn match cspRttPragmaSdlTransTailArg	"\*" contained
143syn match cspRttPragmaSdlTransTailArg	"(" contained
144syn match cspRttPragmaSdlTransTailArg	")" contained
145
146" temporary syntax extension for commented-out "pragma SDL_MATCH":
147syn match cspSdlRttComment	"pragma\s\+SDL_MATCH\s\+" nextgroup=cspRttPragmaSdlArg contained
148
149syn sync lines=250
150
151" Define the default highlighting.
152" For version 5.7 and earlier: only when not done already
153" For version 5.8 and later: only when an item doesn't have highlighting yet
154if version >= 508 || !exists("did_csp_syn_inits")
155  if version < 508
156    let did_csp_syn_inits = 1
157    command -nargs=+ HiLink hi link <args>
158  else
159    command -nargs=+ HiLink hi def link <args>
160  endif
161
162  " The default methods for highlighting.  Can be overridden later
163  " (For vim version <=5.7, the command groups are defined in
164  " $VIMRUNTIME/syntax/synload.vim )
165  HiLink cspComment			Comment
166  HiLink cspNumber			Number
167  HiLink cspConditional			Conditional
168  HiLink cspOperator			Delimiter
169  HiLink cspKeyword			Keyword
170  HiLink cspReserved			SpecialChar
171  HiLink cspInclude			Error
172  HiLink cspIncludeKeyword		Include
173  HiLink cspIncludeArg			Include
174  HiLink cspAssert			PreCondit
175  HiLink cspType			Type
176  HiLink cspProcess			Function
177  HiLink cspTodo			Todo
178  HiLink cspOldRttComment		Define
179  HiLink cspRttPragmaKeyword		Define
180  HiLink cspSdlRttComment		Define
181  HiLink cspRttPragmaArg		Define
182  HiLink cspRttPragmaSdlArg		Define
183  HiLink cspRttPragmaSdlName		Default
184  HiLink cspRttPragmaSdlTailArg		Define
185  HiLink cspRttPragmaSdlTransName	Default
186  HiLink cspRttPragmaSdlTransTailArg	Define
187  HiLink cspReservedIdentifier	Error
188  " (Currently unused vim method: Debug)
189
190  delcommand HiLink
191endif
192
193let b:current_syntax = "csp"
194
195" vim: ts=8
196