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