Subversion-Projekte lars-tiefland.prado

Revision

Details | Letzte Änderung | Log anzeigen | RSS feed

Revision Autor Zeilennr. Zeile
1 lars 1
<?xml version="1.0"?>
2
<!-- $Id: perl.xml,v 1.1 2007/06/03 02:35:28 ssttoo Exp $ -->
3
 
4
<highlight lang="perl" case = "yes">
5
 
6
  <authors>
7
    <author name="Mariusz 'kg' Jakubowski" email="kg@alternatywa.info" jid="kg@chrome.pl"/>
8
    <author name="Andrey Demenev" email="demenev@gmail.com"/>
9
  </authors>
10
 
11
  <comment>This highlighter is EXPERIMENTAL, so that it may work incorrectly.
12
Most rules were created by Mariusz Jakubowski, and extended by me.
13
My  knowledge  of  Perl  is  poor,  and  Perl  syntax  seems  too
14
complicated to me.</comment>
15
 
16
  <default innerClass="code"/>
17
 
18
  <block name="interpreter" match="/^(#!)(.*)/m" innerClass="special">
19
   <partClass index="1" innerClass="special" />
20
   <partClass index="2" innerClass="string" />
21
  </block>
22
 
23
  <region name="pod" innerClass="comment" start="/^=\w+/m" end="/^=cut[^\n]*/m" startBOL="yes" endBOL="yes"/>
24
 
25
  <!--
26
  brackets
27
  -->
28
  <region name="block" delimClass="brackets" innerClass="code" start="\{" end="\}">
29
    <contains all="yes"/>
30
  </region>
31
 
32
  <region name="brackets" delimClass="brackets" innerClass="code" start="\(" end="\)">
33
    <contains all="yes"/>
34
  </region>
35
 
36
  <region name="sqbrackets" delimClass="brackets" innerClass="code" start="\[" end="\]">
37
    <contains all="yes"/>
38
  </region>
39
 
40
  <!--
41
  use smth
42
  -->
43
  <block name="usestatement" match="(use)\s+([\w:]*)" innerClass="special">
44
   <partClass index="1" innerClass="reserved" />
45
   <partClass index="2" innerClass="special" />
46
  </block>
47
 
48
  <block name="packagereference" match="[&amp; ](\w{2,}::)+\w{2,}" innerClass="special"/>
49
 
50
  <region name="q-w-q-statement"
51
    start="/\b(q[wq]\s*((\{)|(\()|(\[)|(\&lt;)|([\W\S])))(?=(.*)((?(3)\})(?(4)\))(?(5)\])(?(6)\&gt;)(?(7)\7)))/Us"
52
    end="%b2%"
53
    innerClass="string" delimClass="quotes" remember="yes">
54
 
55
    <contains block="containedvar"/>
56
    <contains block="specialvar"/>
57
    <contains block="curlyvar"/>
58
 
59
  </region>
60
 
61
  <region name="qstatement"
62
    start="/\b(q\s*((\{)|(\()|(\[)|(\&lt;)|([\W\S])))(?=(.*)((?(3)\})(?(4)\))(?(5)\])(?(6)\&gt;)(?(7)\7)))/Us"
63
    end="%b2%"
64
    innerClass="string" delimClass="quotes" remember="yes">
65
 
66
  </region>
67
 
68
  <!--
69
  comments
70
  -->
71
  <block name="comment" match="#.*" innerClass="comment" />
72
 
73
 
74
  <!--
75
  regexpr
76
  FIXME: this should be rewrited
77
  -->
78
  <block name="dblregexprver1" match="/(s|tr) ([|#~`!@$%^&amp;*-+=\\;:'&quot;,.\/?])  ((\\.|[^\\])*?) (\2)((\\.|[^\\])*?)(\2[ecgimosx]*)/x" innerClass="string">
79
   <partClass index="1" innerClass="quotes" />
80
   <partClass index="2" innerClass="quotes" />
81
   <partClass index="3" innerClass="string" />
82
   <partClass index="5" innerClass="quotes" />
83
   <partClass index="6" innerClass="string" />
84
   <partClass index="8" innerClass="quotes" />
85
  </block>
86
 
87
  <block name="dblregexprver2" match="/(m) ([|#~`!@$%^&amp;*-+=\\;:'&quot;,.\/?])  ((\\.|[^\\])*?) (\2[ecgimosx]*)/x" innerClass="string">
88
   <partClass index="1" innerClass="quotes" />
89
   <partClass index="2" innerClass="quotes" />
90
   <partClass index="3" innerClass="string" />
