|
jEdit example source code file (perl.xml)
The jEdit perl.xml source code<?xml version="1.0"?> <!DOCTYPE MODE SYSTEM "xmode.dtd"> <MODE> <PROPS> <PROPERTY NAME="lineComment" VALUE="#" /> <PROPERTY NAME="indentOpenBrackets" VALUE="{" /> <PROPERTY NAME="indentCloseBrackets" VALUE="}" /> <PROPERTY NAME="unalignedOpenBrackets" VALUE="(" /> <PROPERTY NAME="unalignedCloseBrackets" VALUE=")" /> <PROPERTY NAME="indentNextLine" VALUE="[^#]*\.\s*$" /> </PROPS> <!-- no ESCAPE char because we need the backslash for references --> <RULES HIGHLIGHT_DIGITS="TRUE" IGNORE_CASE="FALSE"> <!-- Comments --> <EOL_SPAN TYPE="COMMENT1"># <!-- TYPE is LABEL so that =head1 and =cut are highlighted as so --> <SPAN TYPE="LABEL" DELEGATE="POD" AT_LINE_START="TRUE"> <BEGIN>=head1 <END>=cut </SPAN> <SPAN AT_LINE_START="TRUE" TYPE="LABEL" DELEGATE="POD"> <BEGIN>=head2 <END>=cut </SPAN> <SPAN TYPE="LABEL" DELEGATE="POD" AT_LINE_START="TRUE"> <BEGIN>=head3 <END>=cut </SPAN> <SPAN AT_LINE_START="TRUE" TYPE="LABEL" DELEGATE="POD"> <BEGIN>=head4 <END>=cut </SPAN> <SPAN TYPE="LABEL" AT_LINE_START="TRUE" DELEGATE="POD"> <BEGIN>=item <END>=cut </SPAN> <SPAN AT_LINE_START="TRUE" TYPE="LABEL" DELEGATE="POD"> <BEGIN>=over <END>=cut </SPAN> <SPAN TYPE="LABEL" DELEGATE="POD" AT_LINE_START="TRUE"> <BEGIN>=back <END>=cut </SPAN> <SPAN AT_LINE_START="TRUE" TYPE="LABEL" DELEGATE="POD"> <BEGIN>=pod <END>=cut </SPAN> <SPAN TYPE="LABEL" DELEGATE="POD" AT_LINE_START="TRUE"> <BEGIN>=for <END>=cut </SPAN> <SPAN TYPE="LABEL" DELEGATE="POD" AT_LINE_START="TRUE"> <BEGIN>=begin <END>=cut </SPAN> <SPAN AT_LINE_START="TRUE" TYPE="LABEL" DELEGATE="POD"> <BEGIN>=end <END>=cut </SPAN> <!-- Some other things that confuse the mode file. --> <SEQ TYPE="OPERATOR">*" <SEQ TYPE="OPERATOR">*' <SEQ TYPE="OPERATOR">&" <SEQ TYPE="OPERATOR">&' <SPAN TYPE="KEYWORD2" NO_LINE_BREAK="TRUE" DELEGATE="VARIABLE"> <BEGIN>${ <END>} </SPAN> <!-- Scalar variables --> <SEQ_REGEXP HASH_CHAR="$" TYPE="KEYWORD2">\$#?((\p{Alpha}\w*|_\w+)?::)*(\p{Alpha}\w*|_\w+|\d+) <!-- Array variables --> <SEQ_REGEXP HASH_CHAR="@" TYPE="KEYWORD2">@((\p{Alpha}\w*|_\w+)?::)*(\p{Alpha}\w*|_\w+|\d+) <!-- Associative Array (= Hash) variables --> <SEQ_REGEXP HASH_CHAR="%" TYPE="KEYWORD2">%((\p{Alpha}\w*|_\w+)?::)*(\p{Alpha}\w*|_\w+|\d+) <!-- Dereferences --> <SEQ_REGEXP HASH_CHAR="$$" TYPE="KEYWORD4">\$\$+((\p{Alpha}\w*|_\w+)?::)*(\p{Alpha}\w*|_\w+|\d+) <SEQ_REGEXP HASH_CHAR="@$" TYPE="KEYWORD4">@\$((\p{Alpha}\w*|_\w+)?::)*(\p{Alpha}\w*|_\w+|\d+) <SEQ_REGEXP HASH_CHAR="%$" TYPE="KEYWORD4">%\$((\p{Alpha}\w*|_\w+)?::)*(\p{Alpha}\w*|_\w+|\d+) <SEQ_REGEXP HASH_CHAR="*" TYPE="KEYWORD4">\*((\p{Alpha}\w*|_\w+)?::)*(\p{Alpha}\w*|_\w+|\d+) <!-- Perl predefined variables --> <SEQ_REGEXP HASH_CHAR="$^" TYPE="KEYWORD2">\$\^\p{Alpha} <SEQ_REGEXP HASH_CHAR="$" TYPE="KEYWORD2">\$\p{Punct} <!-- references to vars and code, starting with a backslash --> <SEQ_REGEXP HASH_CHAR="\" TYPE="KEYWORD4">\\[@%\$&]((\p{Alpha}\w*|_\w+)?::)*(\p{Alpha}\w*|_\w+|\d+) <!-- complex code dereference --> <SPAN TYPE="KEYWORD4" NO_LINE_BREAK="TRUE" DELEGATE="MAIN"> <BEGIN>&{ <END>} </SPAN> <!-- Function calls from variables --> <SEQ_REGEXP HASH_CHAR="&$" TYPE="FUNCTION">&\$((\p{Alpha}\w*|_\w+)?::)*(\p{Alpha}\w*|_\w+|\d+) <!-- Highlight calls to subs that contain ' in the name. --> <SEQ_REGEXP HASH_CHAR="&" TYPE="FUNCTION" >&\p{Alpha}[\p{Alnum}_]*'\p{Alpha}[\p{Alnum}_]*</SEQ_REGEXP> <!-- Literals --> <SPAN TYPE="LITERAL1" DELEGATE="LITERAL"> <BEGIN>" <END>" </SPAN> <!-- apostrophe literals --> <SPAN TYPE="LITERAL1" DELEGATE="APOSTR"> <BEGIN>' <END>' </SPAN> <SEQ_REGEXP TYPE="LITERAL1">\b\w+\b(?=\s*=>) <!-- options: -text --> <SEQ_REGEXP HASH_CHAR="-" TYPE="LITERAL1">-[\p{Lower}]\w+ <!-- file stat expressions --> <SEQ_REGEXP HASH_CHAR="-" TYPE="KEYWORD3">-[\p{Lower}] <!-- non-quoted literals in hashes --> <SPAN_REGEXP TYPE="OPERATOR" HASH_CHAR="{" NO_LINE_BREAK="TRUE" DELEGATE="LITERAL"> <BEGIN>\{(?=\s*[\p{Alpha}_\-][\p{Alnum}_]*\s*\}) <END>} </SPAN_REGEXP> <!-- Code blocks. This is a hack to correctly highlight some complex expressions that can have arbitrary perl code inside brackets (like array deferences below). Declaring this *before* the other rules is needed to maintain correct bracket matching. --> <SPAN TYPE="OPERATOR" NO_LINE_BREAK="FALSE" DELEGATE="MAIN"> <BEGIN>{ <END>} </SPAN> <!-- Array dereference --> <SPAN TYPE="KEYWORD4" NO_LINE_BREAK="TRUE" DELEGATE="MAIN"> <BEGIN>@{ <END>} </SPAN> <!-- Hash dereference --> <SPAN TYPE="KEYWORD4" NO_LINE_BREAK="TRUE" DELEGATE="MAIN"> <BEGIN>%{ <END>} </SPAN> <!-- labels, catches also package prefixes at line start :( --> <MARK_PREVIOUS TYPE="LABEL" AT_LINE_START="TRUE" MATCH_TYPE="OPERATOR">: <!-- __DATA__ and similar --> <SEQ_REGEXP HASH_CHAR="__" TYPE="KEYWORD4">__\w+__ <!-- Exec --> <SPAN TYPE="KEYWORD3" DELEGATE="EXEC"> <BEGIN>` <END>` </SPAN> <!-- file globs / IO operators --> <SEQ_REGEXP HASH_CHAR="<" TYPE="KEYWORD4"><[\p{Punct}\p{Alnum}_]*> <!-- Heredoc --> <SPAN_REGEXP HASH_CHAR="<<" TYPE="LITERAL2" DELEGATE="LITERAL"> <BEGIN> <END AT_LINE_START="TRUE">$2 </SPAN_REGEXP> <SPAN_REGEXP HASH_CHAR="<<" TYPE="LITERAL2" DELEGATE="LITERAL"> <BEGIN> <END AT_LINE_START="TRUE">$1 </SPAN_REGEXP> <!-- jEdit 4.1 adds regular expression syntax rules so we can highlight this sort of crap. --> <!-- /Regexp/, avoid confusion with a sequence of two divisions! --> <SEQ_REGEXP TYPE="MARKUP" HASH_CHAR="/" AT_WORD_START="TRUE">/.*?[^\\]/([cgimosx]+\b|(?=[^cgimosx])|$)(?!\s*[\d\$\@\(\{\-A-Z"'])</SEQ_REGEXP> <!-- q//, qq//, qx// --> <SPAN_REGEXP HASH_CHAR="q" TYPE="LITERAL1" ESCAPE="\" MATCH_TYPE="OPERATOR" AT_WORD_START="TRUE" NO_LINE_BREAK="FALSE"> <BEGIN>q[qxw]?([#/\|!]) <END>~1 </SPAN_REGEXP> <SPAN_REGEXP HASH_CHAR="q" MATCH_TYPE="OPERATOR" DELEGATE="QUOTED_BRACKET" AT_WORD_START="TRUE" NO_LINE_BREAK="FALSE"> <BEGIN>q[qxw]?(\[) <END>~1 </SPAN_REGEXP> <SPAN_REGEXP HASH_CHAR="q" MATCH_TYPE="OPERATOR" DELEGATE="QUOTED_BRACE" AT_WORD_START="TRUE" NO_LINE_BREAK="FALSE"> <BEGIN>q[qxw]?(\{) <END>~1 </SPAN_REGEXP> <SPAN_REGEXP HASH_CHAR="q" MATCH_TYPE="OPERATOR" DELEGATE="QUOTED_PAREN" AT_WORD_START="TRUE" NO_LINE_BREAK="FALSE"> <BEGIN>q[qxw]?(\() <END>~1 </SPAN_REGEXP> <!-- qr// should match other regex highlight colors --> <SPAN_REGEXP HASH_CHAR="q" ESCAPE="\" TYPE="LITERAL1" MATCH_TYPE="OPERATOR" AT_WORD_START="TRUE" NO_LINE_BREAK="FALSE"> <BEGIN>qr([#/\|!]) <END>~1 </SPAN_REGEXP> <SPAN_REGEXP HASH_CHAR="q" DELEGATE="QUOTED_BRACKET" MATCH_TYPE="OPERATOR" AT_WORD_START="TRUE" NO_LINE_BREAK="FALSE"> <BEGIN>qr(\[) <END>~1 </SPAN_REGEXP> <SPAN_REGEXP HASH_CHAR="q" DELEGATE="QUOTED_BRACE" MATCH_TYPE="OPERATOR" AT_WORD_START="TRUE" NO_LINE_BREAK="FALSE"> <BEGIN>qr(\{) <END>~1 </SPAN_REGEXP> <SPAN_REGEXP HASH_CHAR="q" DELEGATE="QUOTED_PAREN" ESCAPE="\" MATCH_TYPE="OPERATOR" AT_WORD_START="TRUE" NO_LINE_BREAK="FALSE"> <BEGIN>qr(\() <END>~1 </SPAN_REGEXP> <!-- tr/// transliteration --> <SEQ_REGEXP TYPE="MARKUP" HASH_CHAR="tr" AT_WORD_START="TRUE">tr\s*\{.*?[^\\]\}\s*\{(?:.*?[^\\])*?\}[cds]*</SEQ_REGEXP> <SEQ_REGEXP TYPE="MARKUP" HASH_CHAR="tr" AT_WORD_START="TRUE">tr([^\p{Alnum}\p{Space}\}])(?:.*?)\1(?:.*?)\1[cds]*</SEQ_REGEXP> <!-- y/// translation --> <SEQ_REGEXP TYPE="MARKUP" HASH_CHAR="y" AT_WORD_START="TRUE">y\s*\{.*?[^\\]\}\s*\{(?:.*?[^\\])*?\}[cds]*</SEQ_REGEXP> <SEQ_REGEXP TYPE="MARKUP" HASH_CHAR="y" AT_WORD_START="TRUE">y([^\p{Alnum}\p{Space}\}_])(?:.*?)\1(?:.*?)\1[cds]*</SEQ_REGEXP> <!-- m// regular expression matching --> <SEQ_REGEXP TYPE="MARKUP" HASH_CHAR="m" AT_WORD_START="TRUE">m\s*\{.*?[^\\]\}[cgimosx]*</SEQ_REGEXP> <SEQ_REGEXP TYPE="MARKUP" HASH_CHAR="m" AT_WORD_START="TRUE">m([^\p{Alnum}\p{Space}\}])(?:.*?[^\\])\1[cgimosx]*</SEQ_REGEXP> <!-- s/// regular expression substitution --> <SEQ_REGEXP TYPE="MARKUP" HASH_CHAR="s" AT_WORD_START="TRUE">s\s*\{.*?\}\s*\{.*?\}[egimosx]*</SEQ_REGEXP> <SEQ_REGEXP TYPE="MARKUP" HASH_CHAR="s" AT_WORD_START="TRUE">s([^\p{Alnum}\p{Space}\}])(?:.*?)\1(?:.*?)\1[egimosx]*</SEQ_REGEXP> <!-- complex operators --> <SEQ TYPE="OPERATOR">|| <SEQ TYPE="OPERATOR">// <SEQ TYPE="OPERATOR">&& <SEQ TYPE="OPERATOR">!= <SEQ TYPE="OPERATOR"><=> <SEQ TYPE="OPERATOR">-> <SEQ TYPE="OPERATOR">=> <SEQ TYPE="OPERATOR">== <SEQ TYPE="OPERATOR">=~ <SEQ TYPE="OPERATOR">!~ <SEQ TYPE="OPERATOR">~~ <SEQ TYPE="OPERATOR">+= <SEQ TYPE="OPERATOR">-= <SEQ TYPE="OPERATOR">/= <SEQ TYPE="OPERATOR">*= <SEQ TYPE="OPERATOR">.= <SEQ TYPE="OPERATOR">%= <SEQ TYPE="OPERATOR">&= <SEQ TYPE="OPERATOR">|= <SEQ TYPE="OPERATOR">**= <SEQ TYPE="OPERATOR"><<= <SEQ TYPE="OPERATOR">>>= <SEQ TYPE="OPERATOR">&&= <SEQ TYPE="OPERATOR">||= <SEQ TYPE="OPERATOR">^= <SEQ TYPE="OPERATOR">x= <SEQ TYPE="OPERATOR">>= <SEQ TYPE="OPERATOR"><= <SEQ TYPE="OPERATOR">> <SEQ TYPE="OPERATOR">< <!-- simple operators --> <SEQ TYPE="OPERATOR">| <SEQ TYPE="OPERATOR">& <SEQ TYPE="OPERATOR">! <SEQ TYPE="OPERATOR">= <SEQ TYPE="OPERATOR">! <SEQ TYPE="OPERATOR">+ <SEQ TYPE="OPERATOR">- <SEQ TYPE="OPERATOR">/ <SEQ TYPE="OPERATOR">** <SEQ TYPE="OPERATOR">* <SEQ TYPE="OPERATOR">^ <SEQ TYPE="OPERATOR">~ <SEQ TYPE="OPERATOR">{ <SEQ TYPE="OPERATOR">} <SEQ TYPE="OPERATOR">? <SEQ TYPE="OPERATOR">: <!-- Keywords --> <KEYWORDS> <KEYWORD1>new <KEYWORD1>if <KEYWORD1>until <KEYWORD1>while <KEYWORD1>elsif <KEYWORD1>else <KEYWORD1>unless <KEYWORD1>for <KEYWORD1>foreach <KEYWORD1>BEGIN <KEYWORD1>END <OPERATOR>cmp <OPERATOR>eq <OPERATOR>ne <OPERATOR>le <OPERATOR>ge <OPERATOR>not <OPERATOR>and <OPERATOR>or <OPERATOR>xor <!-- At least attempt to highlight 'x', although this misses some --> <OPERATOR>x <!-- The following function list was derived from the perlfunc man page, Perl version 5.00503 Certain keywords have been commented out where they appear more than once, and the y///, qx//, etc. functions have been removed, since they would are colorized not as keywords, but with separate rules. --> <!-- Functions for SCALARs or strings --> <KEYWORD3>chomp <KEYWORD3>chop <KEYWORD3>chr <KEYWORD3>crypt <KEYWORD3>hex <KEYWORD3>index <KEYWORD3>lc <KEYWORD3>lcfirst <KEYWORD3>length <KEYWORD3>oct <KEYWORD3>ord <KEYWORD3>pack <KEYWORD3>reverse <KEYWORD3>rindex <KEYWORD3>sprintf <KEYWORD3>substr <KEYWORD3>uc <KEYWORD3>ucfirst <!-- Regular expressions and pattern matching --> <KEYWORD3>pos <KEYWORD3>quotemeta <KEYWORD3>split <KEYWORD3>study <!-- Numeric functions --> <KEYWORD3>abs <KEYWORD3>atan2 <KEYWORD3>cos <KEYWORD3>exp <!-- Other jEdit examples (source code examples)Here is a short list of links related to this jEdit perl.xml source code file: |
... this post is sponsored by my books ... | |
#1 New Release! |
FP Best Seller |
Copyright 1998-2021 Alvin Alexander, alvinalexander.com
All Rights Reserved.
A percentage of advertising revenue from
pages under the /java/jwarehouse
URI on this website is
paid back to open source projects.