blob: 1c84bf00f645058cbce57e70b638f83f8e06ec0d [file] [log] [blame]
Bram Moolenaar071d4272004-06-13 20:20:40 +00001" 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