PageRenderTime 130ms CodeModel.GetById 96ms app.highlight 14ms RepoModel.GetById 2ms app.codeStats 0ms

/jEdit/tags/jedit-4-2-pre14/modes/perl.xml

#
XML | 592 lines | 570 code | 18 blank | 4 comment | 0 complexity | 438738bc44c2af931573e92e411e4120 MD5 | raw file
  1<?xml version="1.0"?>
  2
  3<!DOCTYPE MODE SYSTEM "xmode.dtd">
  4
  5<MODE>
  6	<PROPS>
  7		<PROPERTY NAME="lineComment" VALUE="#" />
  8		<PROPERTY NAME="indentOpenBrackets" VALUE="{" />
  9		<PROPERTY NAME="indentCloseBrackets" VALUE="}" />
 10		<PROPERTY NAME="lineUpClosingBracket" VALUE="true" />
 11	</PROPS>
 12	<RULES ESCAPE="\" HIGHLIGHT_DIGITS="TRUE" IGNORE_CASE="FALSE">
 13		<!-- Comments -->
 14		<EOL_SPAN TYPE="COMMENT1">#</EOL_SPAN>
 15
 16		<!-- TYPE is LABEL so that =head1 and =cut are highlighted as so -->
 17		<SPAN TYPE="LABEL" DELEGATE="POD">
 18			<BEGIN AT_LINE_START="TRUE">=head1</BEGIN>
 19			<END AT_LINE_START="TRUE">=cut</END>
 20		</SPAN>
 21		<SPAN TYPE="LABEL" DELEGATE="POD">
 22			<BEGIN AT_LINE_START="TRUE">=head2</BEGIN>
 23			<END AT_LINE_START="TRUE">=cut</END>
 24		</SPAN>
 25		<SPAN TYPE="LABEL" DELEGATE="POD">
 26			<BEGIN AT_LINE_START="TRUE">=item</BEGIN>
 27			<END AT_LINE_START="TRUE">=cut</END>
 28		</SPAN>
 29		<SPAN TYPE="LABEL" DELEGATE="POD">
 30			<BEGIN AT_LINE_START="TRUE">=over</BEGIN>
 31			<END AT_LINE_START="TRUE">=cut</END>
 32		</SPAN>
 33		<SPAN TYPE="LABEL" DELEGATE="POD">
 34			<BEGIN AT_LINE_START="TRUE">=back</BEGIN>
 35			<END AT_LINE_START="TRUE">=cut</END>
 36		</SPAN>
 37		<SPAN TYPE="LABEL" DELEGATE="POD">
 38			<BEGIN AT_LINE_START="TRUE">=pod</BEGIN>
 39			<END AT_LINE_START="TRUE">=cut</END>
 40		</SPAN>
 41		<SPAN TYPE="LABEL" DELEGATE="POD">
 42			<BEGIN AT_LINE_START="TRUE">=for</BEGIN>
 43			<END AT_LINE_START="TRUE">=cut</END>
 44		</SPAN>
 45		<SPAN TYPE="LABEL" DELEGATE="POD">
 46			<BEGIN AT_LINE_START="TRUE">=begin</BEGIN>
 47			<END AT_LINE_START="TRUE">=cut</END>
 48		</SPAN>
 49		<SPAN TYPE="LABEL" DELEGATE="POD">
 50			<BEGIN AT_LINE_START="TRUE">=end</BEGIN>
 51			<END AT_LINE_START="TRUE">=cut</END>
 52		</SPAN>
 53
 54		<!-- Variables -->
 55		<SEQ TYPE="KEYWORD2">$`</SEQ>
 56		<SEQ TYPE="KEYWORD2">$'</SEQ>
 57		<SEQ TYPE="KEYWORD2">$"</SEQ>
 58
 59		<SPAN TYPE="KEYWORD2" NO_LINE_BREAK="TRUE" DELEGATE="VARIABLE">
 60			<BEGIN>${</BEGIN>
 61			<END>}</END>
 62		</SPAN>
 63
 64		<SEQ_REGEXP HASH_CHAR="$" TYPE="KEYWORD2">\$(?:#|\w)+</SEQ_REGEXP>
 65		<SEQ_REGEXP HASH_CHAR="@" TYPE="KEYWORD2">@(?:#|\w)+</SEQ_REGEXP>
 66		<SEQ_REGEXP HASH_CHAR="%" TYPE="KEYWORD2">%(?:#|\w)+</SEQ_REGEXP>
 67
 68		<SPAN TYPE="KEYWORD2" NO_LINE_BREAK="TRUE" DELEGATE="VARIABLE">
 69			<BEGIN>@{</BEGIN>
 70			<END>}</END>
 71		</SPAN>
 72
 73		<SPAN TYPE="KEYWORD2" NO_LINE_BREAK="TRUE" DELEGATE="VARIABLE">
 74			<BEGIN>%{</BEGIN>
 75			<END>}</END>
 76		</SPAN>
 77
 78		<!-- Literals -->
 79		<SPAN TYPE="LITERAL1" DELEGATE="LITERAL">
 80			<BEGIN>"</BEGIN>
 81			<END>"</END>
 82		</SPAN>
 83		<SPAN TYPE="LITERAL1">
 84			<BEGIN>'</BEGIN>
 85			<END>'</END>
 86		</SPAN>
 87
 88		<!-- Exec -->
 89		<SPAN TYPE="KEYWORD3" DELEGATE="EXEC">
 90			<BEGIN>`</BEGIN>
 91			<END>`</END>
 92		</SPAN>
 93
 94		<!-- Heredoc -->
 95		<SPAN_REGEXP HASH_CHAR="<" TYPE="LITERAL2" DELEGATE="LITERAL">
 96		<BEGIN><![CDATA[<<[:space:]*(['"])([[:space:][:alnum:]_]*)\1;?\s*]]></BEGIN>        <END>$2</END>
 97		</SPAN_REGEXP>
 98		<SPAN_REGEXP HASH_CHAR="<" TYPE="LITERAL2" DELEGATE="LITERAL">
 99		<BEGIN><![CDATA[<<([[:alpha:]_][[:alnum:]_]*);?\s*]]></BEGIN>
100		<END>$1</END>
101		</SPAN_REGEXP>
102
103		<!-- jEdit 4.1 adds regular expression syntax rules so we can
104		     highlight this sort of crap. -->
105
106		<SEQ_REGEXP TYPE="MARKUP"
107                        HASH_CHAR="/"
108                        AT_WORD_START="TRUE"
109                >/[^[:blank:]]*?[^\\]/</SEQ_REGEXP>
110
111                <!-- q//, qq//, qr//, qx//, tr///, y///, m//, s/// -->
112                <SEQ_REGEXP TYPE="MARKUP"
113                        HASH_CHAR="q"
114                        AT_WORD_START="TRUE"
115                >q(?:|[qrx])([[:punct:]])(?:.*?[^\\])*?\1</SEQ_REGEXP>
116
117                <SEQ_REGEXP TYPE="MARKUP"
118                        HASH_CHAR="t"
119                        AT_WORD_START="TRUE"
120		>tr([[:punct:]])(?:.*?[^\\])*?\1(?:.*?[^\\])*?\1</SEQ_REGEXP>
121
122                <SEQ_REGEXP TYPE="MARKUP"
123                        HASH_CHAR="y"
124                        AT_WORD_START="TRUE"
125		>y([[:punct:]])(?:.*?[^\\])*?\1(?:.*?[^\\])*?\1</SEQ_REGEXP>
126
127                <SEQ_REGEXP TYPE="MARKUP"
128                        HASH_CHAR="m"
129                        AT_WORD_START="TRUE"
130                >m\{(?:.*?[^\\])*?\}[sgiexom]*</SEQ_REGEXP>
131
132                <SEQ_REGEXP TYPE="MARKUP"
133                        HASH_CHAR="m"
134                        AT_WORD_START="TRUE"
135                >m([[:punct:]])(?:.*?[^\\])*?\1[sgiexom]*</SEQ_REGEXP>
136
137		<SEQ_REGEXP TYPE="MARKUP"
138                        HASH_CHAR="s"
139                        AT_WORD_START="TRUE"
140                >s\s*\{(?:.*?[^\\])*?\}\s*\{(?:.*?[^\\])*?\}[sgiexom]*</SEQ_REGEXP>
141
142		<SEQ_REGEXP TYPE="MARKUP"
143                        HASH_CHAR="s"
144                        AT_WORD_START="TRUE"
145		>s([[:punct:]])(?:.*?[^\\])*?\1(?:.*?[^\\])*?\1[sgiexom]*</SEQ_REGEXP>
146		<!-- // -->
147		<SEQ_REGEXP TYPE="MARKUP"
148			HASH_CHAR="/"
149			AT_WORD_START="TRUE"
150		>/[^[:blank:]]*?/</SEQ_REGEXP>
151
152		<!-- Operators -->
153		<SEQ TYPE="OPERATOR">|</SEQ>
154		<SEQ TYPE="OPERATOR">&amp;</SEQ>
155		<SEQ TYPE="OPERATOR">!</SEQ>
156		<SEQ TYPE="OPERATOR">&gt;=</SEQ>
157		<SEQ TYPE="OPERATOR">&lt;=</SEQ>
158		<SEQ TYPE="OPERATOR">&gt;</SEQ>
159		<SEQ TYPE="OPERATOR">&lt;</SEQ>
160		<SEQ TYPE="OPERATOR">=</SEQ>
161		<SEQ TYPE="OPERATOR">!</SEQ>
162		<SEQ TYPE="OPERATOR">+</SEQ>
163		<SEQ TYPE="OPERATOR">-</SEQ>
164		<SEQ TYPE="OPERATOR">/</SEQ>
165		<SEQ TYPE="OPERATOR">*</SEQ>
166		<SEQ TYPE="OPERATOR">^</SEQ>
167		<SEQ TYPE="OPERATOR">~</SEQ>
168		<SEQ TYPE="OPERATOR">}</SEQ>
169		<SEQ TYPE="OPERATOR">{</SEQ>
170		<SEQ TYPE="OPERATOR">?</SEQ>
171		<SEQ TYPE="OPERATOR">:</SEQ>
172
173		<!-- Keywords -->
174		<KEYWORDS>
175			<KEYWORD1>new</KEYWORD1>
176			<KEYWORD1>if</KEYWORD1>
177			<KEYWORD1>until</KEYWORD1>
178			<KEYWORD1>while</KEYWORD1>
179			<KEYWORD1>elsif</KEYWORD1>
180			<KEYWORD1>else</KEYWORD1>
181			<KEYWORD1>unless</KEYWORD1>
182			<KEYWORD1>for</KEYWORD1>
183			<KEYWORD1>foreach</KEYWORD1>
184			<KEYWORD1>BEGIN</KEYWORD1>
185			<KEYWORD1>END</KEYWORD1>
186
187			<OPERATOR>cmp</OPERATOR>
188			<OPERATOR>eq</OPERATOR>
189			<OPERATOR>ne</OPERATOR>
190			<OPERATOR>le</OPERATOR>
191			<OPERATOR>ge</OPERATOR>
192			<OPERATOR>not</OPERATOR>
193			<OPERATOR>and</OPERATOR>
194			<OPERATOR>or</OPERATOR>
195			<OPERATOR>xor</OPERATOR>
196
197			<!-- At least attempt to highlight 'x', although this misses some -->
198			<OPERATOR>x</OPERATOR>
199
200			<!--
201				The following function list was derived from the perlfunc man
202				page, Perl version 5.00503
203
204				Certain keywords have been commented out where they appear more
205				than once, and the y///, qx//, etc. functions have been removed,
206				since they would are colorized not as keywords, but with separate
207				rules.
208			-->
209
210			<!-- Functions for SCALARs or strings -->
211			<KEYWORD3>chomp</KEYWORD3>
212			<KEYWORD3>chop</KEYWORD3>
213			<KEYWORD3>chr</KEYWORD3>
214			<KEYWORD3>crypt</KEYWORD3>
215			<KEYWORD3>hex</KEYWORD3>
216			<KEYWORD3>index</KEYWORD3>
217			<KEYWORD3>lc</KEYWORD3>
218			<KEYWORD3>lcfirst</KEYWORD3>
219			<KEYWORD3>length</KEYWORD3>
220			<KEYWORD3>oct</KEYWORD3>
221			<KEYWORD3>ord</KEYWORD3>
222			<KEYWORD3>pack</KEYWORD3>
223			<KEYWORD3>reverse</KEYWORD3>
224			<KEYWORD3>rindex</KEYWORD3>
225			<KEYWORD3>sprintf</KEYWORD3>
226			<KEYWORD3>substr</KEYWORD3>
227			<KEYWORD3>uc</KEYWORD3>
228			<KEYWORD3>ucfirst</KEYWORD3>
229
230			<!-- Regular expressions and pattern matching -->
231			<KEYWORD3>pos</KEYWORD3>
232			<KEYWORD3>quotemeta</KEYWORD3>
233			<KEYWORD3>split</KEYWORD3>
234			<KEYWORD3>study</KEYWORD3>
235
236			<!-- Numeric functions -->
237			<KEYWORD3>abs</KEYWORD3>
238			<KEYWORD3>atan2</KEYWORD3>
239			<KEYWORD3>cos</KEYWORD3>
240			<KEYWORD3>exp</KEYWORD3>
241			<!--<KEYWORD3>hex</KEYWORD3>-->
242			<KEYWORD3>int</KEYWORD3>
243			<KEYWORD3>log</KEYWORD3>
244			<!--<KEYWORD3>oct</KEYWORD3>-->
245			<KEYWORD3>rand</KEYWORD3>
246			<KEYWORD3>sin</KEYWORD3>
247			<KEYWORD3>sqrt</KEYWORD3>
248			<KEYWORD3>srand</KEYWORD3>
249
250			<!-- Functions for real @ARRAYs -->
251			<KEYWORD3>pop</KEYWORD3>
252			<KEYWORD3>push</KEYWORD3>
253			<KEYWORD3>shift</KEYWORD3>
254			<KEYWORD3>splice</KEYWORD3>
255			<KEYWORD3>unshift</KEYWORD3>
256
257			<!-- Functions for list data -->
258			<KEYWORD3>grep</KEYWORD3>
259			<KEYWORD3>join</KEYWORD3>
260			<KEYWORD3>map</KEYWORD3>
261			<!--<KEYWORD3>reverse</KEYWORD3>-->
262			<KEYWORD3>sort</KEYWORD3>
263			<KEYWORD3>unpack</KEYWORD3>
264
265			<!-- Functions for real %HASHes -->
266			<KEYWORD3>delete</KEYWORD3>
267			<KEYWORD3>each</KEYWORD3>
268			<KEYWORD3>exists</KEYWORD3>
269			<KEYWORD3>keys</KEYWORD3>
270			<KEYWORD3>values</KEYWORD3>
271
272			<!-- Input and output functions -->
273			<KEYWORD3>binmode</KEYWORD3>
274			<KEYWORD3>close</KEYWORD3>
275			<KEYWORD3>closedir</KEYWORD3>
276			<KEYWORD3>dbmclose</KEYWORD3>
277			<KEYWORD3>dbmopen</KEYWORD3>
278			<!--<KEYWORD3>die</KEYWORD3>-->
279			<KEYWORD3>eof</KEYWORD3>
280			<KEYWORD3>fileno</KEYWORD3>
281			<KEYWORD3>flock</KEYWORD3>
282			<KEYWORD3>format</KEYWORD3>
283			<KEYWORD3>getc</KEYWORD3>
284			<KEYWORD3>print</KEYWORD3>
285			<KEYWORD3>printf</KEYWORD3>
286			<KEYWORD3>read</KEYWORD3>
287			<KEYWORD3>readdir</KEYWORD3>
288			<KEYWORD3>rewinddir</KEYWORD3>
289			<KEYWORD3>seek</KEYWORD3>
290			<KEYWORD3>seekdir</KEYWORD3>
291			<KEYWORD3>select</KEYWORD3>
292			<KEYWORD3>syscall</KEYWORD3>
293			<KEYWORD3>sysread</KEYWORD3>
294			<KEYWORD3>sysseek</KEYWORD3>
295			<KEYWORD3>syswrite</KEYWORD3>
296			<KEYWORD3>tell</KEYWORD3>
297			<KEYWORD3>telldir</KEYWORD3>
298			<KEYWORD3>truncate</KEYWORD3>
299			<KEYWORD3>warn</KEYWORD3>
300			<KEYWORD3>write</KEYWORD3>
301
302			<!-- Functions for fixed length data or records -->
303			<!--<KEYWORD3>pack</KEYWORD3>-->
304			<!--<KEYWORD3>read</KEYWORD3>-->
305			<!--<KEYWORD3>syscall</KEYWORD3>-->
306			<!--<KEYWORD3>sysread</KEYWORD3>-->
307			<!--<KEYWORD3>syswrite</KEYWORD3>-->
308			<!--<KEYWORD3>unpack</KEYWORD3>-->
309			<KEYWORD3>vec</KEYWORD3>
310
311			<!-- Functions for filehandles, files, or directories -->
312			<KEYWORD3>chdir</KEYWORD3>
313			<KEYWORD3>chmod</KEYWORD3>
314			<KEYWORD3>chown</KEYWORD3>
315			<KEYWORD3>chroot</KEYWORD3>
316			<KEYWORD3>fcntl</KEYWORD3>
317			<KEYWORD3>glob</KEYWORD3>
318			<KEYWORD3>ioctl</KEYWORD3>
319			<KEYWORD3>link</KEYWORD3>
320			<KEYWORD3>lstat</KEYWORD3>
321			<KEYWORD3>mkdir</KEYWORD3>
322			<KEYWORD3>open</KEYWORD3>
323			<KEYWORD3>opendir</KEYWORD3>
324			<KEYWORD3>readlink</KEYWORD3>
325			<KEYWORD3>rename</KEYWORD3>
326			<KEYWORD3>rmdir</KEYWORD3>
327			<KEYWORD3>stat</KEYWORD3>
328			<KEYWORD3>symlink</KEYWORD3>
329			<KEYWORD3>umask</KEYWORD3>
330			<KEYWORD3>unlink</KEYWORD3>
331			<KEYWORD3>utime</KEYWORD3>
332
333			<!-- Keywords related to the control flow of your perl program -->
334			<KEYWORD1>caller</KEYWORD1>
335			<KEYWORD1>continue</KEYWORD1>
336			<KEYWORD1>die</KEYWORD1>
337			<KEYWORD1>do</KEYWORD1>
338			<KEYWORD1>dump</KEYWORD1>
339			<KEYWORD1>eval</KEYWORD1>
340			<KEYWORD1>exit</KEYWORD1>
341			<KEYWORD1>goto</KEYWORD1>
342			<KEYWORD1>last</KEYWORD1>
343			<KEYWORD1>next</KEYWORD1>
344			<KEYWORD1>redo</KEYWORD1>
345			<KEYWORD1>return</KEYWORD1>
346			<KEYWORD1>sub</KEYWORD1>
347			<KEYWORD1>wantarray</KEYWORD1>
348
349			<!-- Keywords related to scoping -->
350			<!--<KEYWORD1>caller</KEYWORD1>-->
351			<!--<KEYWORD1>import</KEYWORD1>-->
352			<KEYWORD1>local</KEYWORD1>
353			<KEYWORD1>my</KEYWORD1>
354			<KEYWORD1>our</KEYWORD1>
355			<KEYWORD1>package</KEYWORD1>
356			<KEYWORD1>use</KEYWORD1>
357
358			<!-- Miscellaneous functions -->
359			<KEYWORD3>defined</KEYWORD3>
360			<!--<KEYWORD3>dump</KEYWORD3>-->
361			<!--<KEYWORD3>eval</KEYWORD3>-->
362			<KEYWORD3>formline</KEYWORD3>
363			<!--<KEYWORD3>local</KEYWORD3>-->
364			<!--<KEYWORD3>my</KEYWORD3>-->
365			<KEYWORD3>reset</KEYWORD3>
366			<KEYWORD3>scalar</KEYWORD3>
367			<KEYWORD3>undef</KEYWORD3>
368			<!--<KEYWORD3>wantarray</KEYWORD3>-->
369
370			<!-- Functions for processes and process groups -->
371			<KEYWORD3>alarm</KEYWORD3>
372			<KEYWORD3>exec</KEYWORD3>
373			<KEYWORD3>fork</KEYWORD3>
374			<KEYWORD3>getpgrp</KEYWORD3>
375			<KEYWORD3>getppid</KEYWORD3>
376			<KEYWORD3>getpriority</KEYWORD3>
377			<KEYWORD3>kill</KEYWORD3>
378			<KEYWORD3>pipe</KEYWORD3>
379			<KEYWORD3>setpgrp</KEYWORD3>
380			<KEYWORD3>setpriority</KEYWORD3>
381			<KEYWORD3>sleep</KEYWORD3>
382			<KEYWORD3>system</KEYWORD3>
383			<KEYWORD3>times</KEYWORD3>
384			<KEYWORD3>wait</KEYWORD3>
385			<KEYWORD3>waitpid</KEYWORD3>
386
387			<!-- Keywords related to perl modules -->
388			<!--<KEYWORD1>do</KEYWORD1>-->
389			<KEYWORD1>import</KEYWORD1>
390			<KEYWORD1>no</KEYWORD1>
391			<!--<KEYWORD1>package</KEYWORD1>-->
392			<KEYWORD1>require</KEYWORD1>
393			<!--<KEYWORD1>use</KEYWORD1>-->
394
395			<!-- Keywords related to classes and object-orientedness -->
396			<KEYWORD3>bless</KEYWORD3>
397			<!--<KEYWORD3>dbmclose</KEYWORD3>-->
398			<!--<KEYWORD3>dbmopen</KEYWORD3>-->
399			<!--<KEYWORD3>package</KEYWORD3>-->
400			<KEYWORD3>ref</KEYWORD3>
401			<KEYWORD3>tie</KEYWORD3>
402			<KEYWORD3>tied</KEYWORD3>
403			<KEYWORD3>untie</KEYWORD3>
404			<!--<KEYWORD3>use</KEYWORD3>-->
405
406			<!-- Low-level socket functions -->
407			<KEYWORD3>accept</KEYWORD3>
408			<KEYWORD3>bind</KEYWORD3>
409			<KEYWORD3>connect</KEYWORD3>
410			<KEYWORD3>getpeername</KEYWORD3>
411			<KEYWORD3>getsockname</KEYWORD3>
412			<KEYWORD3>getsockopt</KEYWORD3>
413			<KEYWORD3>listen</KEYWORD3>
414			<KEYWORD3>recv</KEYWORD3>
415			<KEYWORD3>send</KEYWORD3>
416			<KEYWORD3>setsockopt</KEYWORD3>
417			<KEYWORD3>shutdown</KEYWORD3>
418			<KEYWORD3>socket</KEYWORD3>
419			<KEYWORD3>socketpair</KEYWORD3>
420
421			<!-- System V interprocess communication functions -->
422			<KEYWORD3>msgctl</KEYWORD3>
423			<KEYWORD3>msgget</KEYWORD3>
424			<KEYWORD3>msgrcv</KEYWORD3>
425			<KEYWORD3>msgsnd</KEYWORD3>
426			<KEYWORD3>semctl</KEYWORD3>
427			<KEYWORD3>semget</KEYWORD3>
428
429			<KEYWORD3>semop</KEYWORD3>
430			<KEYWORD3>shmctl</KEYWORD3>
431			<KEYWORD3>shmget</KEYWORD3>
432			<KEYWORD3>shmread</KEYWORD3>
433			<KEYWORD3>shmwrite</KEYWORD3>
434
435			<!-- Fetching user and group info -->
436			<KEYWORD3>endgrent</KEYWORD3>
437			<KEYWORD3>endhostent</KEYWORD3>
438			<KEYWORD3>endnetent</KEYWORD3>
439			<KEYWORD3>endpwent</KEYWORD3>
440			<KEYWORD3>getgrent</KEYWORD3>
441			<KEYWORD3>getgrgid</KEYWORD3>
442			<KEYWORD3>getgrnam</KEYWORD3>
443			<KEYWORD3>getlogin</KEYWORD3>
444			<KEYWORD3>getpwent</KEYWORD3>
445			<KEYWORD3>getpwnam</KEYWORD3>
446			<KEYWORD3>getpwuid</KEYWORD3>
447			<KEYWORD3>setgrent</KEYWORD3>
448			<KEYWORD3>setpwent</KEYWORD3>
449
450			<!-- Fetching network info -->
451			<KEYWORD3>endprotoent</KEYWORD3>
452			<KEYWORD3>endservent</KEYWORD3>
453			<KEYWORD3>gethostbyaddr</KEYWORD3>
454			<KEYWORD3>gethostbyname</KEYWORD3>
455			<KEYWORD3>gethostent</KEYWORD3>
456			<KEYWORD3>getnetbyaddr</KEYWORD3>
457			<KEYWORD3>getnetbyname</KEYWORD3>
458			<KEYWORD3>getnetent</KEYWORD3>
459			<KEYWORD3>getprotobyname</KEYWORD3>
460			<KEYWORD3>getprotobynumber</KEYWORD3>
461			<KEYWORD3>getprotoent</KEYWORD3>
462			<KEYWORD3>getservbyname</KEYWORD3>
463			<KEYWORD3>getservbyport</KEYWORD3>
464			<KEYWORD3>getservent</KEYWORD3>
465			<KEYWORD3>sethostent</KEYWORD3>
466			<KEYWORD3>setnetent</KEYWORD3>
467			<KEYWORD3>setprotoent</KEYWORD3>
468			<KEYWORD3>setservent</KEYWORD3>
469
470			<!-- Time-related functions -->
471			<KEYWORD3>gmtime</KEYWORD3>
472			<KEYWORD3>localtime</KEYWORD3>
473			<KEYWORD3>time</KEYWORD3>
474			<!--<KEYWORD3>times</KEYWORD3>-->
475		</KEYWORDS>
476	</RULES>
477
478	<RULES SET="POD" DEFAULT="COMMENT2">
479		<MARK_FOLLOWING TYPE="LABEL" AT_LINE_START="TRUE">=</MARK_FOLLOWING>
480	</RULES>
481
482	<RULES SET="LITERAL" DEFAULT="LITERAL1" ESCAPE="\">
483		<!-- Variables -->
484		<SPAN TYPE="KEYWORD2" NO_LINE_BREAK="TRUE" DELEGATE="VARIABLE">
485			<BEGIN>${</BEGIN>
486			<END>}</END>
487		</SPAN>
488
489		<MARK_FOLLOWING TYPE="KEYWORD2">$#</MARK_FOLLOWING>
490		<MARK_FOLLOWING TYPE="KEYWORD2">$</MARK_FOLLOWING>
491
492		<SPAN TYPE="KEYWORD2" NO_LINE_BREAK="TRUE" DELEGATE="VARIABLE">
493			<BEGIN>@{</BEGIN>
494			<END>}</END>
495		</SPAN>
496
497		<MARK_FOLLOWING TYPE="KEYWORD2">@</MARK_FOLLOWING>
498
499		<SPAN TYPE="KEYWORD2" NO_LINE_BREAK="TRUE" DELEGATE="VARIABLE">
500			<BEGIN>%{</BEGIN>
501			<END>}</END>
502		</SPAN>
503
504		<MARK_FOLLOWING TYPE="KEYWORD2">%</MARK_FOLLOWING>
505
506		<SEQ TYPE="LITERAL1">|</SEQ>
507		<SEQ TYPE="LITERAL1">&amp;</SEQ>
508		<SEQ TYPE="LITERAL1">!</SEQ>
509		<SEQ TYPE="LITERAL1">&gt;</SEQ>
510		<SEQ TYPE="LITERAL1">&lt;</SEQ>
511		<SEQ TYPE="LITERAL1">)</SEQ>
512		<SEQ TYPE="LITERAL1">(</SEQ>
513		<SEQ TYPE="LITERAL1">=</SEQ>
514		<SEQ TYPE="LITERAL1">!</SEQ>
515		<SEQ TYPE="LITERAL1">+</SEQ>
516		<SEQ TYPE="LITERAL1">-</SEQ>
517		<SEQ TYPE="LITERAL1">/</SEQ>
518		<SEQ TYPE="LITERAL1">*</SEQ>
519		<SEQ TYPE="LITERAL1">^</SEQ>
520		<SEQ TYPE="LITERAL1">~</SEQ>
521		<SEQ TYPE="LITERAL1">}</SEQ>
522		<SEQ TYPE="LITERAL1">{</SEQ>
523		<SEQ TYPE="LITERAL1">.</SEQ>
524		<SEQ TYPE="LITERAL1">,</SEQ>
525		<SEQ TYPE="LITERAL1">;</SEQ>
526		<SEQ TYPE="LITERAL1">]</SEQ>
527		<SEQ TYPE="LITERAL1">[</SEQ>
528		<SEQ TYPE="LITERAL1">?</SEQ>
529		<SEQ TYPE="LITERAL1">:</SEQ>
530	</RULES>
531
532	<RULES SET="EXEC" DEFAULT="KEYWORD3" ESCAPE="\">
533		<!-- Comments -->
534		<EOL_SPAN TYPE="COMMENT1">#</EOL_SPAN>
535
536		<!-- Variables -->
537		<SPAN TYPE="KEYWORD2" NO_LINE_BREAK="TRUE">
538			<BEGIN>${</BEGIN>
539			<END>}</END>
540		</SPAN>
541
542		<MARK_FOLLOWING TYPE="KEYWORD2">$#</MARK_FOLLOWING>
543		<MARK_FOLLOWING TYPE="KEYWORD2">$</MARK_FOLLOWING>
544
545		<SPAN TYPE="KEYWORD2" NO_LINE_BREAK="TRUE">
546			<BEGIN>@{</BEGIN>
547			<END>}</END>
548		</SPAN>
549
550		<MARK_FOLLOWING TYPE="KEYWORD2">@</MARK_FOLLOWING>
551
552		<SPAN TYPE="KEYWORD2" NO_LINE_BREAK="TRUE">
553			<BEGIN>%{</BEGIN>
554			<END>}</END>
555		</SPAN>
556
557		<MARK_FOLLOWING TYPE="KEYWORD2">%</MARK_FOLLOWING>
558	</RULES>
559
560	<RULES SET="VARIABLE" DEFAULT="KEYWORD2" ESCAPE="\">
561		<SPAN TYPE="KEYWORD2" NO_LINE_BREAK="TRUE" DELEGATE="VARIABLE">
562			<BEGIN>{</BEGIN>
563			<END>}</END>
564		</SPAN>
565
566		<SEQ TYPE="OPERATOR">-&gt;</SEQ>
567	</RULES>
568
569	<RULES SET="REGEXP" DEFAULT="MARKUP" ESCAPE="\">
570		<SEQ TYPE="MARKUP">)(</SEQ>
571		<SEQ TYPE="MARKUP">)[</SEQ>
572		<SEQ TYPE="MARKUP">){</SEQ>
573		<SEQ TYPE="MARKUP">](</SEQ>
574		<SEQ TYPE="MARKUP">][</SEQ>
575		<SEQ TYPE="MARKUP">]{</SEQ>
576		<SEQ TYPE="MARKUP">}(</SEQ>
577		<SEQ TYPE="MARKUP">}[</SEQ>
578		<SEQ TYPE="MARKUP">}{</SEQ>
579		<SPAN TYPE="MARKUP" DELEGATE="REGEXP">
580			<BEGIN>(</BEGIN>
581			<END>)</END>
582		</SPAN>
583		<SPAN TYPE="MARKUP" DELEGATE="REGEXP">
584			<BEGIN>[</BEGIN>
585			<END>]</END>
586		</SPAN>
587		<SPAN TYPE="MARKUP" DELEGATE="REGEXP">
588			<BEGIN>{</BEGIN>
589			<END>}</END>
590		</SPAN>
591	</RULES>
592</MODE>