The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
<?xml version="1.0" encoding='Windows-1251'?>
<!DOCTYPE hrc PUBLIC "-//Cail Lomecb//DTD Colorer HRC take5//EN"
  "http://colorer.sf.net/2003/hrc.dtd">
<hrc version="take5" xmlns="http://colorer.sf.net/2003/hrc"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation="http://colorer.sf.net/2003/hrc http://colorer.sf.net/2003/hrc.xsd">
<!--
   Forth Syntax
With Help of
   Andrey Cherezov <ac@eserv.ru>       based on SP-forth
   Loktev Nikola <loktev@niisi.msk.ru> based on P-forth
   cail: add new worddiv parameter
-->
   <type name="forth">

      <import type="def"/>

      <region name="forHiColor" parent="LabelStrong"/>
      <region name="forString" parent="String"/>
      <region name="forComment" parent="Comment"/>
      <region name="forMl" parent="String"/>
      <region name="forWord" parent="Keyword"/>
      <region name="forResWord" parent="Label"/>
      <region name="forNumb" parent="Number"/>
      <region name="forExtWords" parent="VarStrong"/>
      <region name="forWordDefinition" parent="forHiColor"/>


      <scheme name="forth">
<!-- linear comments -->
         <regexp match="/(\\.*$)/" region0="forComment"/>
         <block start="/\( /" end="/\)/" scheme="Comment" region="forComment"/>
         <block start="/0\s+\[if\]/i" end="/\[then\]/i" scheme="Comment" region="forComment"/>
         <block start="/\[/" end="/\]/" scheme="Comment" region="forHiColor"/>
<!-- why ???
   <block  start="/OF /i" end="/ ENDOF/i" scheme="Comment" region0="forMl"/-->
<!-- strings -->
         <block start="/(\s|^)(\.\'\s+)/" end="/\'/" scheme="Comment" region="forString"/>
         <block start="/(\s|^)([SCsc\.]|ABORT)\&#34;/i" end="/&#34;/" scheme="Comment" region="forString"/>
<!-- numbers -->
         <regexp match="/\b(0[xX])?[\da-fA-F]+\b/" region0="forNumb"/>
         <regexp match="/\b[0-9]+\b/" region0="forNumb"/>
<!-- LNM: Local variables -->
         <regexp match="/(\{)(.+?)(\|)(.+?)(\-\-)(.*?)(\})/" region1="Symbol" region2="String" region3="StringEdge" region4="StringContent" region5="Symbol" region6="StringContent" region7="Symbol"/>
<!-- def words -->
         <regexp match="/(\s|^)(:)\s+(\S+)/" region0="forWord" region3="forWordDefinition"/>
         <regexp match="/(WINAPI:)\s+(\S+)/" region0="forWord" region2="forWordDefinition"/>
         <regexp match="/(CREATE)\s+(\S+)/" region0="forWord" region2="forWordDefinition"/>
         <regexp match="/(VARIABLE)\s+(\S+)/" region0="forWord" region2="forWordDefinition"/>
         <regexp match="/(USER)\s+(\S+)/" region0="forWord" region2="forWordDefinition"/>
         <regexp match="/(CONSTANT)\s+(\S+)/" region0="forWord" region2="forWordDefinition"/>
         <regexp match="/(VOCABULARY)\s+(\S+)/" region0="forWord" region2="forWordDefinition"/>
         <regexp match="/(VECT)\s+(\S+)/" region0="forWord" region2="forWordDefinition"/>
         <regexp match="/(VALUE)\s+(\S+)/" region0="forWord" region2="forWordDefinition"/>
         <regexp match="/(ASCII\s+\S)/i" region0="forString"/>
         <regexp match="/(\[char\]\s+\S)/i" region0="forString"/>
         <regexp match="/(parse\s+\S+)/i" region0="forWordDefinition"/>
         <regexp match="/(parse-word\s+\S+)/i" region0="forWordDefinition"/>
