From: Jochen L. <lue...@us...> - 2005-01-20 17:29:39
|
Update of /cvsroot/e-p-i-c/org.epic.ext.cbg.editor/modes In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv6157/modes Modified Files: perl.xml readme_EPIC.txt Log Message: Rule extensions and proper Handling of HERE-Documents Index: perl.xml =================================================================== RCS file: /cvsroot/e-p-i-c/org.epic.ext.cbg.editor/modes/perl.xml,v retrieving revision 1.9 retrieving revision 1.10 diff -u -d -r1.9 -r1.10 --- perl.xml 8 Jan 2005 16:02:20 -0000 1.9 +++ perl.xml 20 Jan 2005 17:29:29 -0000 1.10 @@ -1,407 +1,434 @@ -<?xml version="1.0"?> - -<!DOCTYPE MODE SYSTEM "xmode.dtd"> - -<MODE> - <PROPS> - <PROPERTY NAME="lineComment" VALUE="#" /> - <PROPERTY NAME="indentOpenBrackets" VALUE="{" /> - <PROPERTY NAME="indentCloseBrackets" VALUE="}" /> - </PROPS> - <RULES ESCAPE="\" IGNORE_CASE="FALSE" HIGHLIGHT_DIGITS="TRUE"> - <!-- whitespace: (space and tab) --> - <WHITESPACE> </WHITESPACE> - <WHITESPACE> </WHITESPACE> - - <!-- Comments --> - <EOL_SPAN TYPE="COMMENT1">#</EOL_SPAN> - - <!-- Rules added by EPIC - START --> - <SPAN TYPE="INVALID" NO_LINE_BREAK="FALSE" IGNORE_TEXT_AFTER_START_TAG="TRUE"> - <GROUP>__END__</GROUP> - <GROUP>__DATA__</GROUP> - <END>@EOF</END> - </SPAN> - - <!-- TYPE is LABEL so that =head1 and =cut are highlighted as so --> - <SPAN TYPE="LABEL" AT_LINE_START="TRUE" DELEGATE="POD"> - <GROUP>=head1</GROUP> - <GROUP>=head2</GROUP> - <GROUP>=head3</GROUP> - <GROUP>=head4</GROUP> - <GROUP>=item</GROUP> - <GROUP>=over</GROUP> - <GROUP>=back</GROUP> - <GROUP>=pod</GROUP> - <GROUP>=for</GROUP> - <GROUP>=begin</GROUP> - <GROUP>=end</GROUP> - <END>=cut</END> - </SPAN> - - <!-- Variables --> - <SEQ TYPE="KEYWORD2">$`</SEQ> - <SEQ TYPE="KEYWORD2">$'</SEQ> - <SEQ TYPE="KEYWORD2">$"</SEQ> - - <SPAN TYPE="KEYWORD2" NO_LINE_BREAK="FALSE" MATCH_BRACKET="TRUE"> - <GROUP>${</GROUP> - <GROUP>@{</GROUP> - <GROUP>%{</GROUP> - <END>}</END> - </SPAN> - - <SEQ TYPE="NULL">\"</SEQ> <!-- To avoid inproper Quote spanning --> - <SEQ TYPE="NULL">\*</SEQ> <!-- To avoid inproper Quote spanning --> - <SEQ TYPE="NULL">$::</SEQ> <!-- To avoid inproper Marks --> - <SEQ TYPE="NULL">@::</SEQ> <!-- To avoid inproper Marks --> - <SEQ TYPE="NULL">%::</SEQ> <!-- To avoid inproper Marks --> - - <MARK_FOLLOWING TYPE="KEYWORD2">$#</MARK_FOLLOWING> - <MARK_FOLLOWING TYPE="KEYWORD2">$</MARK_FOLLOWING> - <MARK_FOLLOWING TYPE="KEYWORD2">@</MARK_FOLLOWING> - <MARK_FOLLOWING TYPE="KEYWORD2">%</MARK_FOLLOWING> - - <!-- Literals --> - <SPAN TYPE="LITERAL1"> - <BEGIN>"</BEGIN> - <END>"</END> - </SPAN> - <SPAN TYPE="LITERAL1"> - <BEGIN>'</BEGIN> - <END>'</END> - </SPAN> - - <!-- Exec --> - <SPAN TYPE="KEYWORD3" DELEGATE="EXEC"> - <BEGIN>`</BEGIN> - <END>`</END> - </SPAN> - - <!-- HERE Documents --> - <SPAN TYPE="LITERAL2" NO_LINE_BREAK="FALSE" - DYNAMIC_TAGGING="TRUE" DELIMITER_MAX_CHAR="999" - DELIMITER_TAG_CHARS="ANY" - REQUIRE_AFTER_TAG=":LINEFEED:"> - <BEGIN><<</BEGIN> - <!-- - <END>"'</END> - --> - <END>"'`;</END> - </SPAN> - - - <!-- Operators --> - <SEQ TYPE="OPERATOR">|</SEQ> - <SEQ TYPE="OPERATOR">&</SEQ> - <SEQ TYPE="OPERATOR">!</SEQ> - <SEQ TYPE="OPERATOR">></SEQ> - <SEQ TYPE="OPERATOR"><</SEQ> - <SEQ TYPE="NULL">)</SEQ> - <SEQ TYPE="NULL">(</SEQ> - <SEQ TYPE="OPERATOR">=</SEQ> - <SEQ TYPE="OPERATOR">!</SEQ> - <SEQ TYPE="OPERATOR">>=</SEQ> - <SEQ TYPE="OPERATOR"><=</SEQ> - <SEQ TYPE="OPERATOR">+</SEQ> - <SEQ TYPE="OPERATOR">-</SEQ> - <SEQ TYPE="OPERATOR">*</SEQ> - <SEQ TYPE="OPERATOR">^</SEQ> - <SEQ TYPE="OPERATOR">~</SEQ> - <SEQ TYPE="OPERATOR">}</SEQ> - <SEQ TYPE="OPERATOR">{</SEQ> - <SEQ TYPE="NULL">.</SEQ> - <SEQ TYPE="NULL">,</SEQ> - <SEQ TYPE="NULL">;</SEQ> - <SEQ TYPE="NULL">]</SEQ> - <SEQ TYPE="NULL">[</SEQ> - <SEQ TYPE="NULL">:</SEQ> - <SEQ TYPE="KEYWORD1"> - <GROUP>BEGIN</GROUP> - <GROUP>END</GROUP> - <GROUP>caller</GROUP> - <GROUP>continue</GROUP> - <GROUP>die</GROUP> - <GROUP>do</GROUP> - <GROUP>dump</GROUP> - <GROUP>else</GROUP> - <GROUP>elsif</GROUP> - <GROUP>eval</GROUP> - <GROUP>exit</GROUP> - <GROUP>foreach</GROUP> - <GROUP>goto</GROUP> - <GROUP>if</GROUP> - <GROUP>import</GROUP> - <GROUP>last</GROUP> - <GROUP>local</GROUP> - <GROUP>my</GROUP> - <GROUP>new</GROUP> - <GROUP>next</GROUP> - <GROUP>no</GROUP> - <GROUP>package</GROUP> - <GROUP>redo</GROUP> - <GROUP>require</GROUP> - <GROUP>return</GROUP> - <GROUP>unless</GROUP> - <GROUP>until</GROUP> - <GROUP>use</GROUP> - <GROUP>wantarray</GROUP> - <GROUP>while</GROUP> - </SEQ> - - <SEQ TYPE="KEYWORD2"> - <GROUP>closedir</GROUP> - <GROUP>for</GROUP> - <GROUP>lcfirst</GROUP> - <GROUP>opendir</GROUP> - <GROUP>printf</GROUP> - <GROUP>readdir</GROUP> - <GROUP>readlink</GROUP> - <GROUP>seekdir</GROUP> - <GROUP>socketpair</GROUP> - <GROUP>substr</GROUP> - <GROUP>telldir</GROUP> - <GROUP>tied</GROUP> - <GROUP>times</GROUP> - <GROUP>ucfirst</GROUP> - <GROUP>waitpid</GROUP> - </SEQ> - - <SEQ TYPE="KEYWORD3"> - <GROUP>__FILE__</GROUP> - <GROUP>__LINE__</GROUP> - <GROUP>__PACKAGE__</GROUP> - <GROUP>abs</GROUP> - <GROUP>accept</GROUP> - <GROUP>alarm</GROUP> - <GROUP>atan2</GROUP> - <GROUP>bind</GROUP> - <GROUP>binmode</GROUP> - <GROUP>bless</GROUP> - <GROUP>chdir</GROUP> - <GROUP>chmod</GROUP> - <GROUP>chomp</GROUP> - <GROUP>chop</GROUP> - <GROUP>chown</GROUP> - <GROUP>chr</GROUP> - <GROUP>chroot</GROUP> - <GROUP>close</GROUP> - <GROUP>connect</GROUP> - <GROUP>cos</GROUP> - <GROUP>crypt</GROUP> - <GROUP>dbmclose</GROUP> - <GROUP>dbmopen</GROUP> - <GROUP>defined</GROUP> - <GROUP>delete</GROUP> - <GROUP>each</GROUP> - <GROUP>endgrent</GROUP> - <GROUP>endhostent</GROUP> - <GROUP>endnetent</GROUP> - <GROUP>endprotoent</GROUP> - <GROUP>endpwent</GROUP> - <GROUP>endservent</GROUP> - <GROUP>eof</GROUP> - <GROUP>exec</GROUP> - <GROUP>exists</GROUP> - <GROUP>exp</GROUP> - <GROUP>fcntl</GROUP> - <GROUP>fileno</GROUP> - <GROUP>flock</GROUP> - <GROUP>fork</GROUP> - <GROUP>format</GROUP> - <GROUP>formline</GROUP> - <GROUP>getc</GROUP> - <GROUP>getgrent</GROUP> - <GROUP>getgrgid</GROUP> - <GROUP>getgrnam</GROUP> - <GROUP>gethostbyaddr</GROUP> - <GROUP>gethostbyname</GROUP> - <GROUP>gethostent</GROUP> - <GROUP>getlogin</GROUP> - <GROUP>getnetbyaddr</GROUP> - <GROUP>getnetbyname</GROUP> - <GROUP>getnetent</GROUP> - <GROUP>getpeername</GROUP> - <GROUP>getpgrp</GROUP> - <GROUP>getppid</GROUP> - <GROUP>getpriority</GROUP> - <GROUP>getprotobyname</GROUP> - <GROUP>getprotobynumber</GROUP> - <GROUP>getprotoent</GROUP> - <GROUP>getpwent</GROUP> - <GROUP>getpwnam</GROUP> - <GROUP>getpwuid</GROUP> - <GROUP>getservbyname</GROUP> - <GROUP>getservbyport</GROUP> - <GROUP>getservent</GROUP> - <GROUP>getsockname</GROUP> - <GROUP>getsockopt</GROUP> - <GROUP>glob</GROUP> - <GROUP>gmtime</GROUP> - <GROUP>grep</GROUP> - <GROUP>hex</GROUP> - <GROUP>index</GROUP> - <GROUP>int</GROUP> - <GROUP>ioctl</GROUP> - <GROUP>join</GROUP> - <GROUP>keys</GROUP> - <GROUP>kill</GROUP> - <GROUP>lc</GROUP> - <GROUP>length</GROUP> - <GROUP>link</GROUP> - <GROUP>listen</GROUP> - <GROUP>localtime</GROUP> - <GROUP>log</GROUP> - <GROUP>lstat</GROUP> - <GROUP>map</GROUP> - <GROUP>mkdir</GROUP> - <GROUP>msgctl</GROUP> - <GROUP>msgget</GROUP> - <GROUP>msgrcv</GROUP> - <GROUP>msgsnd</GROUP> - <GROUP>oct</GROUP> - <GROUP>our</GROUP> - <GROUP>open</GROUP> - <GROUP>ord</GROUP> - <GROUP>pack</GROUP> - <GROUP>pipe</GROUP> - <GROUP>pop</GROUP> - <GROUP>pos</GROUP> - <GROUP>print</GROUP> - <GROUP>push</GROUP> - <GROUP>quotemeta</GROUP> - <GROUP>rand</GROUP> - <GROUP>read</GROUP> - <GROUP>recv</GROUP> - <GROUP>ref</GROUP> - <GROUP>rename</GROUP> - <GROUP>reset</GROUP> - <GROUP>reverse</GROUP> - <GROUP>rewinddir</GROUP> - <GROUP>rindex</GROUP> - <GROUP>rmdir</GROUP> - <GROUP>scalar</GROUP> - <GROUP>seek</GROUP> - <GROUP>select</GROUP> - <GROUP>semctl</GROUP> - <GROUP>semget</GROUP> - <GROUP>semop</GROUP> - <GROUP>send</GROUP> - <GROUP>setgrent</GROUP> - <GROUP>sethostent</GROUP> - <GROUP>setnetent</GROUP> - <GROUP>setpgrp</GROUP> - <GROUP>setpriority</GROUP> - <GROUP>setprotoent</GROUP> - <GROUP>setpwent</GROUP> - <GROUP>setservent</GROUP> - <GROUP>setsockopt</GROUP> - <GROUP>shift</GROUP> - <GROUP>shmctl</GROUP> - <GROUP>shmget</GROUP> - <GROUP>shmread</GROUP> - <GROUP>shmwrite</GROUP> - <GROUP>shutdown</GROUP> - <GROUP>sin</GROUP> - <GROUP>sleep</GROUP> - <GROUP>socket</GROUP> - <GROUP>sort</GROUP> - <GROUP>splice</GROUP> - <GROUP>split</GROUP> - <GROUP>sprintf</GROUP> - <GROUP>sqrt</GROUP> - <GROUP>srand</GROUP> - <GROUP>stat</GROUP> - <GROUP>study</GROUP> - <GROUP>sub</GROUP> - <GROUP>symlink</GROUP> - <GROUP>syscall</GROUP> - <GROUP>sysread</GROUP> - <GROUP>sysseek</GROUP> - <GROUP>system</GROUP> - <GROUP>syswrite</GROUP> - <GROUP>tell</GROUP> - <GROUP>tie</GROUP> - <GROUP>time</GROUP> - <GROUP>truncate</GROUP> - <GROUP>uc</GROUP> - <GROUP>umask</GROUP> - <GROUP>undef</GROUP> - <GROUP>unlink</GROUP> - <GROUP>unpack</GROUP> - <GROUP>unshift</GROUP> - <GROUP>untie</GROUP> - <GROUP>utime</GROUP> - <GROUP>values</GROUP> - <GROUP>vec</GROUP> - <GROUP>wait</GROUP> - <GROUP>warn</GROUP> - <GROUP>write</GROUP> - </SEQ> - <SEQ TYPE="OPERATOR"> - <GROUP>and</GROUP> - <GROUP>cmp</GROUP> - <GROUP>eq</GROUP> - <GROUP>ge</GROUP> - <GROUP>le</GROUP> - <GROUP>ne</GROUP> - <GROUP>not</GROUP> - <GROUP>or</GROUP> - <GROUP>xor</GROUP> - </SEQ> - <SEQ TYPE="OPERATOR">x</SEQ> - - <!-- RegExps --> - <SPAN TYPE="LITERAL2" NO_LINE_BREAK="FALSE" - DYNAMIC_TAGGING="TRUE" DELIMITER_MAX_CHAR="1"> - <GROUP>m</GROUP> - <END>\</END> - </SPAN> - - <SPAN TYPE="LITERAL2" NO_LINE_BREAK="FALSE" NO_OF_MULTIPLE_ENDTAG="2" - DYNAMIC_TAGGING="TRUE" DELIMITER_MAX_CHAR="1"> - <GROUP>s</GROUP> - <GROUP>tr</GROUP> - <END>\</END> - </SPAN> - <!-- Quotes not RegExps --> - <SPAN TYPE="LITERAL2" NO_LINE_BREAK="FALSE" - DYNAMIC_TAGGING="TRUE" DELIMITER_MAX_CHAR="1"> - <GROUP>qq</GROUP> - <GROUP>qx</GROUP> - <GROUP>qw</GROUP> - <GROUP>qr</GROUP> - <END>\</END> - </SPAN> - <SPAN TYPE="LITERAL2" NO_LINE_BREAK="FALSE" - DYNAMIC_TAGGING="TRUE" DELIMITER_MAX_CHAR="1"> - <GROUP>q</GROUP> - <END>\</END> - </SPAN> - -<!-- the normal Match at the End - should be checked if it works --> - <SPAN TYPE="LITERAL2" NO_LINE_BREAK="TRUE" REQUIRE_END_TAG="TRUE"> - <BEGIN>/</BEGIN> - <END>/</END> - </SPAN> - - <SEQ TYPE="OPERATOR">/</SEQ> - -<!-- the normal Match at the End - should be checked if it works --> - <SPAN TYPE="LITERAL2" NO_LINE_BREAK="TRUE" REQUIRE_END_TAG="TRUE"> - <BEGIN>?</BEGIN> - <END>?</END> - </SPAN> - - <SEQ TYPE="OPERATOR">?</SEQ> - - </RULES> - - <RULES SET="POD" DEFAULT="COMMENT2"> - <!-- whitespace: (space and tab) --> - <WHITESPACE> </WHITESPACE> - <WHITESPACE> </WHITESPACE> - - <MARK_FOLLOWING TYPE="LABEL" AT_LINE_START="TRUE">=</MARK_FOLLOWING> - </RULES> +<?xml version="1.0"?> + +<!DOCTYPE MODE SYSTEM "xmode.dtd"> + +<MODE> + <PROPS> + <PROPERTY NAME="lineComment" VALUE="#" /> + <PROPERTY NAME="indentOpenBrackets" VALUE="{" /> + <PROPERTY NAME="indentCloseBrackets" VALUE="}" /> + </PROPS> + <RULES ESCAPE="\" IGNORE_CASE="FALSE" HIGHLIGHT_DIGITS="TRUE"> + <!-- whitespace: (space and tab) --> + <WHITESPACE> </WHITESPACE> + <WHITESPACE> </WHITESPACE> + + <!-- Comments --> + <EOL_SPAN TYPE="COMMENT1">#</EOL_SPAN> + + <!-- Rules added by EPIC - START --> + <SPAN TYPE="INVALID" NO_LINE_BREAK="FALSE" IGNORE_TEXT_AFTER_START_TAG="TRUE"> + <GROUP>__END__</GROUP> + <GROUP>__DATA__</GROUP> + <END>@EOF</END> + </SPAN> + + <!-- TYPE is LABEL so that =head1 and =cut are highlighted as so --> + <SPAN TYPE="LABEL" AT_LINE_START="TRUE" DELEGATE="POD"> + <GROUP>=head1</GROUP> + <GROUP>=head2</GROUP> + <GROUP>=head3</GROUP> + <GROUP>=head4</GROUP> + <GROUP>=item</GROUP> + <GROUP>=over</GROUP> + <GROUP>=back</GROUP> + <GROUP>=pod</GROUP> + <GROUP>=for</GROUP> + <GROUP>=begin</GROUP> + <GROUP>=end</GROUP> + <END>=cut</END> + </SPAN> + + <!-- Variables --> + <SEQ TYPE="KEYWORD2">$`</SEQ> + <SEQ TYPE="KEYWORD2">$'</SEQ> + <SEQ TYPE="KEYWORD2">$"</SEQ> + + <SPAN TYPE="KEYWORD2" NO_LINE_BREAK="FALSE" MATCH_BRACKET="TRUE"> + <GROUP>${</GROUP> + <GROUP>@{</GROUP> + <GROUP>%{</GROUP> + <END>}</END> + </SPAN> + + <SEQ TYPE="NULL">\"</SEQ> <!-- To avoid inproper Quote spanning --> + <SEQ TYPE="NULL">\*</SEQ> <!-- To avoid inproper Quote spanning --> + <SEQ TYPE="NULL">$::</SEQ> <!-- To avoid inproper Marks --> + <SEQ TYPE="NULL">@::</SEQ> <!-- To avoid inproper Marks --> + <SEQ TYPE="NULL">%::</SEQ> <!-- To avoid inproper Marks --> + + <MARK_FOLLOWING TYPE="KEYWORD2">$#</MARK_FOLLOWING> + <MARK_FOLLOWING TYPE="KEYWORD2">$</MARK_FOLLOWING> + <MARK_FOLLOWING TYPE="KEYWORD2">@</MARK_FOLLOWING> + <MARK_FOLLOWING TYPE="KEYWORD2">%</MARK_FOLLOWING> + + <!-- Literals --> + <SPAN TYPE="LITERAL1"> + <BEGIN>"</BEGIN> + <END>"</END> + </SPAN> + <SPAN TYPE="LITERAL1"> + <BEGIN>'</BEGIN> + <END>'</END> + </SPAN> + + <!-- Exec --> + <SPAN TYPE="KEYWORD3" DELEGATE="EXEC"> + <BEGIN>`</BEGIN> + <END>`</END> + </SPAN> + + <!-- Operators --> + <SEQ TYPE="OPERATOR">|</SEQ> + <SEQ TYPE="OPERATOR">&</SEQ> + <SEQ TYPE="OPERATOR">!</SEQ> + <SEQ TYPE="OPERATOR">></SEQ> + <SEQ TYPE="NULL">)</SEQ> + <SEQ TYPE="NULL">(</SEQ> + <SEQ TYPE="OPERATOR">=</SEQ> + <SEQ TYPE="OPERATOR">!</SEQ> + <SEQ TYPE="OPERATOR">>=</SEQ> + <SEQ TYPE="OPERATOR">+</SEQ> + <SEQ TYPE="OPERATOR">-</SEQ> + <SEQ TYPE="OPERATOR">*</SEQ> + <SEQ TYPE="OPERATOR">^</SEQ> + <SEQ TYPE="OPERATOR">~</SEQ> + <SEQ TYPE="OPERATOR">}</SEQ> + <SEQ TYPE="OPERATOR">{</SEQ> + <SEQ TYPE="NULL">.</SEQ> + <SEQ TYPE="NULL">,</SEQ> + <SEQ TYPE="NULL">;</SEQ> + <SEQ TYPE="NULL">]</SEQ> + <SEQ TYPE="NULL">[</SEQ> + <SEQ TYPE="NULL">:</SEQ> + <SEQ TYPE="KEYWORD1"> + <GROUP>BEGIN</GROUP> + <GROUP>END</GROUP> + <GROUP>caller</GROUP> + <GROUP>continue</GROUP> + <GROUP>die</GROUP> + <GROUP>do</GROUP> + <GROUP>dump</GROUP> + <GROUP>else</GROUP> + <GROUP>elsif</GROUP> + <GROUP>eval</GROUP> + <GROUP>exit</GROUP> + <GROUP>foreach</GROUP> + <GROUP>goto</GROUP> + <GROUP>if</GROUP> + <GROUP>import</GROUP> + <GROUP>last</GROUP> + <GROUP>local</GROUP> + <GROUP>my</GROUP> + <GROUP>new</GROUP> + <GROUP>next</GROUP> + <GROUP>no</GROUP> + <GROUP>package</GROUP> + <GROUP>redo</GROUP> + <GROUP>require</GROUP> + <GROUP>return</GROUP> + <GROUP>unless</GROUP> + <GROUP>until</GROUP> + <GROUP>use</GROUP> + <GROUP>wantarray</GROUP> + <GROUP>while</GROUP> + </SEQ> + + <SEQ TYPE="KEYWORD2"> + <GROUP>closedir</GROUP> + <GROUP>for</GROUP> + <GROUP>lcfirst</GROUP> + <GROUP>opendir</GROUP> + <GROUP>printf</GROUP> + <GROUP>readdir</GROUP> + <GROUP>readlink</GROUP> + <GROUP>seekdir</GROUP> + <GROUP>socketpair</GROUP> + <GROUP>substr</GROUP> + <GROUP>telldir</GROUP> + <GROUP>tied</GROUP> + <GROUP>times</GROUP> + <GROUP>ucfirst</GROUP> + <GROUP>waitpid</GROUP> + </SEQ> + + <SEQ TYPE="KEYWORD3"> + <GROUP>__FILE__</GROUP> + <GROUP>__LINE__</GROUP> + <GROUP>__PACKAGE__</GROUP> + <GROUP>abs</GROUP> + <GROUP>accept</GROUP> + <GROUP>alarm</GROUP> + <GROUP>atan2</GROUP> + <GROUP>bind</GROUP> + <GROUP>binmode</GROUP> + <GROUP>bless</GROUP> + <GROUP>chdir</GROUP> + <GROUP>chmod</GROUP> + <GROUP>chomp</GROUP> + <GROUP>chop</GROUP> + <GROUP>chown</GROUP> + <GROUP>chr</GROUP> + <GROUP>chroot</GROUP> + <GROUP>close</GROUP> + <GROUP>connect</GROUP> + <GROUP>cos</GROUP> + <GROUP>crypt</GROUP> + <GROUP>dbmclose</GROUP> + <GROUP>dbmopen</GROUP> + <GROUP>defined</GROUP> + <GROUP>delete</GROUP> + <GROUP>each</GROUP> + <GROUP>endgrent</GROUP> + <GROUP>endhostent</GROUP> + <GROUP>endnetent</GROUP> + <GROUP>endprotoent</GROUP> + <GROUP>endpwent</GROUP> + <GROUP>endservent</GROUP> + <GROUP>eof</GROUP> + <GROUP>exec</GROUP> + <GROUP>exists</GROUP> + <GROUP>exp</GROUP> + <GROUP>fcntl</GROUP> + <GROUP>fileno</GROUP> + <GROUP>flock</GROUP> + <GROUP>fork</GROUP> + <GROUP>format</GROUP> + <GROUP>formline</GROUP> + <GROUP>getc</GROUP> + <GROUP>getgrent</GROUP> + <GROUP>getgrgid</GROUP> + <GROUP>getgrnam</GROUP> + <GROUP>gethostbyaddr</GROUP> + <GROUP>gethostbyname</GROUP> + <GROUP>gethostent</GROUP> + <GROUP>getlogin</GROUP> + <GROUP>getnetbyaddr</GROUP> + <GROUP>getnetbyname</GROUP> + <GROUP>getnetent</GROUP> + <GROUP>getpeername</GROUP> + <GROUP>getpgrp</GROUP> + <GROUP>getppid</GROUP> + <GROUP>getpriority</GROUP> + <GROUP>getprotobyname</GROUP> + <GROUP>getprotobynumber</GROUP> + <GROUP>getprotoent</GROUP> + <GROUP>getpwent</GROUP> + <GROUP>getpwnam</GROUP> + <GROUP>getpwuid</GROUP> + <GROUP>getservbyname</GROUP> + <GROUP>getservbyport</GROUP> + <GROUP>getservent</GROUP> + <GROUP>getsockname</GROUP> + <GROUP>getsockopt</GROUP> + <GROUP>glob</GROUP> + <GROUP>gmtime</GROUP> + <GROUP>grep</GROUP> + <GROUP>hex</GROUP> + <GROUP>index</GROUP> + <GROUP>int</GROUP> + <GROUP>ioctl</GROUP> + <GROUP>join</GROUP> + <GROUP>keys</GROUP> + <GROUP>kill</GROUP> + <GROUP>lc</GROUP> + <GROUP>length</GROUP> + <GROUP>link</GROUP> + <GROUP>listen</GROUP> + <GROUP>localtime</GROUP> + <GROUP>log</GROUP> + <GROUP>lstat</GROUP> + <GROUP>map</GROUP> + <GROUP>mkdir</GROUP> + <GROUP>msgctl</GROUP> + <GROUP>msgget</GROUP> + <GROUP>msgrcv</GROUP> + <GROUP>msgsnd</GROUP> + <GROUP>oct</GROUP> + <GROUP>our</GROUP> + <GROUP>open</GROUP> + <GROUP>ord</GROUP> + <GROUP>pack</GROUP> + <GROUP>pipe</GROUP> + <GROUP>pop</GROUP> + <GROUP>pos</GROUP> + <GROUP>print</GROUP> + <GROUP>push</GROUP> + <GROUP>quotemeta</GROUP> + <GROUP>rand</GROUP> + <GROUP>read</GROUP> + <GROUP>recv</GROUP> + <GROUP>ref</GROUP> + <GROUP>rename</GROUP> + <GROUP>reset</GROUP> + <GROUP>reverse</GROUP> + <GROUP>rewinddir</GROUP> + <GROUP>rindex</GROUP> + <GROUP>rmdir</GROUP> + <GROUP>scalar</GROUP> + <GROUP>seek</GROUP> + <GROUP>select</GROUP> + <GROUP>semctl</GROUP> + <GROUP>semget</GROUP> + <GROUP>semop</GROUP> + <GROUP>send</GROUP> + <GROUP>setgrent</GROUP> + <GROUP>sethostent</GROUP> + <GROUP>setnetent</GROUP> + <GROUP>setpgrp</GROUP> + <GROUP>setpriority</GROUP> + <GROUP>setprotoent</GROUP> + <GROUP>setpwent</GROUP> + <GROUP>setservent</GROUP> + <GROUP>setsockopt</GROUP> + <GROUP>shift</GROUP> + <GROUP>shmctl</GROUP> + <GROUP>shmget</GROUP> + <GROUP>shmread</GROUP> + <GROUP>shmwrite</GROUP> + <GROUP>shutdown</GROUP> + <GROUP>sin</GROUP> + <GROUP>sleep</GROUP> + <GROUP>socket</GROUP> + <GROUP>sort</GROUP> + <GROUP>splice</GROUP> + <GROUP>split</GROUP> + <GROUP>sprintf</GROUP> + <GROUP>sqrt</GROUP> + <GROUP>srand</GROUP> + <GROUP>stat</GROUP> + <GROUP>study</GROUP> + <GROUP>sub</GROUP> + <GROUP>symlink</GROUP> + <GROUP>syscall</GROUP> + <GROUP>sysread</GROUP> + <GROUP>sysseek</GROUP> + <GROUP>system</GROUP> + <GROUP>syswrite</GROUP> + <GROUP>tell</GROUP> + <GROUP>tie</GROUP> + <GROUP>time</GROUP> + <GROUP>truncate</GROUP> + <GROUP>uc</GROUP> + <GROUP>umask</GROUP> + <GROUP>undef</GROUP> + <GROUP>unlink</GROUP> + <GROUP>unpack</GROUP> + <GROUP>unshift</GROUP> + <GROUP>untie</GROUP> + <GROUP>utime</GROUP> + <GROUP>values</GROUP> + <GROUP>vec</GROUP> + <GROUP>wait</GROUP> + <GROUP>warn</GROUP> + <GROUP>write</GROUP> + </SEQ> + <SEQ TYPE="OPERATOR"> + <GROUP>and</GROUP> + <GROUP>cmp</GROUP> + <GROUP>eq</GROUP> + <GROUP>ge</GROUP> + <GROUP>le</GROUP> + <GROUP>ne</GROUP> + <GROUP>not</GROUP> + <GROUP>or</GROUP> + <GROUP>xor</GROUP> + </SEQ> + <SEQ TYPE="OPERATOR">x</SEQ> + + <!-- RegExps --> + <SPAN TYPE="LITERAL2" NO_LINE_BREAK="FALSE" + DYNAMIC_TAGGING="TRUE" DELIMITER_MAX_CHAR="1"> + <GROUP>m</GROUP> + <END>\</END> + </SPAN> + + <SPAN TYPE="LITERAL2" NO_LINE_BREAK="FALSE" NO_OF_MULTIPLE_ENDTAG="2" + DYNAMIC_TAGGING="TRUE" DELIMITER_MAX_CHAR="1"> + <GROUP>s</GROUP> + <GROUP>tr</GROUP> + <END>\</END> + </SPAN> + <!-- Quotes not RegExps --> + <SPAN TYPE="LITERAL2" NO_LINE_BREAK="FALSE" + DYNAMIC_TAGGING="TRUE" DELIMITER_MAX_CHAR="1"> + <GROUP>qq</GROUP> + <GROUP>qx</GROUP> + <GROUP>qw</GROUP> + <GROUP>qr</GROUP> + <END>\</END> + </SPAN> + <SPAN TYPE="LITERAL2" NO_LINE_BREAK="FALSE" + DYNAMIC_TAGGING="TRUE" DELIMITER_MAX_CHAR="1"> + <GROUP>q</GROUP> + <END>\</END> + </SPAN> + +<!-- the normal Match at the End - should be checked if it works --> + <SPAN TYPE="LITERAL2" NO_LINE_BREAK="TRUE" REQUIRE_END_TAG="TRUE"> + <BEGIN>/</BEGIN> + <END>/</END> + </SPAN> + + <SEQ TYPE="OPERATOR">/</SEQ> + + <!-- HERE Documents with different flavours--> + <SPAN TYPE="LITERAL2" NO_LINE_BREAK="FALSE" + DYNAMIC_TAGGING="TRUE" DELIMITER_MAX_CHAR="999" + DELIMITER_TAG_CHARS="ANY" + REQUIRE_BEFORE_DELIMITER_CHAR='"' + REQUIRE_AFTER_DELIMITER_CHAR=":LINEFEED:"> + <BEGIN><<</BEGIN> + <END>"</END> + </SPAN> + + <SPAN TYPE="LITERAL2" NO_LINE_BREAK="FALSE" + DYNAMIC_TAGGING="TRUE" DELIMITER_MAX_CHAR="999" + DELIMITER_TAG_CHARS="ANY" + REQUIRE_BEFORE_DELIMITER_CHAR="'" + REQUIRE_AFTER_DELIMITER_CHAR=":LINEFEED:"> + <BEGIN><<</BEGIN> + <END>'</END> + </SPAN> + + <SPAN TYPE="LITERAL2" NO_LINE_BREAK="FALSE" + DYNAMIC_TAGGING="TRUE" DELIMITER_MAX_CHAR="999" + DELIMITER_TAG_CHARS="ANY" + REQUIRE_BEFORE_DELIMITER_CHAR='`' + REQUIRE_AFTER_DELIMITER_CHAR=":LINEFEED:"> + <BEGIN><<</BEGIN> + <END>`</END> + </SPAN> + + <SPAN TYPE="LITERAL2" NO_LINE_BREAK="FALSE" + DYNAMIC_TAGGING="TRUE" DELIMITER_MAX_CHAR="999" + DELIMITER_TAG_CHARS="ANY" + REQUIRE_AFTER_DELIMITER_CHAR=":LINEFEED:"> + <BEGIN><<</BEGIN> + <END>;,</END> + </SPAN> + + <!-- Operators with '>' sign --> + <SEQ TYPE="OPERATOR"><=</SEQ> + <SEQ TYPE="OPERATOR"><</SEQ> + + + +<!-- the normal Match at the End - should be checked if it works --> + <SPAN TYPE="LITERAL2" NO_LINE_BREAK="TRUE" REQUIRE_END_TAG="TRUE"> + <BEGIN>?</BEGIN> + <END>?</END> + </SPAN> + + <SEQ TYPE="OPERATOR">?</SEQ> + + </RULES> + + <RULES SET="POD" DEFAULT="COMMENT2"> + <!-- whitespace: (space and tab) --> + <WHITESPACE> </WHITESPACE> + <WHITESPACE> </WHITESPACE> + + <MARK_FOLLOWING TYPE="LABEL" AT_LINE_START="TRUE">=</MARK_FOLLOWING> + </RULES> </MODE> \ No newline at end of file Index: readme_EPIC.txt =================================================================== RCS file: /cvsroot/e-p-i-c/org.epic.ext.cbg.editor/modes/readme_EPIC.txt,v retrieving revision 1.1 retrieving revision 1.2 diff -u -d -r1.1 -r1.2 --- readme_EPIC.txt 25 Dec 2004 08:35:02 -0000 1.1 +++ readme_EPIC.txt 20 Jan 2005 17:29:29 -0000 1.2 @@ -1,4 +1,11 @@ -Notes on the newly (Dec. 2004) implemented features of the XML-File. +Notes on the newly (Jan. 2005) implemented features of the XML-File. + +For the SEQ-Type a new Keyword was introduced: + +GROUP + +If there exits an Group, any kind of Keyword is ignored! + Added Keywords effect mainly the SPAN-Type where additional Keywords specifiy the context more prececisly. The Keywords are: @@ -8,8 +15,9 @@ 4) DYNAMIC_TAGGING=TRUE/FALSE (default) 5) DELIMITER_MAX_CHAR = (any given positive Number) 6) NO_OF_MULTIPLE_ENDTAG= (any given positive Number) -7) REQUIRE_BEFORE_TAG= (any Characters resp. special Literals: :LINEFEED: :WHITESPACE:)# -8) REQUIRE_AFTER_TAG= (any Characters resp. special Literals: :LINEFEED: ) +7) REQUIRE_BEFORE_DELIMITER_CHAR= (any Characters) +8) REQUIRE_AFTER_DELIMITER_CHAR= (any Characters resp. special Literals: :LINEFEED:) +9) DELIMITER_TAG_CHARS= (default = empty) In detail: @@ -31,43 +39,30 @@ The Tag starts with the first non-Whitespace character after the specified (=found) BEGIN resp. GROUP and will be taken untill the first Whitespace occurs resp. EOF *OR* if the DELIMITER_MAX_CHAR is exceeded. -e.g. m+t+a+; +e.g. m+t+a+; the Tag 'm' is found out of the GROUP-List, next it takes the first non-Whitespace char after 'm', i.e. '+' and here it takes 1 char => the delimiter is '+'. -5) DELIMITER_MAX_CHAR: The parameter specifies the length of the Tag. +5) DELIMITER_MAX_CHAR: The parameter specifies the length of the Tag. This paramter has ONLY effect on DYNAMIC_TAGGING=TRUE, in any other case it is ignored. -6) NO_OF_MULTIPLE_ENDTAG: Specifies how many times the Tag should be used. +6) NO_OF_MULTIPLE_ENDTAG: Specifies how many times the Tag should be used. This property could be used independent of the setting DYNAMIC_TAGGING. -7) REQUIRE_BEFORE_TAG: This specifies which characters are required in front when DYNAMIC_TAGGING=TRUE. - -Note: The programmers lazyness (LeO) was too much, there it only checks, if there is content or not. If yes => Delimiter could be any -If not => Delimter any non-whitespace + non-alphanummerical - -8) REQUIRE_AFTER_TAG: Similar to the Tag REQUIRE_BEFORE_TAG. - -BUT here pleaze note the lazyiness of the implementor (LeO): Currently it is only considered one Character only. If there is any kind of requirement to expand it to two or more tags, please feel free to adapt the code correspondigly. - - -KNOWN BUGs: - -What not works: - -- different delimitertypes for Brackets, e.g. +7) REQUIRE_BEFORE_DELIMITER_CHAR: The character which is required before the Delimiter is retrieved. This parameter makes only sense, for Dynamic-Tagging, otherwise it is ignored. -s[a]{b} +The usage is especially for the HERE-Documents in Perl where '<<' specifies the start of the HERE-docs but could start immediately with the Delimiter as well with the Delimiter under quotes. But then the quotes are not required to be immediately after '<<' could be as well filled with withspaces. Therefore we have as BEGIN the <<-sequence, and then the REQUIRE_BEFORE_DELIMITER_CHAR set with quotes. -but what works is (as well as the other synthetic candies) +8) REQUIRE_AFTER_DELIMITER_CHAR: requires the follow-up char(sequence) after the Delimiter. If the follow-up char cannot be found, it continues the search. The Linefeed are used in symbolical manner. That's the only time where symbolical charactes are used! -s[a][b] +Pleaze note the lazyiness of the implementor (LeO): Currently it is only considered one Character only. If there is any kind of requirement to expand it to two or more tags, please feel free to adapt the code correspondigly. -- HERE Documents provide no stack as well the interpretation of \" is not performed. Additionally spaces could be interpreted differently then Perl does. -- the trinary operator ?: is not provided (see also below) +9) DELIMITER_TAG_CHARS: Specifies if the Delimiter consists of Alphanumeric-Characters or not. This parameter makes only sense, for Dynamic-Tagging, otherwise it is ignored. -- the operator / could be used for divisions as well as matching operator. Not much effort to interpret the correct situation is done, except for match-operator it is required to have them in one line. Same applies for the operator ? +If not set, then the Delimiter-Tag can only consists of alphanumeric-characters. +If set with any kind of content, the Delimiter-Tag could be any character, including non-alphanumeric-characters! +Note: For further extension it could be used for other specific chars. Then the sources have to be adapted. \ No newline at end of file |