1" Vim syntax file
2" Language:	RPL/2
3" Version:	0.15.15 against RPL/2 version 4.00pre7i
4" Last Change:	2012 Feb 03 by Thilo Six
5" Maintainer:	Joël BERTRAND <rpl2@free.fr>
6" URL:		http://www.makalis.fr/~bertrand/rpl2/download/vim/indent/rpl.vim
7" Credits:	Nothing
8
9" quit when a syntax file was already loaded
10if exists("b:current_syntax")
11  finish
12endif
13
14let s:cpo_save = &cpo
15set cpo&vim
16
17" Keyword characters (not used)
18" set iskeyword=33-127
19
20" Case sensitive
21syntax case match
22
23" Constants
24syntax match rplConstant	   "\(^\|\s\+\)\(e\|i\)\ze\($\|\s\+\)"
25
26" Any binary number
27syntax match rplBinaryError	   "\(^\|\s\+\)#\s*\S\+b\ze"
28syntax match rplBinary		   "\(^\|\s\+\)#\s*[01]\+b\ze\($\|\s\+\)"
29syntax match rplOctalError	   "\(^\|\s\+\)#\s*\S\+o\ze"
30syntax match rplOctal		   "\(^\|\s\+\)#\s*\o\+o\ze\($\|\s\+\)"
31syntax match rplDecimalError	   "\(^\|\s\+\)#\s*\S\+d\ze"
32syntax match rplDecimal		   "\(^\|\s\+\)#\s*\d\+d\ze\($\|\s\+\)"
33syntax match rplHexadecimalError   "\(^\|\s\+\)#\s*\S\+h\ze"
34syntax match rplHexadecimal	   "\(^\|\s\+\)#\s*\x\+h\ze\($\|\s\+\)"
35
36" Case unsensitive
37syntax case ignore
38
39syntax match rplControl		   "\(^\|\s\+\)abort\ze\($\|\s\+\)"
40syntax match rplControl		   "\(^\|\s\+\)kill\ze\($\|\s\+\)"
41syntax match rplControl		   "\(^\|\s\+\)cont\ze\($\|\s\+\)"
42syntax match rplControl		   "\(^\|\s\+\)halt\ze\($\|\s\+\)"
43syntax match rplControl		   "\(^\|\s\+\)cmlf\ze\($\|\s\+\)"
44syntax match rplControl		   "\(^\|\s\+\)sst\ze\($\|\s\+\)"
45
46syntax match rplConstant	   "\(^\|\s\+\)pi\ze\($\|\s\+\)"
47
48syntax match rplStatement	   "\(^\|\s\+\)return\ze\($\|\s\+\)"
49syntax match rplStatement	   "\(^\|\s\+\)last\ze\($\|\s\+\)"
50syntax match rplStatement	   "\(^\|\s\+\)syzeval\ze\($\|\s\+\)"
51syntax match rplStatement	   "\(^\|\s\+\)wait\ze\($\|\s\+\)"
52syntax match rplStatement	   "\(^\|\s\+\)type\ze\($\|\s\+\)"
53syntax match rplStatement	   "\(^\|\s\+\)kind\ze\($\|\s\+\)"
54syntax match rplStatement	   "\(^\|\s\+\)eval\ze\($\|\s\+\)"
55syntax match rplStatement	   "\(^\|\s\+\)use\ze\($\|\s\+\)"
56syntax match rplStatement	   "\(^\|\s\+\)remove\ze\($\|\s\+\)"
57syntax match rplStatement	   "\(^\|\s\+\)external\ze\($\|\s\+\)"
58syntax match rplStatement	   "\(^\|\s\+\)dup\([2n]\|\)\ze\($\|\s\+\)"
59syntax match rplStatement	   "\(^\|\s\+\)drop\([2n]\|\)\ze\($\|\s\+\)"
60syntax match rplStatement	   "\(^\|\s\+\)depth\ze\($\|\s\+\)"
61syntax match rplStatement	   "\(^\|\s\+\)roll\(d\|\)\ze\($\|\s\+\)"
62syntax match rplStatement	   "\(^\|\s\+\)pick\ze\($\|\s\+\)"
63syntax match rplStatement	   "\(^\|\s\+\)rot\ze\($\|\s\+\)"
64syntax match rplStatement	   "\(^\|\s\+\)swap\ze\($\|\s\+\)"
65syntax match rplStatement	   "\(^\|\s\+\)over\ze\($\|\s\+\)"
66syntax match rplStatement	   "\(^\|\s\+\)clear\ze\($\|\s\+\)"
67syntax match rplStatement	   "\(^\|\s\+\)warranty\ze\($\|\s\+\)"
68syntax match rplStatement	   "\(^\|\s\+\)copyright\ze\($\|\s\+\)"
69syntax match rplStatement	   "\(^\|\s\+\)convert\ze\($\|\s\+\)"
70syntax match rplStatement	   "\(^\|\s\+\)date\ze\($\|\s\+\)"
71syntax match rplStatement	   "\(^\|\s\+\)time\ze\($\|\s\+\)"
72syntax match rplStatement	   "\(^\|\s\+\)mem\ze\($\|\s\+\)"
73syntax match rplStatement	   "\(^\|\s\+\)clmf\ze\($\|\s\+\)"
74syntax match rplStatement	   "\(^\|\s\+\)->num\ze\($\|\s\+\)"
75syntax match rplStatement	   "\(^\|\s\+\)help\ze\($\|\s\+\)"
76
77syntax match rplStorage		   "\(^\|\s\+\)get\(i\|r\|c\|\)\ze\($\|\s\+\)"
78syntax match rplStorage		   "\(^\|\s\+\)put\(i\|r\|c\|\)\ze\($\|\s\+\)"
79syntax match rplStorage		   "\(^\|\s\+\)rcl\ze\($\|\s\+\)"
80syntax match rplStorage		   "\(^\|\s\+\)purge\ze\($\|\s\+\)"
81syntax match rplStorage		   "\(^\|\s\+\)sinv\ze\($\|\s\+\)"
82syntax match rplStorage		   "\(^\|\s\+\)sneg\ze\($\|\s\+\)"
83syntax match rplStorage		   "\(^\|\s\+\)sconj\ze\($\|\s\+\)"
84syntax match rplStorage		   "\(^\|\s\+\)steq\ze\($\|\s\+\)"
85syntax match rplStorage		   "\(^\|\s\+\)rceq\ze\($\|\s\+\)"
86syntax match rplStorage		   "\(^\|\s\+\)vars\ze\($\|\s\+\)"
87syntax match rplStorage		   "\(^\|\s\+\)clusr\ze\($\|\s\+\)"
88syntax match rplStorage		   "\(^\|\s\+\)sto\([+-/\*]\|\)\ze\($\|\s\+\)"
89
90syntax match rplAlgConditional	   "\(^\|\s\+\)ift\(e\|\)\ze\($\|\s\+\)"
91
92syntax match rplOperator	   "\(^\|\s\+\)and\ze\($\|\s\+\)"
93syntax match rplOperator	   "\(^\|\s\+\)\(x\|\)or\ze\($\|\s\+\)"
94syntax match rplOperator	   "\(^\|\s\+\)not\ze\($\|\s\+\)"
95syntax match rplOperator	   "\(^\|\s\+\)same\ze\($\|\s\+\)"
96syntax match rplOperator	   "\(^\|\s\+\)==\ze\($\|\s\+\)"
97syntax match rplOperator	   "\(^\|\s\+\)<=\ze\($\|\s\+\)"
98syntax match rplOperator	   "\(^\|\s\+\)=<\ze\($\|\s\+\)"
99syntax match rplOperator	   "\(^\|\s\+\)=>\ze\($\|\s\+\)"
100syntax match rplOperator	   "\(^\|\s\+\)>=\ze\($\|\s\+\)"
101syntax match rplOperator	   "\(^\|\s\+\)<>\ze\($\|\s\+\)"
102syntax match rplOperator	   "\(^\|\s\+\)>\ze\($\|\s\+\)"
103syntax match rplOperator	   "\(^\|\s\+\)<\ze\($\|\s\+\)"
104syntax match rplOperator	   "\(^\|\s\+\)[+-]\ze\($\|\s\+\)"
105syntax match rplOperator	   "\(^\|\s\+\)[/\*]\ze\($\|\s\+\)"
106syntax match rplOperator	   "\(^\|\s\+\)\^\ze\($\|\s\+\)"
107syntax match rplOperator	   "\(^\|\s\+\)\*\*\ze\($\|\s\+\)"
108
109syntax match rplBoolean		   "\(^\|\s\+\)true\ze\($\|\s\+\)"
110syntax match rplBoolean		   "\(^\|\s\+\)false\ze\($\|\s\+\)"
111
112syntax match rplReadWrite	   "\(^\|\s\+\)store\ze\($\|\s\+\)"
113syntax match rplReadWrite	   "\(^\|\s\+\)recall\ze\($\|\s\+\)"
114syntax match rplReadWrite	   "\(^\|\s\+\)\(\|wf\|un\)lock\ze\($\|\s\+\)"
115syntax match rplReadWrite	   "\(^\|\s\+\)open\ze\($\|\s\+\)"
116syntax match rplReadWrite	   "\(^\|\s\+\)close\ze\($\|\s\+\)"
117syntax match rplReadWrite	   "\(^\|\s\+\)delete\ze\($\|\s\+\)"
118syntax match rplReadWrite	   "\(^\|\s\+\)create\ze\($\|\s\+\)"
119syntax match rplReadWrite	   "\(^\|\s\+\)format\ze\($\|\s\+\)"
120syntax match rplReadWrite	   "\(^\|\s\+\)rewind\ze\($\|\s\+\)"
121syntax match rplReadWrite	   "\(^\|\s\+\)backspace\ze\($\|\s\+\)"
122syntax match rplReadWrite	   "\(^\|\s\+\)\(\|re\)write\ze\($\|\s\+\)"
123syntax match rplReadWrite	   "\(^\|\s\+\)read\ze\($\|\s\+\)"
124syntax match rplReadWrite	   "\(^\|\s\+\)inquire\ze\($\|\s\+\)"
125syntax match rplReadWrite	   "\(^\|\s\+\)sync\ze\($\|\s\+\)"
126syntax match rplReadWrite	   "\(^\|\s\+\)append\ze\($\|\s\+\)"
127syntax match rplReadWrite	   "\(^\|\s\+\)suppress\ze\($\|\s\+\)"
128syntax match rplReadWrite	   "\(^\|\s\+\)seek\ze\($\|\s\+\)"
129syntax match rplReadWrite	   "\(^\|\s\+\)pr\(1\|int\|st\|stc\|lcd\|var\|usr\|md\)\ze\($\|\s\+\)"
130syntax match rplReadWrite	   "\(^\|\s\+\)paper\ze\($\|\s\+\)"
131syntax match rplReadWrite	   "\(^\|\s\+\)cr\($\|\s\+\)"
132syntax match rplReadWrite	   "\(^\|\s\+\)erase\ze\($\|\s\+\)"
133syntax match rplReadWrite	   "\(^\|\s\+\)disp\ze\($\|\s\+\)"
134syntax match rplReadWrite	   "\(^\|\s\+\)input\ze\($\|\s\+\)"
135syntax match rplReadWrite	   "\(^\|\s\+\)prompt\ze\($\|\s\+\)"
136syntax match rplReadWrite	   "\(^\|\s\+\)key\ze\($\|\s\+\)"
137syntax match rplReadWrite	   "\(^\|\s\+\)cllcd\ze\($\|\s\+\)"
138syntax match rplReadWrite	   "\(^\|\s\+\)\(\|re\)draw\ze\($\|\s\+\)"
139syntax match rplReadWrite	   "\(^\|\s\+\)drax\ze\($\|\s\+\)"
140syntax match rplReadWrite	   "\(^\|\s\+\)indep\ze\($\|\s\+\)"
141syntax match rplReadWrite	   "\(^\|\s\+\)depnd\ze\($\|\s\+\)"
142syntax match rplReadWrite	   "\(^\|\s\+\)res\ze\($\|\s\+\)"
143syntax match rplReadWrite	   "\(^\|\s\+\)axes\ze\($\|\s\+\)"
144syntax match rplReadWrite	   "\(^\|\s\+\)label\ze\($\|\s\+\)"
145syntax match rplReadWrite	   "\(^\|\s\+\)pmin\ze\($\|\s\+\)"
146syntax match rplReadWrite	   "\(^\|\s\+\)pmax\ze\($\|\s\+\)"
147syntax match rplReadWrite	   "\(^\|\s\+\)centr\ze\($\|\s\+\)"
148syntax match rplReadWrite	   "\(^\|\s\+\)persist\ze\($\|\s\+\)"
149syntax match rplReadWrite	   "\(^\|\s\+\)title\ze\($\|\s\+\)"
150syntax match rplReadWrite	   "\(^\|\s\+\)\(slice\|auto\|log\|\)scale\ze\($\|\s\+\)"
151syntax match rplReadWrite	   "\(^\|\s\+\)eyept\ze\($\|\s\+\)"
152syntax match rplReadWrite	   "\(^\|\s\+\)\(p\|s\)par\ze\($\|\s\+\)"
153syntax match rplReadWrite	   "\(^\|\s\+\)function\ze\($\|\s\+\)"
154syntax match rplReadWrite	   "\(^\|\s\+\)polar\ze\($\|\s\+\)"
155syntax match rplReadWrite	   "\(^\|\s\+\)scatter\ze\($\|\s\+\)"
156syntax match rplReadWrite	   "\(^\|\s\+\)plotter\ze\($\|\s\+\)"
157syntax match rplReadWrite	   "\(^\|\s\+\)wireframe\ze\($\|\s\+\)"
158syntax match rplReadWrite	   "\(^\|\s\+\)parametric\ze\($\|\s\+\)"
159syntax match rplReadWrite	   "\(^\|\s\+\)slice\ze\($\|\s\+\)"
160syntax match rplReadWrite	   "\(^\|\s\+\)\*w\ze\($\|\s\+\)"
161syntax match rplReadWrite	   "\(^\|\s\+\)\*h\ze\($\|\s\+\)"
162syntax match rplReadWrite	   "\(^\|\s\+\)\*d\ze\($\|\s\+\)"
163syntax match rplReadWrite	   "\(^\|\s\+\)\*s\ze\($\|\s\+\)"
164syntax match rplReadWrite	   "\(^\|\s\+\)->lcd\ze\($\|\s\+\)"
165syntax match rplReadWrite	   "\(^\|\s\+\)lcd->\ze\($\|\s\+\)"
166syntax match rplReadWrite	   "\(^\|\s\+\)edit\ze\($\|\s\+\)"
167syntax match rplReadWrite	   "\(^\|\s\+\)visit\ze\($\|\s\+\)"
168
169syntax match rplIntrinsic	   "\(^\|\s\+\)abs\ze\($\|\s\+\)"
170syntax match rplIntrinsic	   "\(^\|\s\+\)arg\ze\($\|\s\+\)"
171syntax match rplIntrinsic	   "\(^\|\s\+\)conj\ze\($\|\s\+\)"
172syntax match rplIntrinsic	   "\(^\|\s\+\)re\ze\($\|\s\+\)"
173syntax match rplIntrinsic	   "\(^\|\s\+\)im\ze\($\|\s\+\)"
174syntax match rplIntrinsic	   "\(^\|\s\+\)mant\ze\($\|\s\+\)"
175syntax match rplIntrinsic	   "\(^\|\s\+\)xpon\ze\($\|\s\+\)"
176syntax match rplIntrinsic	   "\(^\|\s\+\)ceil\ze\($\|\s\+\)"
177syntax match rplIntrinsic	   "\(^\|\s\+\)fact\ze\($\|\s\+\)"
178syntax match rplIntrinsic	   "\(^\|\s\+\)fp\ze\($\|\s\+\)"
179syntax match rplIntrinsic	   "\(^\|\s\+\)floor\ze\($\|\s\+\)"
180syntax match rplIntrinsic	   "\(^\|\s\+\)inv\ze\($\|\s\+\)"
181syntax match rplIntrinsic	   "\(^\|\s\+\)ip\ze\($\|\s\+\)"
182syntax match rplIntrinsic	   "\(^\|\s\+\)max\ze\($\|\s\+\)"
183syntax match rplIntrinsic	   "\(^\|\s\+\)min\ze\($\|\s\+\)"
184syntax match rplIntrinsic	   "\(^\|\s\+\)mod\ze\($\|\s\+\)"
185syntax match rplIntrinsic	   "\(^\|\s\+\)neg\ze\($\|\s\+\)"
186syntax match rplIntrinsic	   "\(^\|\s\+\)relax\ze\($\|\s\+\)"
187syntax match rplIntrinsic	   "\(^\|\s\+\)sign\ze\($\|\s\+\)"
188syntax match rplIntrinsic	   "\(^\|\s\+\)sq\(\|rt\)\ze\($\|\s\+\)"
189syntax match rplIntrinsic	   "\(^\|\s\+\)xroot\ze\($\|\s\+\)"
190syntax match rplIntrinsic	   "\(^\|\s\+\)cos\ze\($\|\s\+\)"
191syntax match rplIntrinsic	   "\(^\|\s\+\)sin\ze\($\|\s\+\)"
192syntax match rplIntrinsic	   "\(^\|\s\+\)tan\ze\($\|\s\+\)"
193syntax match rplIntrinsic	   "\(^\|\s\+\)tg\ze\($\|\s\+\)"
194syntax match rplIntrinsic	   "\(^\|\s\+\)a\(\|rc\)cos\ze\($\|\s\+\)"
195syntax match rplIntrinsic	   "\(^\|\s\+\)a\(\|rc\)sin\ze\($\|\s\+\)"
196syntax match rplIntrinsic	   "\(^\|\s\+\)atan\ze\($\|\s\+\)"
197syntax match rplIntrinsic	   "\(^\|\s\+\)arctg\ze\($\|\s\+\)"
198syntax match rplIntrinsic	   "\(^\|\s\+\)\(\|a\)cosh\ze\($\|\s\+\)"
199syntax match rplIntrinsic	   "\(^\|\s\+\)\(\|a\)sinh\ze\($\|\s\+\)"
200syntax match rplIntrinsic	   "\(^\|\s\+\)\(\|a\)tanh\ze\($\|\s\+\)"
201syntax match rplIntrinsic	   "\(^\|\s\+\)\(\|arg\)th\ze\($\|\s\+\)"
202syntax match rplIntrinsic	   "\(^\|\s\+\)arg[cst]h\ze\($\|\s\+\)"
203syntax match rplIntrinsic	   "\(^\|\s\+\)\(\|a\)log\ze\($\|\s\+\)"
204syntax match rplIntrinsic	   "\(^\|\s\+\)ln\(\|1\)\ze\($\|\s\+\)"
205syntax match rplIntrinsic	   "\(^\|\s\+\)exp\(\|m\)\ze\($\|\s\+\)"
206syntax match rplIntrinsic	   "\(^\|\s\+\)trn\ze\($\|\s\+\)"
207syntax match rplIntrinsic	   "\(^\|\s\+\)con\ze\($\|\s\+\)"
208syntax match rplIntrinsic	   "\(^\|\s\+\)idn\ze\($\|\s\+\)"
209syntax match rplIntrinsic	   "\(^\|\s\+\)rdm\ze\($\|\s\+\)"
210syntax match rplIntrinsic	   "\(^\|\s\+\)rsd\ze\($\|\s\+\)"
211syntax match rplIntrinsic	   "\(^\|\s\+\)cnrm\ze\($\|\s\+\)"
212syntax match rplIntrinsic	   "\(^\|\s\+\)cross\ze\($\|\s\+\)"
213syntax match rplIntrinsic	   "\(^\|\s\+\)d[eo]t\ze\($\|\s\+\)"
214syntax match rplIntrinsic	   "\(^\|\s\+\)[cr]swp\ze\($\|\s\+\)"
215syntax match rplIntrinsic	   "\(^\|\s\+\)rci\(j\|\)\ze\($\|\s\+\)"
216syntax match rplIntrinsic	   "\(^\|\s\+\)\(in\|de\)cr\ze\($\|\s\+\)"
217syntax match rplIntrinsic	   "\(^\|\s\+\)bessel\ze\($\|\s\+\)"
218
219syntax match rplIntrinsic	   "\(^\|\s\+\)\(\|g\)egvl\ze\($\|\s\+\)"
220syntax match rplIntrinsic	   "\(^\|\s\+\)\(\|g\)\(\|l\|r\)egv\ze\($\|\s\+\)"
221syntax match rplIntrinsic	   "\(^\|\s\+\)rnrm\ze\($\|\s\+\)"
222syntax match rplIntrinsic	   "\(^\|\s\+\)\(std\|fix\|sci\|eng\)\ze\($\|\s\+\)"
223syntax match rplIntrinsic	   "\(^\|\s\+\)\(rad\|deg\)\ze\($\|\s\+\)"
224syntax match rplIntrinsic	   "\(^\|\s\+\)\(\|n\)rand\ze\($\|\s\+\)"
225syntax match rplIntrinsic	   "\(^\|\s\+\)rdz\ze\($\|\s\+\)"
226syntax match rplIntrinsic	   "\(^\|\s\+\)\(\|i\)fft\ze\($\|\s\+\)"
227syntax match rplIntrinsic	   "\(^\|\s\+\)\(dec\|bin\|oct\|hex\)\ze\($\|\s\+\)"
228syntax match rplIntrinsic	   "\(^\|\s\+\)rclf\ze\($\|\s\+\)"
229syntax match rplIntrinsic	   "\(^\|\s\+\)stof\ze\($\|\s\+\)"
230syntax match rplIntrinsic	   "\(^\|\s\+\)[cs]f\ze\($\|\s\+\)"
231syntax match rplIntrinsic	   "\(^\|\s\+\)chr\ze\($\|\s\+\)"
232syntax match rplIntrinsic	   "\(^\|\s\+\)num\ze\($\|\s\+\)"
233syntax match rplIntrinsic	   "\(^\|\s\+\)pos\ze\($\|\s\+\)"
234syntax match rplIntrinsic	   "\(^\|\s\+\)sub\ze\($\|\s\+\)"
235syntax match rplIntrinsic	   "\(^\|\s\+\)size\ze\($\|\s\+\)"
236syntax match rplIntrinsic	   "\(^\|\s\+\)\(st\|rc\)ws\ze\($\|\s\+\)"
237syntax match rplIntrinsic	   "\(^\|\s\+\)\(r\|s\)\(r\|l\)\(\|b\)\ze\($\|\s\+\)"
238syntax match rplIntrinsic	   "\(^\|\s\+\)as\(r\|l\)\ze\($\|\s\+\)"
239syntax match rplIntrinsic	   "\(^\|\s\+\)\(int\|der\)\ze\($\|\s\+\)"
240syntax match rplIntrinsic	   "\(^\|\s\+\)stos\ze\($\|\s\+\)"
241syntax match rplIntrinsic	   "\(^\|\s\+\)\(\|r\)cls\ze\($\|\s\+\)"
242syntax match rplIntrinsic	   "\(^\|\s\+\)drws\ze\($\|\s\+\)"
243syntax match rplIntrinsic	   "\(^\|\s\+\)scls\ze\($\|\s\+\)"
244syntax match rplIntrinsic	   "\(^\|\s\+\)ns\ze\($\|\s\+\)"
245syntax match rplIntrinsic	   "\(^\|\s\+\)tot\ze\($\|\s\+\)"
246syntax match rplIntrinsic	   "\(^\|\s\+\)mean\ze\($\|\s\+\)"
247syntax match rplIntrinsic	   "\(^\|\s\+\)\(\|p\)sdev\ze\($\|\s\+\)"
248syntax match rplIntrinsic	   "\(^\|\s\+\)\(\|p\)var\ze\($\|\s\+\)"
249syntax match rplIntrinsic	   "\(^\|\s\+\)maxs\ze\($\|\s\+\)"
250syntax match rplIntrinsic	   "\(^\|\s\+\)mins\ze\($\|\s\+\)"
251syntax match rplIntrinsic	   "\(^\|\s\+\)\(\|p\)cov\ze\($\|\s\+\)"
252syntax match rplIntrinsic	   "\(^\|\s\+\)cols\ze\($\|\s\+\)"
253syntax match rplIntrinsic	   "\(^\|\s\+\)s\(x\(\|y\|2\)\|y\(\|2\)\)\ze\($\|\s\+\)"
254syntax match rplIntrinsic	   "\(^\|\s\+\)\(x\|y\)col\ze\($\|\s\+\)"
255syntax match rplIntrinsic	   "\(^\|\s\+\)corr\ze\($\|\s\+\)"
256syntax match rplIntrinsic	   "\(^\|\s\+\)utp[cfnt]\ze\($\|\s\+\)"
257syntax match rplIntrinsic	   "\(^\|\s\+\)comb\ze\($\|\s\+\)"
258syntax match rplIntrinsic	   "\(^\|\s\+\)perm\ze\($\|\s\+\)"
259syntax match rplIntrinsic	   "\(^\|\s\+\)\(\|p\)lu\ze\($\|\s\+\)"
260syntax match rplIntrinsic	   "\(^\|\s\+\)[lu]chol\ze\($\|\s\+\)"
261syntax match rplIntrinsic	   "\(^\|\s\+\)schur\ze\($\|\s\+\)"
262syntax match rplIntrinsic	   "\(^\|\s\+\)%\ze\($\|\s\+\)"
263syntax match rplIntrinsic	   "\(^\|\s\+\)%ch\ze\($\|\s\+\)"
264syntax match rplIntrinsic	   "\(^\|\s\+\)%t\ze\($\|\s\+\)"
265syntax match rplIntrinsic	   "\(^\|\s\+\)hms->\ze\($\|\s\+\)"
266syntax match rplIntrinsic	   "\(^\|\s\+\)->hms\ze\($\|\s\+\)"
267syntax match rplIntrinsic	   "\(^\|\s\+\)hms+\ze\($\|\s\+\)"
268syntax match rplIntrinsic	   "\(^\|\s\+\)hms-\ze\($\|\s\+\)"
269syntax match rplIntrinsic	   "\(^\|\s\+\)d->r\ze\($\|\s\+\)"
270syntax match rplIntrinsic	   "\(^\|\s\+\)r->d\ze\($\|\s\+\)"
271syntax match rplIntrinsic	   "\(^\|\s\+\)b->r\ze\($\|\s\+\)"
272syntax match rplIntrinsic	   "\(^\|\s\+\)r->b\ze\($\|\s\+\)"
273syntax match rplIntrinsic	   "\(^\|\s\+\)c->r\ze\($\|\s\+\)"
274syntax match rplIntrinsic	   "\(^\|\s\+\)r->c\ze\($\|\s\+\)"
275syntax match rplIntrinsic	   "\(^\|\s\+\)r->p\ze\($\|\s\+\)"
276syntax match rplIntrinsic	   "\(^\|\s\+\)p->r\ze\($\|\s\+\)"
277syntax match rplIntrinsic	   "\(^\|\s\+\)str->\ze\($\|\s\+\)"
278syntax match rplIntrinsic	   "\(^\|\s\+\)->str\ze\($\|\s\+\)"
279syntax match rplIntrinsic	   "\(^\|\s\+\)array->\ze\($\|\s\+\)"
280syntax match rplIntrinsic	   "\(^\|\s\+\)->array\ze\($\|\s\+\)"
281syntax match rplIntrinsic	   "\(^\|\s\+\)list->\ze\($\|\s\+\)"
282syntax match rplIntrinsic	   "\(^\|\s\+\)->list\ze\($\|\s\+\)"
283syntax match rplIntrinsic	   "\(^\|\s\+\)s+\ze\($\|\s\+\)"
284syntax match rplIntrinsic	   "\(^\|\s\+\)s-\ze\($\|\s\+\)"
285syntax match rplIntrinsic	   "\(^\|\s\+\)col-\ze\($\|\s\+\)"
286syntax match rplIntrinsic	   "\(^\|\s\+\)col+\ze\($\|\s\+\)"
287syntax match rplIntrinsic	   "\(^\|\s\+\)row-\ze\($\|\s\+\)"
288syntax match rplIntrinsic	   "\(^\|\s\+\)row+\ze\($\|\s\+\)"
289syntax match rplIntrinsic	   "\(^\|\s\+\)->q\ze\($\|\s\+\)"
290
291syntax match rplObsolete	   "\(^\|\s\+\)arry->\ze\($\|\s\+\)"hs=e-5
292syntax match rplObsolete	   "\(^\|\s\+\)->arry\ze\($\|\s\+\)"hs=e-5
293
294" Conditional structures
295syntax match rplConditionalError   "\(^\|\s\+\)case\ze\($\|\s\+\)"hs=e-3
296syntax match rplConditionalError   "\(^\|\s\+\)then\ze\($\|\s\+\)"hs=e-3
297syntax match rplConditionalError   "\(^\|\s\+\)else\ze\($\|\s\+\)"hs=e-3
298syntax match rplConditionalError   "\(^\|\s\+\)elseif\ze\($\|\s\+\)"hs=e-5
299syntax match rplConditionalError   "\(^\|\s\+\)end\ze\($\|\s\+\)"hs=e-2
300syntax match rplConditionalError   "\(^\|\s\+\)\(step\|next\)\ze\($\|\s\+\)"hs=e-3
301syntax match rplConditionalError   "\(^\|\s\+\)until\ze\($\|\s\+\)"hs=e-4
302syntax match rplConditionalError   "\(^\|\s\+\)repeat\ze\($\|\s\+\)"hs=e-5
303syntax match rplConditionalError   "\(^\|\s\+\)default\ze\($\|\s\+\)"hs=e-6
304
305" FOR/(CYCLE)/(EXIT)/NEXT
306" FOR/(CYCLE)/(EXIT)/STEP
307" START/(CYCLE)/(EXIT)/NEXT
308" START/(CYCLE)/(EXIT)/STEP
309syntax match rplCycle              "\(^\|\s\+\)\(cycle\|exit\)\ze\($\|\s\+\)"
310syntax region rplForNext matchgroup=rplRepeat start="\(^\|\s\+\)\(for\|start\)\ze\($\|\s\+\)" end="\(^\|\s\+\)\(next\|step\)\ze\($\|\s\+\)" contains=ALL keepend extend
311
312" ELSEIF/END
313syntax region rplElseifEnd matchgroup=rplConditional start="\(^\|\s\+\)elseif\ze\($\|\s\+\)" end="\(^\|\s\+\)end\ze\($\|\s\+\)" contained contains=ALLBUT,rplElseEnd keepend
314
315" ELSE/END
316syntax region rplElseEnd matchgroup=rplConditional start="\(^\|\s\+\)else\ze\($\|\s\+\)" end="\(^\|\s\+\)end\ze\($\|\s\+\)" contained contains=ALLBUT,rplElseEnd,rplThenEnd,rplElseifEnd keepend
317
318" THEN/END
319syntax region rplThenEnd matchgroup=rplConditional start="\(^\|\s\+\)then\ze\($\|\s\+\)" end="\(^\|\s\+\)end\ze\($\|\s\+\)" contained containedin=rplIfEnd contains=ALLBUT,rplThenEnd keepend
320
321" IF/END
322syntax region rplIfEnd matchgroup=rplConditional start="\(^\|\s\+\)if\(err\|\)\ze\($\|\s\+\)" end="\(^\|\s\+\)end\ze\($\|\s\+\)" contains=ALLBUT,rplElseEnd,rplElseifEnd keepend extend
323" if end is accepted !
324" select end too !
325
326" CASE/THEN
327syntax region rplCaseThen matchgroup=rplConditional start="\(^\|\s\+\)case\ze\($\|\s\+\)" end="\(^\|\s\+\)then\ze\($\|\s\+\)" contains=ALLBUT,rplCaseThen,rplCaseEnd,rplThenEnd keepend extend contained containedin=rplCaseEnd
328
329" CASE/END
330syntax region rplCaseEnd matchgroup=rplConditional start="\(^\|\s\+\)case\ze\($\|\s\+\)" end="\(^\|\s\+\)end\ze\($\|\s\+\)" contains=ALLBUT,rplCaseEnd,rplThenEnd,rplElseEnd keepend extend contained containedin=rplSelectEnd
331
332" DEFAULT/END
333syntax region rplDefaultEnd matchgroup=rplConditional start="\(^\|\s\+\)default\ze\($\|\s\+\)" end="\(^\|\s\+\)end\ze\($\|\s\+\)" contains=ALLBUT,rplDefaultEnd keepend contained containedin=rplSelectEnd
334
335" SELECT/END
336syntax region rplSelectEnd matchgroup=rplConditional start="\(^\|\s\+\)select\ze\($\|\s\+\)" end="\(^\|\s\+\)end\ze\($\|\s\+\)" contains=ALLBUT,rplThenEnd keepend extend
337" select end is accepted !
338
339" DO/UNTIL/END
340syntax region rplUntilEnd matchgroup=rplConditional start="\(^\|\s\+\)until\ze\($\|\s\+\)" end="\(^\|\s\+\)\zsend\ze\($\|\s\+\)" contains=ALLBUT,rplUntilEnd contained containedin=rplDoUntil extend keepend
341syntax region rplDoUntil matchgroup=rplConditional start="\(^\|\s\+\)do\ze\($\|\s\+\)" end="\(^\|\s\+\)until\ze\($\|\s\+\)" contains=ALL keepend extend
342
343" WHILE/REPEAT/END
344syntax region rplRepeatEnd matchgroup=rplConditional start="\(^\|\s\+\)repeat\ze\($\|\s\+\)" end="\(^\|\s\+\)\zsend\ze\($\|\s\+\)" contains=ALLBUT,rplRepeatEnd contained containedin=rplWhileRepeat extend keepend
345syntax region rplWhileRepeat matchgroup=rplConditional start="\(^\|\s\+\)while\ze\($\|\s\+\)" end="\(^\|\s\+\)repeat\ze\($\|\s\+\)" contains=ALL keepend extend
346
347" Comments
348syntax match rplCommentError "\*/"
349syntax region rplCommentString contained start=+"+ end=+"+ end=+\*/+me=s-1
350syntax region rplCommentLine start="\(^\|\s\+\)//\ze" skip="\\$" end="$" contains=NONE keepend extend
351syntax region rplComment start="\(^\|\s\+\)/\*\ze" end="\*/" contains=rplCommentString keepend extend
352
353" Catch errors caused by too many right parentheses
354syntax region rplParen transparent start="(" end=")" contains=ALLBUT,rplParenError,rplComplex,rplIncluded keepend extend
355syntax match rplParenError ")"
356
357" Subroutines
358" Catch errors caused by too many right '>>'
359syntax match rplSubError "\(^\|\s\+\)>>\ze\($\|\s\+\)"hs=e-1
360syntax region rplSub matchgroup=rplSubDelimitor start="\(^\|\s\+\)<<\ze\($\|\s\+\)" end="\(^\|\s\+\)>>\ze\($\|\s\+\)" contains=ALLBUT,rplSubError,rplIncluded,rplDefaultEnd,rplStorageSub keepend extend
361
362" Expressions
363syntax region rplExpr start="\(^\|\s\+\)'" end="'\ze\($\|\s\+\)" contains=rplParen,rplParenError
364
365" Local variables
366syntax match rplStorageError "\(^\|\s\+\)->\ze\($\|\s\+\)"hs=e-1
367syntax region rplStorageSub matchgroup=rplStorage start="\(^\|\s\+\)<<\ze\($\|\s\+\)" end="\(^\|\s\+\)>>\ze\($\|\s\+\)" contains=ALLBUT,rplSubError,rplIncluded,rplDefaultEnd,rplStorageExpr contained containedin=rplLocalStorage keepend extend
368syntax region rplStorageExpr matchgroup=rplStorage start="\(^\|\s\+\)'" end="'\ze\($\|\s\+\)" contains=rplParen,rplParenError extend contained containedin=rplLocalStorage
369syntax region rplLocalStorage matchgroup=rplStorage start="\(^\|\s\+\)->\ze\($\|\s\+\)" end="\(^\|\s\+\)\(<<\ze\($\|\s\+\)\|'\)" contains=rplStorageSub,rplStorageExpr,rplComment,rplCommentLine keepend extend
370
371" Catch errors caused by too many right brackets
372syntax match rplArrayError "\]"
373syntax match rplArray "\]" contained containedin=rplArray
374syntax region rplArray matchgroup=rplArray start="\[" end="\]" contains=ALLBUT,rplArrayError keepend extend
375
376" Catch errors caused by too many right '}'
377syntax match rplListError "}"
378syntax match rplList "}" contained containedin=rplList
379syntax region rplList matchgroup=rplList start="{" end="}" contains=ALLBUT,rplListError,rplIncluded keepend extend
380
381" cpp is used by RPL/2
382syntax match rplPreProc   "\_^#\s*\(define\|undef\)\>"
383syntax match rplPreProc   "\_^#\s*\(warning\|error\)\>"
384syntax match rplPreCondit "\_^#\s*\(if\|ifdef\|ifndef\|elif\|else\|endif\)\>"
385syntax match rplIncluded contained "\<<\s*\S*\s*>\>"
386syntax match rplInclude   "\_^#\s*include\>\s*["<]" contains=rplIncluded,rplString
387"syntax match rplExecPath  "\%^\_^#!\s*\S*"
388syntax match rplExecPath  "\%^\_^#!\p*\_$"
389
390" Any integer
391syntax match rplInteger    "\(^\|\s\+\)[-+]\=\d\+\ze\($\|\s\+\)"
392
393" Floating point number
394" [S][ip].[fp]
395syntax match rplFloat       "\(^\|\s\+\)[-+]\=\(\d*\)\=[\.,]\(\d*\)\=\ze\($\|\s\+\)" contains=ALLBUT,rplPoint,rplSign
396" [S]ip[.fp]E[S]exp
397syntax match rplFloat       "\(^\|\s\+\)[-+]\=\d\+\([\.,]\d*\)\=[eE]\([-+]\)\=\d\+\ze\($\|\s\+\)" contains=ALLBUT,rplPoint,rplSign
398" [S].fpE[S]exp
399syntax match rplFloat       "\(^\|\s\+\)[-+]\=\(\d*\)\=[\.,]\d\+[eE]\([-+]\)\=\d\+\ze\($\|\s\+\)" contains=ALLBUT,rplPoint,rplSign
400syntax match rplPoint      "\<[\.,]\>"
401syntax match rplSign       "\<[+-]\>"
402
403" Complex number
404" (x,y)
405syntax match rplComplex    "\(^\|\s\+\)([-+]\=\(\d*\)\=\.\=\d*\([eE][-+]\=\d\+\)\=\s*,\s*[-+]\=\(\d*\)\=\.\=\d*\([eE][-+]\=\d\+\)\=)\ze\($\|\s\+\)"
406" (x.y)
407syntax match rplComplex    "\(^\|\s\+\)([-+]\=\(\d*\)\=,\=\d*\([eE][-+]\=\d\+\)\=\s*\.\s*[-+]\=\(\d*\)\=,\=\d*\([eE][-+]\=\d\+\)\=)\ze\($\|\s\+\)"
408
409" Strings
410syntax match rplStringGuilles       "\\\""
411syntax match rplStringAntislash     "\\\\"
412syntax region rplString start=+\(^\|\s\+\)"+ end=+"\ze\($\|\s\+\)+ contains=rplStringGuilles,rplStringAntislash
413
414syntax match rplTab "\t"  transparent
415
416" Define the default highlighting.
417" Only when an item doesn't have highlighting yet
418
419" The default highlighting.
420
421hi def link rplControl		Statement
422hi def link rplStatement		Statement
423hi def link rplAlgConditional	Conditional
424hi def link rplConditional		Repeat
425hi def link rplConditionalError	Error
426hi def link rplRepeat		Repeat
427hi def link rplCycle		Repeat
428hi def link rplUntil		Repeat
429hi def link rplIntrinsic		Special
430hi def link rplStorage		StorageClass
431hi def link rplStorageExpr		StorageClass
432hi def link rplStorageError	Error
433hi def link rplReadWrite		rplIntrinsic
434
435hi def link rplOperator		Operator
436
437hi def link rplList		Special
438hi def link rplArray		Special
439hi def link rplConstant		Identifier
440hi def link rplExpr		Type
441
442hi def link rplString		String
443hi def link rplStringGuilles	String
444hi def link rplStringAntislash	String
445
446hi def link rplBinary		Boolean
447hi def link rplOctal		Boolean
448hi def link rplDecimal		Boolean
449hi def link rplHexadecimal		Boolean
450hi def link rplInteger		Number
451hi def link rplFloat		Float
452hi def link rplComplex		Float
453hi def link rplBoolean		Identifier
454
455hi def link rplObsolete		Todo
456
457hi def link rplPreCondit		PreCondit
458hi def link rplInclude		Include
459hi def link rplIncluded		rplString
460hi def link rplInclude		Include
461hi def link rplExecPath		Include
462hi def link rplPreProc		PreProc
463hi def link rplComment		Comment
464hi def link rplCommentLine		Comment
465hi def link rplCommentString	Comment
466hi def link rplSubDelimitor	rplStorage
467hi def link rplCommentError	Error
468hi def link rplParenError		Error
469hi def link rplSubError		Error
470hi def link rplArrayError		Error
471hi def link rplListError		Error
472hi def link rplTab			Error
473hi def link rplBinaryError		Error
474hi def link rplOctalError		Error
475hi def link rplDecimalError	Error
476hi def link rplHexadecimalError	Error
477
478
479let b:current_syntax = "rpl"
480
481let &cpo = s:cpo_save
482unlet s:cpo_save
483" vim: ts=8 tw=132
484