1071d4279SBram Moolenaar" Vim syntax file 2071d4279SBram Moolenaar" Language: occam 3071d4279SBram Moolenaar" Copyright: Fred Barnes <[email protected]>, Mario Schweigler <[email protected]> 4071d4279SBram Moolenaar" Maintainer: Mario Schweigler <[email protected]> 5071d4279SBram Moolenaar" Last Change: 24 May 2003 6071d4279SBram Moolenaar 789bcfda6SBram Moolenaar" quit when a syntax file was already loaded 889bcfda6SBram Moolenaarif exists("b:current_syntax") 9071d4279SBram Moolenaar finish 10071d4279SBram Moolenaarendif 11071d4279SBram Moolenaar 12071d4279SBram Moolenaar"{{{ Settings 13071d4279SBram Moolenaar" Set shift width for indent 14071d4279SBram Moolenaarsetlocal shiftwidth=2 15071d4279SBram Moolenaar" Set the tab key size to two spaces 16071d4279SBram Moolenaarsetlocal softtabstop=2 17071d4279SBram Moolenaar" Let tab keys always be expanded to spaces 18071d4279SBram Moolenaarsetlocal expandtab 19071d4279SBram Moolenaar 20071d4279SBram Moolenaar" Dots are valid in occam identifiers 21071d4279SBram Moolenaarsetlocal iskeyword+=. 22071d4279SBram Moolenaar"}}} 23071d4279SBram Moolenaar 24071d4279SBram Moolenaarsyn case match 25071d4279SBram Moolenaar 26071d4279SBram Moolenaarsyn keyword occamType BYTE BOOL INT INT16 INT32 INT64 REAL32 REAL64 ANY 27071d4279SBram Moolenaarsyn keyword occamType CHAN DATA OF TYPE TIMER INITIAL VAL PORT MOBILE PLACED 28071d4279SBram Moolenaarsyn keyword occamType PROCESSOR PACKED RECORD PROTOCOL SHARED ROUND TRUNC 29071d4279SBram Moolenaar 30071d4279SBram Moolenaarsyn keyword occamStructure SEQ PAR IF ALT PRI FORKING PLACE AT 31071d4279SBram Moolenaar 32071d4279SBram Moolenaarsyn keyword occamKeyword PROC IS TRUE FALSE SIZE RECURSIVE REC 33071d4279SBram Moolenaarsyn keyword occamKeyword RETYPES RESHAPES STEP FROM FOR RESCHEDULE STOP SKIP FORK 34071d4279SBram Moolenaarsyn keyword occamKeyword FUNCTION VALOF RESULT ELSE CLONE CLAIM 35071d4279SBram Moolenaarsyn keyword occamBoolean TRUE FALSE 36071d4279SBram Moolenaarsyn keyword occamRepeat WHILE 37071d4279SBram Moolenaarsyn keyword occamConditional CASE 38071d4279SBram Moolenaarsyn keyword occamConstant MOSTNEG MOSTPOS 39071d4279SBram Moolenaar 40071d4279SBram Moolenaarsyn match occamBrackets /\[\|\]/ 41071d4279SBram Moolenaarsyn match occamParantheses /(\|)/ 42071d4279SBram Moolenaar 43071d4279SBram Moolenaarsyn keyword occamOperator AFTER TIMES MINUS PLUS INITIAL REM AND OR XOR NOT 44071d4279SBram Moolenaarsyn keyword occamOperator BITAND BITOR BITNOT BYTESIN OFFSETOF 45071d4279SBram Moolenaar 46071d4279SBram Moolenaarsyn match occamOperator /::\|:=\|?\|!/ 47071d4279SBram Moolenaarsyn match occamOperator /<\|>\|+\|-\|\*\|\/\|\\\|=\|\~/ 48071d4279SBram Moolenaarsyn match occamOperator /@\|\$\$\|%\|&&\|<&\|&>\|<\]\|\[>\|\^/ 49071d4279SBram Moolenaar 50071d4279SBram Moolenaarsyn match occamSpecialChar /\M**\|*'\|*"\|*#\(\[0-9A-F\]\+\)/ contained 51071d4279SBram Moolenaarsyn match occamChar /\M\L\='\[^*\]'/ 52071d4279SBram Moolenaarsyn match occamChar /L'[^']*'/ contains=occamSpecialChar 53071d4279SBram Moolenaar 54071d4279SBram Moolenaarsyn case ignore 55071d4279SBram Moolenaarsyn match occamTodo /\<todo\>:\=/ contained 56071d4279SBram Moolenaarsyn match occamNote /\<note\>:\=/ contained 57071d4279SBram Moolenaarsyn case match 58071d4279SBram Moolenaarsyn keyword occamNote NOT contained 59071d4279SBram Moolenaar 60071d4279SBram Moolenaarsyn match occamComment /--.*/ contains=occamCommentTitle,occamTodo,occamNote 61071d4279SBram Moolenaarsyn match occamCommentTitle /--\s*\u\a*\(\s\+\u\a*\)*:/hs=s+2 contained contains=occamTodo,occamNote 62071d4279SBram Moolenaarsyn match occamCommentTitle /--\s*KROC-LIBRARY\(\.so\|\.a\)\=\s*$/hs=s+2 contained 63071d4279SBram Moolenaarsyn match occamCommentTitle /--\s*\(KROC-OPTIONS:\|RUN-PARAMETERS:\)/hs=s+2 contained 64071d4279SBram Moolenaar 65071d4279SBram Moolenaarsyn match occamIdentifier /\<[A-Z.][A-Z.0-9]*\>/ 66071d4279SBram Moolenaarsyn match occamFunction /\<[A-Za-z.][A-Za-z0-9.]*\>/ contained 67071d4279SBram Moolenaar 68071d4279SBram Moolenaarsyn match occamPPIdentifier /##.\{-}\>/ 69071d4279SBram Moolenaar 70071d4279SBram Moolenaarsyn region occamString start=/"/ skip=/\M*"/ end=/"/ contains=occamSpecialChar 71071d4279SBram Moolenaarsyn region occamCharString start=/'/ end=/'/ contains=occamSpecialChar 72071d4279SBram Moolenaar 73071d4279SBram Moolenaarsyn match occamNumber /\<\d\+\(\.\d\+\(E\(+\|-\)\d\+\)\=\)\=/ 74071d4279SBram Moolenaarsyn match occamNumber /-\d\+\(\.\d\+\(E\(+\|-\)\d\+\)\=\)\=/ 75071d4279SBram Moolenaarsyn match occamNumber /#\(\d\|[A-F]\)\+/ 76071d4279SBram Moolenaarsyn match occamNumber /-#\(\d\|[A-F]\)\+/ 77071d4279SBram Moolenaar 78071d4279SBram Moolenaarsyn keyword occamCDString SHARED EXTERNAL DEFINED NOALIAS NOUSAGE NOT contained 79071d4279SBram Moolenaarsyn keyword occamCDString FILE LINE PROCESS.PRIORITY OCCAM2.5 contained 80071d4279SBram Moolenaarsyn keyword occamCDString USER.DEFINED.OPERATORS INITIAL.DECL MOBILES contained 81071d4279SBram Moolenaarsyn keyword occamCDString BLOCKING.SYSCALLS VERSION NEED.QUAD.ALIGNMENT contained 82071d4279SBram Moolenaarsyn keyword occamCDString TARGET.CANONICAL TARGET.CPU TARGET.OS TARGET.VENDOR contained 83071d4279SBram Moolenaarsyn keyword occamCDString TRUE FALSE AND OR contained 84071d4279SBram Moolenaarsyn match occamCDString /<\|>\|=\|(\|)/ contained 85071d4279SBram Moolenaar 86071d4279SBram Moolenaarsyn region occamCDirective start=/#\(USE\|INCLUDE\|PRAGMA\|DEFINE\|UNDEFINE\|UNDEF\|IF\|ELIF\|ELSE\|ENDIF\|WARNING\|ERROR\|RELAX\)\>/ end=/$/ contains=occamString,occamComment,occamCDString 87071d4279SBram Moolenaar 88071d4279SBram Moolenaar 89*f37506f6SBram Moolenaarhi def link occamType Type 90*f37506f6SBram Moolenaarhi def link occamKeyword Keyword 91*f37506f6SBram Moolenaarhi def link occamComment Comment 92*f37506f6SBram Moolenaarhi def link occamCommentTitle PreProc 93*f37506f6SBram Moolenaarhi def link occamTodo Todo 94*f37506f6SBram Moolenaarhi def link occamNote Todo 95*f37506f6SBram Moolenaarhi def link occamString String 96*f37506f6SBram Moolenaarhi def link occamCharString String 97*f37506f6SBram Moolenaarhi def link occamNumber Number 98*f37506f6SBram Moolenaarhi def link occamCDirective PreProc 99*f37506f6SBram Moolenaarhi def link occamCDString String 100*f37506f6SBram Moolenaarhi def link occamPPIdentifier PreProc 101*f37506f6SBram Moolenaarhi def link occamBoolean Boolean 102*f37506f6SBram Moolenaarhi def link occamSpecialChar SpecialChar 103*f37506f6SBram Moolenaarhi def link occamChar Character 104*f37506f6SBram Moolenaarhi def link occamStructure Structure 105*f37506f6SBram Moolenaarhi def link occamIdentifier Identifier 106*f37506f6SBram Moolenaarhi def link occamConstant Constant 107*f37506f6SBram Moolenaarhi def link occamOperator Operator 108*f37506f6SBram Moolenaarhi def link occamFunction Ignore 109*f37506f6SBram Moolenaarhi def link occamRepeat Repeat 110*f37506f6SBram Moolenaarhi def link occamConditional Conditional 111*f37506f6SBram Moolenaarhi def link occamBrackets Type 112*f37506f6SBram Moolenaarhi def link occamParantheses Delimiter 113071d4279SBram Moolenaar 114071d4279SBram Moolenaar 115071d4279SBram Moolenaarlet b:current_syntax = "occam" 116071d4279SBram Moolenaar 117