91
   <partClass index="5" innerClass="quotes" />
92
  </block>
93
 
94
 
95
  <region name="regexp" start=" \/" end="\/[cgimosx]*" innerClass="string" delimClass="quotes" case="yes">
96
    <contains block="reescaped"/>
97
  </region>
98
 
99
  <block name="reescaped" match="\\\/" innerClass="string" contained="yes">
100
    <onlyin region="regexp"/>
101
  </block>
102
 
103
  <!--
104
  variables
105
  FIXME: @{...}
106
  -->
107
  <block name="bracketsvars" match="([a-z1-9_]+)(\s*=>)" innerClass="string" contained="yes" case="no">
108
    <partClass index="1" innerClass="string" />
109
    <partClass index="2" innerClass="code" />
110
    <onlyin region="brackets"/>
111
  </block>
112
 
113
  <block name="specialvar" match="\$#?[1-9'`@!]" innerClass="var"/>
114
 
115
  <block name="var" match="(\$#?|[@%*])([a-z1-9_]+::)*([a-z1-9_]+|\^(?-i)[A-Z]?(?i))" innerClass="var" case="no"/>
116
  <block name="containedvar" match="\$([a-z1-9_]+|\^(?-i)[A-Z]?(?i))" innerClass="var" case="no"/>
117
 
118
  <!-- not shure what is this, but the Perlers do it :) -->
119
  <block name="var2" match="(&amp;|\w+)'[\w_']+\b" innerClass="var" case="no"/>
120
 
121
  <block name="classvar" match="(\{)([a-z1-9]+)(\})" innerClass="var" case="no">
122
   <partClass index="1" innerClass="brackets" />
123
   <partClass index="2" innerClass="var" />
124
   <partClass index="3" innerClass="brackets" />
125
  </block>
126
 
127
  <block name="curlyvar" match="[\$@%]#?\{[a-z1-9]+\}" innerClass="var" case="no"/>
128
 
129
  <!--
130
  quotes
131
  -->
132
  <region name="exec" delimClass="quotes" innerClass="string" start="`" end="`">
133
    <contains block="containedvar"/>
134
    <contains block="specialvar"/>
135
    <contains block="curlyvar"/>
136
  </region>
137
 
138
  <region name="strsingle" delimClass="quotes" innerClass="string" start="'" end="'"/>
139
 
140
  <block name="escaped" match="\\\\|\\&quot;|\\'|\\`" innerClass="special" contained="yes">
141
    <onlyin region="qstatement"/>
142
    <onlyin region="strsingle"/>
143
    <onlyin region="exec"/>
144
  </block>
145
 
146
  <region name="strdouble" delimClass="quotes" innerClass="string" start="&quot;" end="&quot;">
147
    <contains block="containedvar"/>
148
    <contains block="specialvar"/>
149
    <contains block="curlyvar"/>
150
  </region>
151
 
152
  <block name="descaped" match="\\[\\&quot;'`tnr\$\{@]" innerClass="special" contained="yes">
153
    <onlyin region="strdouble"/>
154
    <onlyin region="q-w-q-statement"/>
155
  </block>
156
 
157
  <!-- logical op.
158
  <block name="logic" match="\|\||&amp;&amp;" innerClass="reserved" contained="yes"/>-->
159
 
160
  <!--
161
  identifiers
162
  -->
163
  <block name="identifier" match="[a-z_]\w*" innerClass="identifier" case="no"/>
164
 
165
  <!--
166
  numbers
167
  -->
168
  <block name="number" match="\d*\.?\d+" innerClass="number"/>
169
 
170
  <!--
171
  http://www.perldoc.com/perl5.6/pod/perlfunc.html
172
  Alphabetical Listing of Perl Functions
173
  -->
174
  <keywords name="reserved" inherits="identifier" innerClass="reserved" case = "yes">
175
      <keyword match="abs"/>
176
      <keyword match="accept"/>
177
      <keyword match="alarm"/>
178
      <keyword match="atan2"/>
179
 
180
      <keyword match="bind"/>
181
      <keyword match="binmode"/>
182
      <keyword match="bless"/>
183
 
184
      <keyword match="caller"/>
185
      <keyword match="chdir"/>
186
      <keyword match="chmod"/>
187
      <keyword match="chomp"/>
188
      <keyword match="chop"/>
189
      <keyword match="chown"/>
190
      <keyword match="chr"/>
191
      <keyword match="chroot"/>
192
      <keyword match="close"/>
193
      <keyword match="closedir"/>
