1" Vim syntax file 2" Language: occam 3" Copyright: Fred Barnes <frmb2@kent.ac.uk>, Mario Schweigler <ms44@kent.ac.uk> 4" Maintainer: Mario Schweigler <ms44@kent.ac.uk> 5" Last Change: 24 May 2003 6 7if version < 600 8 syntax clear 9elseif exists("b:current_syntax") 10 finish 11endif 12 13"{{{ Settings 14" Set shift width for indent 15setlocal shiftwidth=2 16" Set the tab key size to two spaces 17setlocal softtabstop=2 18" Let tab keys always be expanded to spaces 19setlocal expandtab 20 21" Dots are valid in occam identifiers 22setlocal iskeyword+=. 23"}}} 24 25syn case match 26 27syn keyword occamType BYTE BOOL INT INT16 INT32 INT64 REAL32 REAL64 ANY 28syn keyword occamType CHAN DATA OF TYPE TIMER INITIAL VAL PORT MOBILE PLACED 29syn keyword occamType PROCESSOR PACKED RECORD PROTOCOL SHARED ROUND TRUNC 30 31syn keyword occamStructure SEQ PAR IF ALT PRI FORKING PLACE AT 32 33syn keyword occamKeyword PROC IS TRUE FALSE SIZE RECURSIVE REC 34syn keyword occamKeyword RETYPES RESHAPES STEP FROM FOR RESCHEDULE STOP SKIP FORK 35syn keyword occamKeyword FUNCTION VALOF RESULT ELSE CLONE CLAIM 36syn keyword occamBoolean TRUE FALSE 37syn keyword occamRepeat WHILE 38syn keyword occamConditional CASE 39syn keyword occamConstant MOSTNEG MOSTPOS 40 41syn match occamBrackets /\[\|\]/ 42syn match occamParantheses /(\|)/ 43 44syn keyword occamOperator AFTER TIMES MINUS PLUS INITIAL REM AND OR XOR NOT 45syn keyword occamOperator BITAND BITOR BITNOT BYTESIN OFFSETOF 46 47syn match occamOperator /::\|:=\|?\|!/ 48syn match occamOperator /<\|>\|+\|-\|\*\|\/\|\\\|=\|\~/ 49syn match occamOperator /@\|\$\$\|%\|&&\|<&\|&>\|<\]\|\[>\|\^/ 50 51syn match occamSpecialChar /\M**\|*'\|*"\|*#\(\[0-9A-F\]\+\)/ contained 52syn match occamChar /\M\L\='\[^*\]'/ 53syn match occamChar /L'[^']*'/ contains=occamSpecialChar 54 55syn case ignore 56syn match occamTodo /\<todo\>:\=/ contained 57syn match occamNote /\<note\>:\=/ contained 58syn case match 59syn keyword occamNote NOT contained 60 61syn match occamComment /--.*/ contains=occamCommentTitle,occamTodo,occamNote 62syn match occamCommentTitle /--\s*\u\a*\(\s\+\u\a*\)*:/hs=s+2 contained contains=occamTodo,occamNote 63syn match occamCommentTitle /--\s*KROC-LIBRARY\(\.so\|\.a\)\=\s*$/hs=s+2 contained 64syn match occamCommentTitle /--\s*\(KROC-OPTIONS:\|RUN-PARAMETERS:\)/hs=s+2 contained 65 66syn match occamIdentifier /\<[A-Z.][A-Z.0-9]*\>/ 67syn match occamFunction /\<[A-Za-z.][A-Za-z0-9.]*\>/ contained 68 69syn match occamPPIdentifier /##.\{-}\>/ 70 71syn region occamString start=/"/ skip=/\M*"/ end=/"/ contains=occamSpecialChar 72syn region occamCharString start=/'/ end=/'/ contains=occamSpecialChar 73 74syn match occamNumber /\<\d\+\(\.\d\+\(E\(+\|-\)\d\+\)\=\)\=/ 75syn match occamNumber /-\d\+\(\.\d\+\(E\(+\|-\)\d\+\)\=\)\=/ 76syn match occamNumber /#\(\d\|[A-F]\)\+/ 77syn match occamNumber /-#\(\d\|[A-F]\)\+/ 78 79syn keyword occamCDString SHARED EXTERNAL DEFINED NOALIAS NOUSAGE NOT contained 80syn keyword occamCDString FILE LINE PROCESS.PRIORITY OCCAM2.5 contained 81syn keyword occamCDString USER.DEFINED.OPERATORS INITIAL.DECL MOBILES contained 82syn keyword occamCDString BLOCKING.SYSCALLS VERSION NEED.QUAD.ALIGNMENT contained 83syn keyword occamCDString TARGET.CANONICAL TARGET.CPU TARGET.OS TARGET.VENDOR contained 84syn keyword occamCDString TRUE FALSE AND OR contained 85syn match occamCDString /<\|>\|=\|(\|)/ contained 86 87syn region occamCDirective start=/#\(USE\|INCLUDE\|PRAGMA\|DEFINE\|UNDEFINE\|UNDEF\|IF\|ELIF\|ELSE\|ENDIF\|WARNING\|ERROR\|RELAX\)\>/ end=/$/ contains=occamString,occamComment,occamCDString 88 89if version >= 508 || !exists("did_occam_syn_inits") 90 if version < 508 91 let did_occam_syntax_inits = 1 92 command -nargs=+ HiLink hi link <args> 93 else 94 command -nargs=+ HiLink hi def link <args> 95 endif 96 97 HiLink occamType Type 98 HiLink occamKeyword Keyword 99 HiLink occamComment Comment 100 HiLink occamCommentTitle PreProc 101 HiLink occamTodo Todo 102 HiLink occamNote Todo 103 HiLink occamString String 104 HiLink occamCharString String 105 HiLink occamNumber Number 106 HiLink occamCDirective PreProc 107 HiLink occamCDString String 108 HiLink occamPPIdentifier PreProc 109 HiLink occamBoolean Boolean 110 HiLink occamSpecialChar SpecialChar 111 HiLink occamChar Character 112 HiLink occamStructure Structure 113 HiLink occamIdentifier Identifier 114 HiLink occamConstant Constant 115 HiLink occamOperator Operator 116 HiLink occamFunction Ignore 117 HiLink occamRepeat Repeat 118 HiLink occamConditional Conditional 119 HiLink occamBrackets Type 120 HiLink occamParantheses Delimiter 121 122 delcommand HiLink 123endif 124 125let b:current_syntax = "occam" 126 127