PageRenderTime 39ms CodeModel.GetById 29ms app.highlight 6ms RepoModel.GetById 1ms app.codeStats 0ms

/jEdit/tags/jedit-4-3-pre5/modes/perl.xml

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