194
      <keyword match="connect"/>
195
      <keyword match="continue"/>
196
      <keyword match="cos"/>
197
      <keyword match="crypt"/>
198
 
199
      <keyword match="dbmclose"/>
200
      <keyword match="dbmopen"/>
201
      <keyword match="defined"/>
202
      <keyword match="delete"/>
203
      <keyword match="die"/>
204
      <keyword match="do"/>
205
      <keyword match="dump"/>
206
 
207
      <keyword match="each"/>
208
      <keyword match="endgrent"/>
209
      <keyword match="endhostent"/>
210
      <keyword match="endnetent"/>
211
      <keyword match="endprotoent"/>
212
      <keyword match="endpwent"/>
213
      <keyword match="endservent"/>
214
      <keyword match="eof"/>
215
      <keyword match="eval"/>
216
      <keyword match="exec"/>
217
      <keyword match="exists"/>
218
      <keyword match="exit"/>
219
      <keyword match="exp"/>
220
 
221
      <keyword match="fcntl"/>
222
      <keyword match="fileno"/>
223
      <keyword match="flock"/>
224
      <keyword match="fork"/>
225
      <keyword match="format"/>
226
      <keyword match="formline"/>
227
 
228
      <keyword match="getc"/>
229
      <keyword match="getgrent"/>
230
      <keyword match="getgrgid"/>
231
      <keyword match="getgrnam"/>
232
      <keyword match="gethostbyaddr"/>
233
      <keyword match="gethostbyname"/>
234
      <keyword match="gethostent"/>
235
      <keyword match="getlogin"/>
236
      <keyword match="getnetbyaddr"/>
237
      <keyword match="getnetbyname"/>
238
      <keyword match="getnetent"/>
239
      <keyword match="getpeername"/>
240
      <keyword match="getpgrp"/>
241
      <keyword match="getppid"/>
242
      <keyword match="getpriority"/>
243
      <keyword match="getprotobyname"/>
244
      <keyword match="getprotobynumber"/>
245
      <keyword match="getprotoent"/>
246
      <keyword match="getpwent"/>
247
      <keyword match="getpwnam"/>
248
      <keyword match="getpwuid"/>
249
      <keyword match="getservbyname"/>
250
      <keyword match="getservbyport"/>
251
      <keyword match="getservent"/>
252
      <keyword match="getsockname"/>
253
      <keyword match="getsockopt"/>
254
      <keyword match="glob"/>
255
      <keyword match="gmtime"/>
256
      <keyword match="goto"/>
257
      <keyword match="grep"/>
258
 
259
      <keyword match="hex"/>
260
 
261
      <keyword match="import"/>
262
      <keyword match="index"/>
263
      <keyword match="int"/>
264
      <keyword match="ioctl"/>
265
 
266
      <keyword match="join"/>
267
 
268
      <keyword match="keys"/>
269
      <keyword match="kill"/>
270
 
271
      <keyword match="last"/>
272
      <keyword match="lc"/>
273
      <keyword match="lcfirst"/>
274
      <keyword match="length"/>
275
      <keyword match="link"/>
276
      <keyword match="listen"/>
277
      <keyword match="local"/>
278
      <keyword match="localtime"/>
279
      <keyword match="lock"/>
280
      <keyword match="log"/>
281
      <keyword match="lstat"/>
282
 
283
      <!--<keyword match="m"/>-->
284
      <keyword match="map"/>
285
      <keyword match="mkdir"/>
286
      <keyword match="msgctl"/>
287
      <keyword match="msgget"/>
288
      <keyword match="msgrcv"/>
289
      <keyword match="msgsnd"/>
290
      <keyword match="my"/>
291
 
292
      <keyword match="next"/>
293
      <keyword match="no"/>
294
 
295
      <keyword match="oct"/>
296
      <keyword match="open"/>
297
      <keyword match="opendir"/>
298
      <keyword match="ord"/>
299
      <keyword match="our"/>
300
 
301
      <keyword match="pack"/>
302
      <keyword match="package"/>
303
      <keyword match="pipe"/>
304
      <keyword match="pop"/>
305
      <keyword match="pos"/>
306
      <keyword match="print"/>
307
      <keyword match="printf"/>
308
      <keyword match="prototype"/>
309
      <keyword match="push"/>
310
 
311
      <!--<keyword match="q"/>
312
      <keyword match="qq"/>
313
      <keyword match="qr"/>-->
314
      <keyword match="quotemeta"/>
315
      <!--<keyword match="qw"/>
316
      <keyword match="qx"/>-->
317
 
