blob: 1c84bf00f645058cbce57e70b638f83f8e06ec0d [file] [log] [blame]
" Vim syntax file
" Language: occam
" Copyright: Fred Barnes <frmb2@kent.ac.uk>, Mario Schweigler <ms44@kent.ac.uk>
" Maintainer: Mario Schweigler <ms44@kent.ac.uk>
" Last Change: 24 May 2003
if version < 600
syntax clear
elseif exists("b:current_syntax")
finish
endif
"{{{ Settings
" Set shift width for indent
setlocal shiftwidth=2
" Set the tab key size to two spaces
setlocal softtabstop=2
" Let tab keys always be expanded to spaces
setlocal expandtab
" Dots are valid in occam identifiers
setlocal iskeyword+=.
"}}}
syn case match
syn keyword occamType BYTE BOOL INT INT16 INT32 INT64 REAL32 REAL64 ANY
syn keyword occamType CHAN DATA OF TYPE TIMER INITIAL VAL PORT MOBILE PLACED
syn keyword occamType PROCESSOR PACKED RECORD PROTOCOL SHARED ROUND TRUNC
syn keyword occamStructure SEQ PAR IF ALT PRI FORKING PLACE AT
syn keyword occamKeyword PROC IS TRUE FALSE SIZE RECURSIVE REC
syn keyword occamKeyword RETYPES RESHAPES STEP FROM FOR RESCHEDULE STOP SKIP FORK
syn keyword occamKeyword FUNCTION VALOF RESULT ELSE CLONE CLAIM
syn keyword occamBoolean TRUE FALSE
syn keyword occamRepeat WHILE
syn keyword occamConditional CASE
syn keyword occamConstant MOSTNEG MOSTPOS
syn match occamBrackets /\[\|\]/
syn match occamParantheses /(\|)/
syn keyword occamOperator AFTER TIMES MINUS PLUS INITIAL REM AND OR XOR NOT
syn keyword occamOperator BITAND BITOR BITNOT BYTESIN OFFSETOF
syn match occamOperator /::\|:=\|?\|!/
syn match occamOperator /<\|>\|+\|-\|\*\|\/\|\\\|=\|\~/
syn match occamOperator /@\|\$\$\|%\|&&\|<&\|&>\|<\]\|\[>\|\^/
syn match occamSpecialChar /\M**\|*'\|*"\|*#\(\[0-9A-F\]\+\)/ contained
syn match occamChar /\M\L\='\[^*\]'/
syn match occamChar /L'[^']*'/ contains=occamSpecialChar
syn case ignore
syn match occamTodo /\<todo\>:\=/ contained
syn match occamNote /\<note\>:\=/ contained
syn case match
syn keyword occamNote NOT contained
syn match occamComment /--.*/ contains=occamCommentTitle,occamTodo,occamNote
syn match occamCommentTitle /--\s*\u\a*\(\s\+\u\a*\)*:/hs=s+2 contained contains=occamTodo,occamNote
syn match occamCommentTitle /--\s*KROC-LIBRARY\(\.so\|\.a\)\=\s*$/hs=s+2 contained
syn match occamCommentTitle /--\s*\(KROC-OPTIONS:\|RUN-PARAMETERS:\)/hs=s+2 contained
syn match occamIdentifier /\<[A-Z.][A-Z.0-9]*\>/
syn match occamFunction /\<[A-Za-z.][A-Za-z0-9.]*\>/ contained
syn match occamPPIdentifier /##.\{-}\>/
syn region occamString start=/"/ skip=/\M*"/ end=/"/ contains=occamSpecialChar
syn region occamCharString start=/'/ end=/'/ contains=occamSpecialChar
syn match occamNumber /\<\d\+\(\.\d\+\(E\(+\|-\)\d\+\)\=\)\=/
syn match occamNumber /-\d\+\(\.\d\+\(E\(+\|-\)\d\+\)\=\)\=/
syn match occamNumber /#\(\d\|[A-F]\)\+/
syn match occamNumber /-#\(\d\|[A-F]\)\+/
syn keyword occamCDString SHARED EXTERNAL DEFINED NOALIAS NOUSAGE NOT contained
syn keyword occamCDString FILE LINE PROCESS.PRIORITY OCCAM2.5 contained
syn keyword occamCDString USER.DEFINED.OPERATORS INITIAL.DECL MOBILES contained
syn keyword occamCDString BLOCKING.SYSCALLS VERSION NEED.QUAD.ALIGNMENT contained
syn keyword occamCDString TARGET.CANONICAL TARGET.CPU TARGET.OS TARGET.VENDOR contained
syn keyword occamCDString TRUE FALSE AND OR contained
syn match occamCDString /<\|>\|=\|(\|)/ contained
syn region occamCDirective start=/#\(USE\|INCLUDE\|PRAGMA\|DEFINE\|UNDEFINE\|UNDEF\|IF\|ELIF\|ELSE\|ENDIF\|WARNING\|ERROR\|RELAX\)\>/ end=/$/ contains=occamString,occamComment,occamCDString
if version >= 508 || !exists("did_occam_syn_inits")
if version < 508
let did_occam_syntax_inits = 1
command -nargs=+ HiLink hi link <args>
else
command -nargs=+ HiLink hi def link <args>
endif
HiLink occamType Type
HiLink occamKeyword Keyword
HiLink occamComment Comment
HiLink occamCommentTitle PreProc
HiLink occamTodo Todo
HiLink occamNote Todo
HiLink occamString String
HiLink occamCharString String
HiLink occamNumber Number
HiLink occamCDirective PreProc
HiLink occamCDString String
HiLink occamPPIdentifier PreProc
HiLink occamBoolean Boolean
HiLink occamSpecialChar SpecialChar
HiLink occamChar Character
HiLink occamStructure Structure
HiLink occamIdentifier Identifier
HiLink occamConstant Constant
HiLink occamOperator Operator
HiLink occamFunction Ignore
HiLink occamRepeat Repeat
HiLink occamConditional Conditional
HiLink occamBrackets Type
HiLink occamParantheses Delimiter
delcommand HiLink
endif
let b:current_syntax = "occam"