xref: /vim-8.2.3635/runtime/syntax/csp.vim (revision 89bcfda6)
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" quit when a syntax file was already loaded
19if exists("b:current_syntax")
20  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.
149" Only when an item doesn't have highlighting yet
150command -nargs=+ HiLink hi def link <args>
151
152" The default methods for highlighting.  Can be overridden later
153" (For vim version <=5.7, the command groups are defined in
154" $VIMRUNTIME/syntax/synload.vim )
155HiLink cspComment			Comment
156HiLink cspNumber			Number
157HiLink cspConditional			Conditional
158HiLink cspOperator			Delimiter
159HiLink cspKeyword			Keyword
160HiLink cspReserved			SpecialChar
161HiLink cspInclude			Error
162HiLink cspIncludeKeyword		Include
163HiLink cspIncludeArg			Include
164HiLink cspAssert			PreCondit
165HiLink cspType			Type
166HiLink cspProcess			Function
167HiLink cspTodo			Todo
168HiLink cspOldRttComment		Define
169HiLink cspRttPragmaKeyword		Define
170HiLink cspSdlRttComment		Define
171HiLink cspRttPragmaArg		Define
172HiLink cspRttPragmaSdlArg		Define
173HiLink cspRttPragmaSdlName		Default
174HiLink cspRttPragmaSdlTailArg		Define
175HiLink cspRttPragmaSdlTransName	Default
176HiLink cspRttPragmaSdlTransTailArg	Define
177HiLink cspReservedIdentifier	Error
178" (Currently unused vim method: Debug)
179
180delcommand HiLink
181
182let b:current_syntax = "csp"
183
184" vim: ts=8
185