home *** CD-ROM | disk | FTP | other *** search
- /**
- * Name: perl
- * Description: Perl programming language.
- *
- * Author: Jim Villani, Logistics Management Institute (jvillani@lmi.org)
- * perl_pod mods by Gregor Purdy (gregor@focusresearch.com)
- */
-
- state perl_pod extends Highligth
- {
- /\\\\./ {
- language_print ($0);
- }
- /^=cut\s*$/ {
- language_print ($0);
- return;
- }
- }
-
- state perl_comment extends Highlight
- {
- /\*\\\// {
- language_print ($0);
- return;
- }
- }
-
- state perl_dquot_string extends Highlight
- {
- /\\\\./ {
- language_print ($0);
- }
- /\"/ {
- language_print ($0);
- return;
- }
- }
-
- state perl_quot_string extends Highlight
- {
- /\\\\./ {
- language_print ($0);
- }
- /[\']/ {
- language_print ($0);
- return;
- }
- }
-
- state perl_bquot_string extends Highlight
- {
- /\\\\./ {
- language_print ($0);
- }
- /`/ {
- language_print ($0);
- return;
- }
- }
-
- state perl extends HighlightEntry
- {
- /* Comments. */
- /#.*$/ {
- comment_face (true);
- language_print ($0);
- comment_face (false);
- }
-
- /* Ignore escaped quote marks */
- /\\\"/ {
- language_print ($0);
- }
- /\\\'/ {
- language_print ($0);
- }
- /\\\`/ {
- language_print ($0);
- }
-
- /* stuff after a -> is a method,
- * don't bold just because it looks like a keyword
- */
- /->\w+/ {
- language_print ($0);
- }
-
- /* stuff between a - and a => is a named parameter,
- * don't bold just because it looks like a keyword
- */
- /-\w+=>/ {
- language_print ($0);
- }
-
- /* In cgi files, JavaScript might be embedded, so we need to look out
- * for the JavaScript comments, because they might contain something
- * we don't like, like a contraction (don't, won't, etc.)
- * We won't put them in comment face, because they are not perl
- * comments.
- */
- /\/\// {
- language_print ($0);
- call (eat_one_line);
- }
-
- /* String constants. */
- /\"/ {
- string_face (true);
- language_print ($0);
- call (perl_dquot_string);
- string_face (false);
- }
- /[\']/ {
- string_face (true);
- language_print ($0);
- call (perl_quot_string);
- string_face (false);
- }
-
- /* Backquoted command string */
- /`/ {
- string_face (true);
- language_print ($0);
- call (perl_bquot_string);
- string_face (false);
- }
-
- /* Variables */
- /[$%@&]+\w+/ {
- keyword_face (false);
- language_print ($0);
- }
-
- /* Keywords. From perl distribution's toke.c
- abs accept alarm and atan2 bind binmode bless caller chdir chmod
- chomp chop chown chr chroot close closedir cmp connect continue cos
- crypt dbmclose dbmopen defined delete die do dump each else elsif
- endgrent endhostent endnetent endprotoent endpwent endservent eof
- eq eval exec exists exit exp fcntl fileno flock for foreach fork
- format formline ge getc getgrent getgrgid getgrnam gethostbyaddr
- gethostbyname gethostent getlogin getnetbyaddr getnetbyname
- getnetent getpeername getpgrp getppid getpriority getprotobyname
- getprotobynumber getprotoent getpwent getpwnam getpwuid getservbyname
- getservbyport getservent getsockname getsockopt glob gmtime goto
- grep gt hex if index int ioctl join keys kill last lc lcfirst le
- length link listen local localtime log lstat lt m map mkdir msgctl
- msgget msgrcv msgsnd my ne new next no not oct open opendir or ord
- pack package pipe pop pos print printf prototype push q qq quotemeta
- qw qx rand read readdir readline readlink readpipe recv redo ref
- rename require reset return reverse rewinddir rindex rmdir s scalar
- seek seekdir select semctl semget semop send setgrent sethostent
- setnetent setpgrp setpriority setprotoent setpwent setservent
- setsockopt shift shmctl shmget shmread shmwrite shutdown sin sleep
- socket socketpair sort splice split sprintf sqrt srand stat study
- sub substr symlink syscall sysopen sysread sysseek system syswrite
- tell telldir tie tied time times tr truncate uc ucfirst umask undef
- unless unlink unpack unshift untie until use utime values vec wait
- waitpid wantarray warn while write x xor y
- */
- /\b(a(bs|ccept|larm|nd|tan2)|b(in(d|mode)|less)|c(aller|h(dir|mod\
- |o(mp|p|wn)|r(|oot))|lose(|dir)|mp|o(n(nect|tinue)|s)|rypt)\
- |d(bm(close|open)|e(fined|lete)|ie|o|ump)|e(ach|ls(e|if)|nd(gr|host|net|proto\
- |pw|serv)ent|of|q|val|x(ec|i(sts|t)|p))|f(cntl|ileno|lock|or(|each|k\
- |m(at|line)))|g(e(|t(c|gr(ent|gid|nam)|host(by(addr|name)|ent)|login\
- |net(by(addr|name)|ent)|p(eername|grp|pid|riority|roto(by(addr|name|number)\
- |ent)|w(ent|nam|uid))|s(erv(by(name|port)|ent)|ock(name|opt))))|lob|mtime\
- |oto|rep|t)|hex|i(f|n(t|dex)|octl)|join|k(eys|ill)|l(ast|c(|first)|e(|ngth)\
- |i(nk|sten)|o(cal(|time)|g)|stat|t)|m|m(ap|kdir|sg(ctl|get|rcv|snd)|y)\
- |n(e(|w|xt)|o(|t))|o(ct|pen(|dir)|r(|d))|p(ack(|age)|ipe|o(p|s)|r(int(|f)\
- |ototype)|ush)|q(|q|uotemeta|w|x)|r(and|e(a(d(|dir|lin(e|k)|pipe))|cv\
- |do|f|name|quire|set|turn|verse|winddir)|index|mdir)|s(|calar|e(e(k|kdir)\
- |lect|m(ctl|get|op)|nd|t((gr|host|net)ent|p(grp|r(iority|otoent)|went)\
- |s(ervent|ockopt)))|h(ift|m(ctl|get|read|write)|utdown)|in|leep|o(cke(t|tpair)\
- |rt)|p(li(ce|t)|rintf)|qrt|rand|t(at|udy)|u(b|bstr)|y(mlink|s(call|open|read\
- |s(eek|tem)|write)))|t(ell(|dir)|i(e|ed|m(e|es))|r(|uncate))|u(c(|first)\
- |mask|n(def|l(ess|ink)|pack|shift|ti(e|l))|se|time)|v(alues|ec)|w(a(i(t(|pid))\
- |ntarray|rn)|hile|rite)|x(|or)|y)\b/ {
-
- keyword_face (true);
- language_print ($0);
- keyword_face (false);
- }
-
- /* POD. */
- /^=(pod|head1|head2|item|over|back|for|begin|end)\b.*$/ {
- language_print ($0);
- call (perl_pod);
- }
- }
-
-
- /*
- Local variables:
- mode: c
- End:
- */
-