318
      <keyword match="rand"/>
319
      <keyword match="read"/>
320
      <keyword match="readdir"/>
321
      <keyword match="readline"/>
322
      <keyword match="readlink"/>
323
      <keyword match="readpipe"/>
324
      <keyword match="recv"/>
325
      <keyword match="redo"/>
326
      <keyword match="ref"/>
327
      <keyword match="rename"/>
328
      <keyword match="require"/>
329
      <keyword match="reset"/>
330
      <keyword match="return"/>
331
      <keyword match="reverse"/>
332
      <keyword match="rewinddir"/>
333
      <keyword match="rindex"/>
334
      <keyword match="rmdir"/>
335
 
336
      <!--<keyword match="s"/>-->
337
      <keyword match="scalar"/>
338
      <keyword match="seek"/>
339
      <keyword match="seekdir"/>
340
      <keyword match="select"/>
341
      <keyword match="semctl"/>
342
      <keyword match="semget"/>
343
      <keyword match="semop"/>
344
      <keyword match="send"/>
345
      <keyword match="setgrent"/>
346
      <keyword match="sethostent"/>
347
      <keyword match="setnetent"/>
348
      <keyword match="setpgrp"/>
349
      <keyword match="setpriority"/>
350
      <keyword match="setprotoent"/>
351
      <keyword match="setpwent"/>
352
      <keyword match="setservent"/>
353
      <keyword match="setsockopt"/>
354
      <keyword match="shift"/>
355
      <keyword match="shmctl"/>
356
      <keyword match="shmget"/>
357
      <keyword match="shmread"/>
358
      <keyword match="shmwrite"/>
359
      <keyword match="shutdown"/>
360
      <keyword match="sin"/>
361
      <keyword match="sleep"/>
362
      <keyword match="socket"/>
363
      <keyword match="socketpair"/>
364
      <keyword match="sort"/>
365
      <keyword match="splice"/>
366
      <keyword match="split"/>
367
      <keyword match="sprintf"/>
368
      <keyword match="sqrt"/>
369
      <keyword match="srand"/>
370
      <keyword match="stat"/>
371
      <keyword match="study"/>
372
      <keyword match="sub"/>
373
      <keyword match="substr"/>
374
      <keyword match="symlink"/>
375
      <keyword match="syscall"/>
376
      <keyword match="sysopen"/>
377
      <keyword match="sysread"/>
378
      <keyword match="sysseek"/>
379
      <keyword match="system"/>
380
      <keyword match="syswrite"/>
381
 
382
      <keyword match="tell"/>
383
      <keyword match="telldir"/>
384
      <keyword match="tie"/>
385
      <keyword match="tied"/>
386
      <keyword match="time"/>
387
      <keyword match="times"/>
388
      <!--<keyword match="tr"/>-->
389
      <keyword match="truncate"/>
390
 
391
      <keyword match="uc"/>
392
      <keyword match="ucfirst"/>
393
      <keyword match="umask"/>
394
      <keyword match="undef"/>
395
      <keyword match="unlink"/>
396
      <keyword match="unpack"/>
397
      <keyword match="unshift"/>
398
      <keyword match="untie"/>
399
      <keyword match="use"/>
400
      <keyword match="utime"/>
401
 
402
      <keyword match="values"/>
403
      <keyword match="vec"/>
404
 
405
      <keyword match="wait"/>
406
      <keyword match="waitpid"/>
407
      <keyword match="wantarray"/>
408
      <keyword match="warn"/>
409
      <keyword match="write"/>
410
 
411
      <keyword match="y"/>
412
  </keywords>
413
 
414
  <keywords name="missingreserved" inherits="identifier" innerClass="reserved" case = "yes">
415
      <keyword match="new"/>
416
  </keywords>
417
 
418
 
419
  <keywords name="flowcontrol" inherits="identifier" innerClass="reserved" case = "yes">
420
      <keyword match="if"/>
421
      <keyword match="else"/>
422
      <keyword match="elsif"/>
423
      <keyword match="while"/>
424
      <keyword match="unless"/>
425
      <keyword match="for"/>
426
      <keyword match="foreach"/>
427
      <keyword match="until"/>
428
      <keyword match="do"/>
429
      <keyword match="continue"/>
430
      <keyword match="not"/>
431
      <keyword match="or"/>
432
      <keyword match="and"/>
433
      <keyword match="eq"/>
434
      <keyword match="ne"/>
435
      <keyword match="gt"/>
436
      <keyword match="lt"/>
437
  </keywords>
438
 
439
</highlight>