<!-- Immediate -->
         <regexp match="/(\['\]\s+(\S+))/" region0="forMl" region2="forWord"/>
         <regexp match="/(POSTPONE\s+\S+)/" region0="forMl"/>
         <keywords ignorecase="yes" worddiv="[\s\[\]\{\}\(\)]" region="forResWord">
            <word name="OF"/>
            <word name="ENDOF"/>
            <word name="CASE"/>
            <word name="ENDCASE"/>
            <word name="IF"/>
            <word name="ELSE"/>
            <word name="THEN"/>
            <word name="BEGIN"/>
            <word name="WHILE"/>
            <word name="REPEAT"/>
            <word name="BEGIN"/>
            <word name="UNTIL"/>
            <word name="AGAIN"/>
            <word name="PREVIOUS" region="forWordDefinition"/>
            <word name="DEFINITIONS" region="forWordDefinition"/>
            <word name="DOES&gt;" region="forWordDefinition"/>
            <word name="DO"/>
            <word name="+LOOP"/>
            <word name="LOOP"/>
            <word name="?DO"/>
            <word name="IMMEDIATE"/>
            <word name="DECIMAL"/>
            <word name="HEX"/>
            <word name="OCTAL"/>
         </keywords>
         <keywords ignorecase="yes" worddiv="[\s\[\]\{\}\(\)]" region="forWord">
            <word name="!"/>
            <word name="#"/>
            <word name="#&gt;"/>
            <word name="#S"/>
            <word name="#TIB"/>
            <word name="&lt;"/>
            <word name="&lt;#"/>
            <word name="&lt;&gt;"/>
            <word name="*"/>
            <word name="*/"/>
            <word name="*/MOD"/>
            <word name="+!"/>
            <word name="+"/>
            <word name=","/>
            <word name="-"/>
            <word name="."/>
            <word name=".0"/>
            <word name=".S"/>
            <word name="/"/>
            <word name="/MOD"/>
            <word name="2/"/>
            <word name="2&gt;R"/>
            <word name="2DROP"/>
            <word name="2DUP"/>
            <word name="2LITERAL"/>
            <word name="2OVER"/>
            <word name="2R&gt;"/>
            <word name="2R@"/>
            <word name="2SWAP"/>
            <word name=":"/>
            <word name=":NONAME"/>
            <word name="="/>
            <word name="&gt;"/>
            <word name="?DUP"/>
            <word name="@"/>
            <word name="ABORT"/>
            <word name="ABS"/>
            <word name="ACCEPT"/>
            <word name="AGAIN"/>
            <word name="ALIGN"/>
            <word name="ALIGNED"/>
            <word name="ALLOCATE"/>
            <word name="ALLOT"/>
            <word name="ALSO"/>
            <word name="AND"/>
            <word name="ASCII"/>
            <word name="BASE"/>
            <word name="BETWEEN"/>
            <word name="BL"/>
            <word name="BLK"/>
            <word name="BUFFER:"/>
            <word name="BYE"/>
            <word name="CATCH"/>
            <word name="CELL"/>
            <word name="CELL+"/>
            <word name="CELL-"/>
            <word name="CELLS"/>
            <word name="CHAR"/>
            <word name="CHAR+"/>
            <word name="CHARS"/>
            <word name="CLITERAL"/>
            <word name="CLOSE-FILE"/>
            <word name="CMOVE"/>
            <word name="CMOVE&gt;"/>
            <word name="CODE&gt;"/>
            <word name="COMPARE"/>
            <word name="compile"/>
            <word name="CONSTANT"/>
            <word name="CONTEXT"/>
            <word name="COUNT"/>
            <word name="CR"/>
            <word name="create"/>
            <word name="CREATE-FILE"/>
            <word name="CURRENT"/>
            <word name="DABS"/>
            <word name="DEFER"/>
            <word name="DELETE-FILE"/>
            <word name="DEPTH"/>
            <word name="DIGIT"/>
            <word name="DNEGATE"/>
            <word name="DP"/>
            <word name="DROP"/>
            <word name="DUMP"/>
            <word name="DUP"/>
            <word name="EKEY"/>
            <word name="EKEY?"/>
            <word name="EMIT"/>
            <word name="ENVIRONMENT?"/>
            <word name="ERASE"/>
            <word name="EVALUATE"/>
            <word name="EXECUTE"/>
            <word name="EXIT"/>
            <word name="FALSE"/>
            <word name="FIELD"/>
            <word name="FILE-POSITION"/>
            <word name="FILE-SIZE"/>
            <word name="FILL"/>
            <word name="FIND"/>
            <word name="FM/MOD"/>
            <word name="FORTH"/>
            <word name="FORTH-WORDLIST"/>
            <word name="FREE"/>
            <word name="GET-CURRENT"/>
            <word name="GET-ORDER"/>
            <word name="HANDLER"/>
            <word name="HEADER"/>
            <word name="HERE"/>
            <word name="HIDE"/>
            <word name="HLD"/>
            <word name="HOLD"/>
            <word name="include"/>
            <word name="INCLUDE-FILE"/>
            <word name="INCLUDED"/>
            <word name="INTERPRET"/>
            <word name="INVERT"/>
            <word name="IS"/>
            <word name="KEY"/>
            <word name="KEY?"/>
            <word name="LATEST"/>
            <word name="LEAVE"/>
            <word name="LITERAL"/>
            <word name="LSHIFT"/>
            <word name="M*"/>
            <word name="MAX"/>
            <word name="MIN"/>
            <word name="MOD"/>
            <word name="MOVE"/>
            <word name="NAME&gt;"/>
            <word name="NEGATE"/>
            <word name="NIP"/>
            <word name="NLIST"/>
            <word name="NOOP"/>
            <word name="NOT"/>
            <word name="ONLY"/>
            <word name="OPEN-FILE"/>
            <word name="OR"/>
            <word name="ORDER"/>
            <word name="OVER"/>
            <word name="PAD"/>
            <word name="PARSE"/>
            <word name="PICK"/>
            <word name="POSTPONE"/>
            <word name="PREVIOUS"/>
            <word name="private" region="forHiColor"/>
            <word name="privatize" region="forHiColor"/>
            <word name="QUIT"/>
            <word name="R/O"/>
            <word name="R/W"/>
            <word name="R0"/>
            <word name="R&gt;"/>
            <word name="R@"/>
            <word name="RDROP"/>
            <word name="READ-FILE"/>
            <word name="READ-LINE"/>
            <word name="RECURSE"/>
            <word name="REFILL"/>
            <word name="REPOSITION-FILE"/>
            <word name="RESIZE"/>
            <word name="RESIZE-FILE"/>
            <word name="ROLL"/>
            <word name="ROT"/>
            <word name="RP!"/>
            <word name="RP@"/>
            <word name="RSHIFT"/>
            <word name="S0"/>
            <word name="SEARCH"/>
            <word name="SEARCH-WORDLIST"/>
            <word name="SET-CURRENT"/>
            <word name="SET-ORDER"/>
            <word name="SIGN"/>
            <word name="SKIP"/>
            <word name="SLITERAL"/>
            <word name="SM/REM"/>
            <word name="SMUDGE"/>
            <word name="SOURCE"/>
            <word name="SOURCE-ID"/>
            <word name="SP!"/>
            <word name="SP@"/>
            <word name="SPACE"/>
            <word name="SPACES"/>
            <word name="STATE"/>
            <word name="SWAP"/>
            <word name="THROW"/>
            <word name="TIB"/>
            <word name="TO"/>
            <word name="TRUE"/>
            <word name="TUCK"/>
            <word name="TYPE"/>
            <word name="U&lt;"/>
            <word name="U."/>
            <word name="U/"/>
            <word name="U&gt;"/>
            <word name="U&gt;D"/>
            <word name="UM*"/>
            <word name="UM/MOD"/>
            <word name="UMOD"/>
            <word name="UNLOOP"/>
            <word name="VALUE"/>
            <word name="variable"/>
            <word name="vocabulary"/>
            <word name="VOCS"/>
            <word name="W!"/>
            <word name="W,"/>
            <word name="W/O"/>
            <word name="W@"/>
            <word name="WARNING"/>
            <word name="WITHIN"/>
            <word name="WORD"/>
            <word name="WORDLIST"/>
            <word name="WORDS"/>
            <word name="WRITE-FILE"/>
            <word name="WRITE-LINE"/>
            <word name="XOR"/>
            <word name="["/>
            <word name="[CHAR]"/>
            <word name="]"/>
            <word name="&#34;,"/>
            <word name="&lt;&lt;"/>
            <word name="(.&#34;)"/>
            <word name="(ABORT&#34;)"/>
            <word name="-&gt;"/>
            <word name="-ROT"/>
            <word name="-TRAILING"/>
            <word name="0&lt;/"/>
            <word name="0&lt;&gt;/"/>
            <word name="0=/"/>
            <word name="1\+"/>
            <word name="1\-"/>
            <word name="2\+"/>
            <word name="2\-"/>
            <word name="&gt;&gt;"/>
            <word name="&gt;BODY"/>
            <word name="&gt;CODE"/>
            <word name="&gt;IN"/>
            <word name="&gt;NUMBER"/>
            <word name="&gt;R"/>
            <word name="ABORT&#34;"/>
            <word name="C!"/>
            <word name="C,"/>
            <word name="C/L"/>
            <word name="C@"/>
            <word name="C@"/>
            <word name="D&lt;"/>
            <word name="D0="/>
            <word name="D&gt;S"/>
            <word name="D\+"/>
            <word name="D\."/>
            <word name="S&gt;D"/>
            <word name="\.S"/>
         </keywords>
<!-- Key words for OpenBoot programming LNM -->
         <keywords ignorecase="yes" worddiv="[\s\[\]\{\}\(\)]" region="forExtWords">
            <word name="!nt"/>
            <word name="@nt"/>
            <word name="br+"/>
            <word name="br-"/>
            <word name="br0"/>
            <word name="ddo"/>
            <word name="decode-2int"/>
            <word name="decode-int"/>
            <word name="decode-phys"/>
            <word name="decode-string"/>
            <word name="device-name"/>
            <word name="DICTLIST"/>
            <word name="encode+"/>
            <word name="encode-2int"/>
            <word name="encode-bytes"/>
            <word name="encode-int"/>
            <word name="encode-phys"/>
            <word name="encode-string"/>
            <word name="end0"/>
            <word name="end1"/>
            <word name="ex"/>
            <word name="ex+"/>
            <word name="ex-"/>
            <word name="ex0"/>
            <word name="external"/>
            <word name="finish-device"/>
            <word name="headers"/>
            <word name="if+"/>
            <word name="if-"/>
            <word name="if0"/>
            <word name="my-self"/>
            <word name="NAMEBASE"/>
            <word name="new-device"/>
            <word name="PROPERTY"/>
            <word name="rp"/>
            <word name="TVOCABULARY"/>
         </keywords>
      </scheme>

   </type>
</hrc>
<!-- ***** BEGIN LICENSE BLOCK *****
   - Version: MPL 1.1/GPL 2.0/LGPL 2.1
   -
   - The contents of this file are subject to the Mozilla Public License Version
   - 1.1 (the "License"); you may not use this file except in compliance with
   - the License. You may obtain a copy of the License at
   - http://www.mozilla.org/MPL/
   -
   - Software distributed under the License is distributed on an "AS IS" basis,
   - WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
   - for the specific language governing rights and limitations under the
   - License.
   -
   - The Original Code is the Colorer Library.
   -
   - The Initial Developer of the Original Code is
   - Cail Lomecb <cail@nm.ru>.
   - Portions created by the Initial Developer are Copyright (C) 1999-2003
   - the Initial Developer. All Rights Reserved.
   -
   - Contributor(s):
   -
   - Alternatively, the contents of this file may be used under the terms of
   - either the GNU General Public License Version 2 or later (the "GPL"), or
   - the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
   - in which case the provisions of the GPL or the LGPL are applicable instead
   - of those above. If you wish to allow use of your version of this file only
   - under the terms of either the GPL or the LGPL, and not to allow others to
   - use your version of this file under the terms of the MPL, indicate your
   - decision by deleting the provisions above and replace them with the notice
   - and other provisions required by the LGPL or the GPL. If you do not delete
   - the provisions above, a recipient may use your version of this file under
   - the terms of any one of the MPL, the GPL or the LGPL.
   -
   - ***** END LICENSE BLOCK ***** -->