|
|
|
<!DOCTYPE language SYSTEM "language.dtd">
|
|
|
|
<!--
|
|
|
|
*************************************************************************
|
|
|
|
* *
|
|
|
|
* Syntax highlighting for IBM iSeries ILE RPG *
|
|
|
|
* Copyright (C) 2003, Nick Roux *
|
|
|
|
* *
|
|
|
|
*************************************************************************
|
|
|
|
|
|
|
|
Updated: Nick Roux <nick@sundown.homeip.net>
|
|
|
|
Date: 2006/04/12
|
|
|
|
Version: 1.05
|
|
|
|
Added support for compiler directives and especially /free
|
|
|
|
Added positional check for opcodes and validation of conditioning indicators
|
|
|
|
|
|
|
|
Author: Nick Roux <nick@sundown.homeip.net>
|
|
|
|
Date: Sometime during 2003
|
|
|
|
Version: 1.0
|
|
|
|
|
|
|
|
This file contains the XML syntax highlighting description for the IBM
|
|
|
|
iSeries ILE RPG, for KATE, the TDE Advanced Editor.
|
|
|
|
Based on information from IBM publication SC09-2508-05
|
|
|
|
|
|
|
|
Known problems:
|
|
|
|
1) Calculation Specification Factor1 does not get highlighted
|
|
|
|
2) Calculation Specification Extended Factor2 Continuation Line does not work correctly
|
|
|
|
3) Everything from the start of Factor2 is assumed free format
|
|
|
|
4) Will make a total mess of compile time array data, but that seems rather fitting
|
|
|
|
5) Operation Code Extenders are not check/highlighted
|
|
|
|
6) It is slow
|
|
|
|
|
|
|
|
This program, including associated files, is free software. You may
|
|
|
|
distribute it and/or modify it under the terms of the GNU General Public
|
|
|
|
License as published by the Free Software Foundation; either Version 2 of
|
|
|
|
the license, or (at your option) any later version.
|
|
|
|
|
|
|
|
This program is distributed in the hope that it will be useful, but
|
|
|
|
WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
|
|
|
or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
|
|
|
for more details.
|
|
|
|
|
|
|
|
You should have received a copy of the GNU General Public License along
|
|
|
|
with this program; if not, write to the Free Software Foundation, Inc.,
|
|
|
|
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
|
|
|
|
|
|
|
-->
|
|
|
|
|
|
|
|
<language name="ILERPG" version="8-1" kateversion="2.2" section="Sources" extensions="QRPG*.*;qrpg*.*" mimetype="text/x-ilerpg-src" casesensitive="0" license="GPLv2+" author="Nick Roux (nick@sundown.homeip.net)">
|
|
|
|
<highlighting>
|
|
|
|
<list name="dkeywords">
|
|
|
|
<item>EXTPROC</item>
|
|
|
|
<item>EXTPGM</item>
|
|
|
|
<item>OPDESC</item>
|
|
|
|
<item>DATFMT</item>
|
|
|
|
<item>DIM</item>
|
|
|
|
<item>LIKEDS</item>
|
|
|
|
<item>LIKEREC</item>
|
|
|
|
<item>LIKE</item>
|
|
|
|
<item>PROCPTR</item>
|
|
|
|
<item>TIMFMT</item>
|
|
|
|
<item>VARYING</item>
|
|
|
|
<item>ASCEND</item>
|
|
|
|
<item>CONST</item>
|
|
|
|
<item>NOOPT</item>
|
|
|
|
<item>OPTIONS</item>
|
|
|
|
<item>VALUE</item>
|
|
|
|
<item>QUALIFIED</item>
|
|
|
|
<item>INZ</item>
|
|
|
|
<item>BASED</item>
|
|
|
|
</list>
|
|
|
|
<list name="directives">
|
|
|
|
<item>FREE</item>
|
|
|
|
<item>END-FREE</item>
|
|
|
|
<item>TITLE</item>
|
|
|
|
<item>EJECT</item>
|
|
|
|
<item>SPACE</item>
|
|
|
|
<item>COPY</item>
|
|
|
|
<item>INCLUDE</item>
|
|
|
|
<item>DEFINE</item>
|
|
|
|
<item>UNDEFINE</item>
|
|
|
|
<item>IF</item>
|
|
|
|
<item>ELSE</item>
|
|
|
|
<item>EXEC</item>
|
|
|
|
<item>END-EXEC</item>
|
|
|
|
<item>ELSEIF</item>
|
|
|
|
<item>ENDIF</item>
|
|
|
|
<item>EOF</item>
|
|
|
|
</list>
|
|
|
|
<list name="directives2">
|
|
|
|
<item>NOT</item>
|
|
|
|
<item>DEFINED</item>
|
|
|
|
</list>
|
|
|
|
<list name="directives3">
|
|
|
|
<item>DEFINED</item>
|
|
|
|
</list>
|
|
|
|
<list name="biffs">
|
|
|
|
<item>ABS</item>
|
|
|
|
<item>ADDR</item>
|
|
|
|
<item>ALLOC</item>
|
|
|
|
<item>BITAND</item>
|
|
|
|
<item>BITNOT</item>
|
|
|
|
<item>BITOR</item>
|
|
|
|
<item>BITXOR</item>
|
|
|
|
<item>CHAR</item>
|
|
|
|
<item>CHECK</item>
|
|
|
|
<item>CHECKR</item>
|
|
|
|
<item>DATE</item>
|
|
|
|
<item>DAYS</item>
|
|
|
|
<item>DEC</item>
|
|
|
|
<item>DECH</item>
|
|
|
|
<item>DECPOS</item>
|
|
|
|
<item>DIFF</item>
|
|
|
|
<item>DIV</item>
|
|
|
|
<item>EDITC</item>
|
|
|
|
<item>EDITFLT</item>
|
|
|
|
<item>EDITW</item>
|
|
|
|
<item>ELEM</item>
|
|
|
|
<item>EOF</item>
|
|
|
|
<item>EQUAL</item>
|
|
|
|
<item>ERROR</item>
|
|
|
|
<item>FIELDS</item>
|
|
|
|
<item>FLOAT</item>
|
|
|
|
<item>FOUND</item>
|
|
|
|
<item>GRAPH</item>
|
|
|
|
<item>HOURS</item>
|
|
|
|
<item>INT</item>
|
|
|
|
<item>INTH</item>
|
|
|
|
<item>KDS</item>
|
|
|
|
<item>LEN</item>
|
|
|
|
<item>LOOKUP</item>
|
|
|
|
<item>LOOKUPLT</item>
|
|
|
|
<item>LOOKUPLE</item>
|
|
|
|
<item>LOOKUPGT</item>
|
|
|
|
<item>LOOKUPGE</item>
|
|
|
|
<item>MINUTES</item>
|
|
|
|
<item>MONTHS</item>
|
|
|
|
<item>MSECONDS</item>
|
|
|
|
<item>NULLIND</item>
|
|
|
|
<item>OCCUR</item>
|
|
|
|
<item>OPEN</item>
|
|
|
|
<item>PADDR</item>
|
|
|
|
<item>PARMS</item>
|
|
|
|
<item>REALLOC</item>
|
|
|
|
<item>REM</item>
|
|
|
|
<item>REPLACE</item>
|
|
|
|
<item>SCAN</item>
|
|
|
|
<item>SECONDS</item>
|
|
|
|
<item>SHTDN</item>
|
|
|
|
<item>SIZE</item>
|
|
|
|
<item>SQRT</item>
|
|
|
|
<item>STATUS</item>
|
|
|
|
<item>STR</item>
|
|
|
|
<item>SUBARR</item>
|
|
|
|
<item>SUBDT</item>
|
|
|
|
<item>SUBST</item>
|
|
|
|
<item>THIS</item>
|
|
|
|
<item>TIME</item>
|
|
|
|
<item>TIMESTAMP</item>
|
|
|
|
<item>TLOOKUP</item>
|
|
|
|
<item>TLOOKUPLT</item>
|
|
|
|
<item>TLOOKUPLE</item>
|
|
|
|
<item>TLOOKUPGT</item>
|
|
|
|
<item>TLOOKUPGE</item>
|
|
|
|
<item>TRIM</item>
|
|
|
|
<item>TRIML</item>
|
|
|
|
<item>TRIMR</item>
|
|
|
|
<item>UCS2</item>
|
|
|
|
<item>UNS</item>
|
|
|
|
<item>UNSH</item>
|
|
|
|
<item>XFOOT</item>
|
|
|
|
<item>XLATE</item>
|
|
|
|
<item>YEARS</item>
|
|
|
|
</list>
|
|
|
|
<list name="evalopcodes2">
|
|
|
|
<item>IF</item>
|
|
|
|
</list>
|
|
|
|
<list name="evalopcodes3">
|
|
|
|
<item>DOW</item>
|
|
|
|
<item>DOU</item>
|
|
|
|
<item>FOR</item>
|
|
|
|
</list>
|
|
|
|
<list name="evalopcodes4">
|
|
|
|
<item>WHEN</item>
|
|
|
|
<item>EVAL</item>
|
|
|
|
</list>
|
|
|
|
<list name="evalopcodes5">
|
|
|
|
<item>EVALR</item>
|
|
|
|
</list>
|
|
|
|
<list name="evalopcodes6">
|
|
|
|
<item>RETURN</item>
|
|
|
|
</list>
|
|
|
|
<list name="nonevalopcodes2">
|
|
|
|
<item>DO</item>
|
|
|
|
<item>IN</item>
|
|
|
|
<item>OR</item>
|
|
|
|
</list>
|
|
|
|
<list name="nonevalopcodes3">
|
|
|
|
<item>ACQ</item>
|
|
|
|
<item>ADD</item>
|
|
|
|
<item>AND</item>
|
|
|
|
<item>CAB</item>
|
|
|
|
<item>CAS</item>
|
|
|
|
<item>CAT</item>
|
|
|
|
<item>DIV</item>
|
|
|
|
<item>DOU</item>
|
|
|
|
<item>END</item>
|
|
|
|
<item>MVR</item>
|
|
|
|
<item>OUT</item>
|
|
|
|
<item>REL</item>
|
|
|
|
<item>SUB</item>
|
|
|
|
<item>TAG</item>
|
|
|
|
</list>
|
|
|
|
<list name="nonevalopcodes4">
|
|
|
|
<item>CALL</item>
|
|
|
|
<item>COMP</item>
|
|
|
|
<item>DUMP</item>
|
|
|
|
<item>ELSE</item>
|
|
|
|
<item>EXSR</item>
|
|
|
|
<item>FEOD</item>
|
|
|
|
<item>GOTO</item>
|
|
|
|
<item>IFGT</item>
|
|
|
|
<item>IFLT</item>
|
|
|
|
<item>IFEQ</item>
|
|
|
|
<item>IFNE</item>
|
|
|
|
<item>IFGE</item>
|
|
|
|
<item>IFLE</item>
|
|
|
|
<item>ITER</item>
|
|
|
|
<item>KFLD</item>
|
|
|
|
<item>MOVE</item>
|
|
|
|
<item>MULT</item>
|
|
|
|
<item>NEXT</item>
|
|
|
|
<item>OPEN</item>
|
|
|
|
<item>ORGT</item>
|
|
|
|
<item>ORLT</item>
|
|
|
|
<item>OREQ</item>
|
|
|
|
<item>ORNE</item>
|
|
|
|
<item>ORGE</item>
|
|
|
|
<item>ORLE</item>
|
|
|
|
<item>PARM</item>
|
|
|
|
<item>POST</item>
|
|
|
|
<item>READ</item>
|
|
|
|
<item>SCAN</item>
|
|
|
|
<item>SQRT</item>
|
|
|
|
<item>TEST</item>
|
|
|
|
<item>TIME</item>
|
|
|
|
</list>
|
|
|
|
<list name="nonevalopcodes5">
|
|
|
|
<item>ALLOC</item>
|
|
|
|
<item>ANDGT</item>
|
|
|
|
<item>ANDLT</item>
|
|
|
|
<item>ANDEQ</item>
|
|
|
|
<item>ANDNE</item>
|
|
|
|
<item>ANDGE</item>
|
|
|
|
<item>ANDLE</item>
|
|
|
|
<item>BEGSR</item>
|
|
|
|
<item>BITON</item>
|
|
|
|
<item>CABGT</item>
|
|
|
|
<item>CABLT</item>
|
|
|
|
<item>CABEQ</item>
|
|
|
|
<item>CABNE</item>
|
|
|
|
<item>CABGE</item>
|
|
|
|
<item>CABLE</item>
|
|
|
|
<item>CALLB</item>
|
|
|
|
<item>CALLP</item>
|
|
|
|
<item>CASGT</item>
|
|
|
|
<item>CASLT</item>
|
|
|
|
<item>CASEQ</item>
|
|
|
|
<item>CASNE</item>
|
|
|
|
<item>CASGE</item>
|
|
|
|
<item>CASLE</item>
|
|
|
|
<item>CHAIN</item>
|
|
|
|
<item>CHECK</item>
|
|
|
|
<item>CLEAR</item>
|
|
|
|
<item>CLOSE</item>
|
|
|
|
<item>CHECK</item>
|
|
|
|
<item>CLEAR</item>
|
|
|
|
<item>CLOSE</item>
|
|
|
|
<item>DOWGT</item>
|
|
|
|
<item>DOWLT</item>
|
|
|
|
<item>DOWEQ</item>
|
|
|
|
<item>DOWNE</item>
|
|
|
|
<item>DOWGE</item>
|
|
|
|
<item>DOWLE</item>
|
|
|
|
<item>DOUGT</item>
|
|
|
|
<item>DOULT</item>
|
|
|
|
<item>DOUEQ</item>
|
|
|
|
<item>DOUNE</item>
|
|
|
|
<item>DOUGE</item>
|
|
|
|
<item>DOULE</item>
|
|
|
|
<item>DSPLY</item>
|
|
|
|
<item>ENDCS</item>
|
|
|
|
<item>ENDDO</item>
|
|
|
|
<item>ENDIF</item>
|
|
|
|
<item>ENDSL</item>
|
|
|
|
<item>ENDSR</item>
|
|
|
|
<item>EXFMT</item>
|
|
|
|
<item>FORCE</item>
|
|
|
|
<item>KLIST</item>
|
|
|
|
<item>LEAVE</item>
|
|
|
|
<item>MHHZO</item>
|
|
|
|
<item>MHLZO</item>
|
|
|
|
<item>MLHZO</item>
|
|
|
|
<item>MLLZO</item>
|
|
|
|
<item>MOVEA</item>
|
|
|
|
<item>MOVEL</item>
|
|
|
|
<item>OCCUR</item>
|
|
|
|
<item>OTHER</item>
|
|
|
|
<item>PLIST</item>
|
|
|
|
<item>READC</item>
|
|
|
|
<item>READE</item>
|
|
|
|
<item>READP</item>
|
|
|
|
<item>RESET</item>
|
|
|
|
<item>ROLBK</item>
|
|
|
|
<item>SETGT</item>
|
|
|
|
<item>SETLL</item>
|
|
|
|
<item>SETON</item>
|
|
|
|
<item>SHTDN</item>
|
|
|
|
<item>SORTA</item>
|
|
|
|
<item>SUBST</item>
|
|
|
|
<item>TESTB</item>
|
|
|
|
<item>TESTN</item>
|
|
|
|
<item>TESTZ</item>
|
|
|
|
<item>WRITE</item>
|
|
|
|
<item>XFOOT</item>
|
|
|
|
<item>XLATE</item>
|
|
|
|
</list>
|
|
|
|
<list name="nonevalopcodes6">
|
|
|
|
<item>ADDDUR</item>
|
|
|
|
<item>BITOFF</item>
|
|
|
|
<item>CHECKR</item>
|
|
|
|
<item>COMMIT</item>
|
|
|
|
<item>DEFINE</item>
|
|
|
|
<item>DELETE</item>
|
|
|
|
<item>EXCEPT</item>
|
|
|
|
<item>EXTRCT</item>
|
|
|
|
<item>LOOKUP</item>
|
|
|
|
<item>READPE</item>
|
|
|
|
<item>RETURN</item>
|
|
|
|
<item>SELECT</item>
|
|
|
|
<item>SETOFF</item>
|
|
|
|
<item>SUBDUR</item>
|
|
|
|
<item>UNLOCK</item>
|
|
|
|
<item>UPDATE</item>
|
|
|
|
<item>WHENGT</item>
|
|
|
|
<item>WHENLT</item>
|
|
|
|
<item>WHENEQ</item>
|
|
|
|
<item>WHENNR</item>
|
|
|
|
<item>WHENGE</item>
|
|
|
|
<item>WHENLE</item>
|
|
|
|
</list>
|
|
|
|
<list name="nonevalopcodes7">
|
|
|
|
<item>DEALLOC</item>
|
|
|
|
<item>REALLOC</item>
|
|
|
|
</list>
|
|
|
|
<list name="freeopcodes">
|
|
|
|
<item>ACQ</item>
|
|
|
|
<item>BEGSR</item>
|
|
|
|
<item>CALLP</item>
|
|
|
|
<item>CHAIN</item>
|
|
|
|
<item>CLEAR</item>
|
|
|
|
<item>CLOSE</item>
|
|
|
|
<item>COMMIT</item>
|
|
|
|
<item>DEALLOC</item>
|
|
|
|
<item>DELETE</item>
|
|
|
|
<item>DOU</item>
|
|
|
|
<item>DOW</item>
|
|
|
|
<item>DSPLY</item>
|
|
|
|
<item>DUMP</item>
|
|
|
|
<item>ELSE</item>
|
|
|
|
<item>ELSEIF</item>
|
|
|
|
<item>ENDDO</item>
|
|
|
|
<item>ENDFOR</item>
|
|
|
|
<item>ENDIF</item>
|
|
|
|
<item>ENDMON</item>
|
|
|
|
<item>ENDSL</item>
|
|
|
|
<item>ENDSR</item>
|
|
|
|
<item>EVAL</item>
|
|
|
|
<item>EVALR</item>
|
|
|
|
<item>EXCEPT</item>
|
|
|
|
<item>EXFMT</item>
|
|
|
|
<item>EXSR</item>
|
|
|
|
<item>FEOD</item>
|
|
|
|
<item>FOR</item>
|
|
|
|
<item>FORCE</item>
|
|
|
|
<item>IF</item>
|
|
|
|
<item>IN</item>
|
|
|
|
<item>ITER</item>
|
|
|
|
<item>LEAVE</item>
|
|
|
|
<item>LEAVESR</item>
|
|
|
|
<item>MONITOR</item>
|
|
|
|
<item>NEXT</item>
|
|
|
|
<item>ON-ERROR</item>
|
|
|
|
<item>OPEN</item>
|
|
|
|
<item>OTHER</item>
|
|
|
|
<item>OUT</item>
|
|
|
|
<item>POST</item>
|
|
|
|
<item>READ</item>
|
|
|
|
<item>READC</item>
|
|
|
|
<item>READE</item>
|
|
|
|
<item>READP</item>
|
|
|
|
<item>READPE</item>
|
|
|
|
<item>REL</item>
|
|
|
|
<item>RESET</item>
|
|
|
|
<item>RETURN</item>
|
|
|
|
<item>ROLBK</item>
|
|
|
|
<item>SELECT</item>
|
|
|
|
<item>SETGT</item>
|
|
|
|
<item>SETLL</item>
|
|
|
|
<item>SORTA</item>
|
|
|
|
<item>TEST</item>
|
|
|
|
<item>UNLOCK</item>
|
|
|
|
<item>UPDATE</item>
|
|
|
|
<item>WHEN</item>
|
|
|
|
<item>WRITE</item>
|
|
|
|
</list>
|
|
|
|
|
|
|
|
<contexts>
|
|
|
|
|
|
|
|
<!-- Start here -->
|
|
|
|
<!-- Form Type -->
|
|
|
|
<context name="Default" attribute="Normal Text" lineEndContext="#stay">
|
|
|
|
<RegExpr attribute="Comment" context="Comments" String="[PpOoIiHhFfDdCc ]?\*"/>
|
|
|
|
<RegExpr attribute="Directive" context="Directives" String="[PpOoIiHhFfDdCc ]?/"/>
|
|
|
|
<AnyChar attribute="Keyword" context="AnyCode" String="OoIiHhFf"/>
|
|
|
|
<AnyChar attribute="Keyword" context="D" String="Dd"/>
|
|
|
|
<AnyChar attribute="Keyword" context="P" String="Pp"/>
|
|
|
|
<AnyChar attribute="Keyword" context="CControlLevel" String="Cc"/>
|
|
|
|
</context>
|
|
|
|
|
|
|
|
<!-- Calculation Specifications -->
|
|
|
|
<!-- Control Level -->
|
|
|
|
<context name="CControlLevel" attribute="Normal Text" lineEndContext="#pop">
|
|
|
|
<RegExpr attribute="Indicator" context="CIndicators" String="\ {2}"/>
|
|
|
|
<RegExpr attribute="Indicator" context="CIndicators" String="[L|l][0-9]"/>
|
|
|
|
<RegExpr attribute="Indicator" context="CIndicators" String="[O|o|L|l|S|s][R|r]"/>
|
|
|
|
<RegExpr attribute="Indicator" context="CIndicators" String="[A|a][N|n]"/>
|
|
|
|
<RegExpr attribute="Indicator" context="CIndicators" String="[L|l|S|s][R|r]"/>
|
|
|
|
<RegExpr attribute="Alert" context="CIndicators" String=".{2}"/>
|
|
|
|
</context>
|
|
|
|
|
|
|
|
<!-- Indicators -->
|
|
|
|
<context name="CIndicators" attribute="Normal Text" lineEndContext="#pop#pop">
|
|
|
|
<RegExpr attribute="Indicator" context="CFactor1" String="\ {3}"/>
|
|
|
|
<RegExpr attribute="Indicator" context="CFactor1" String="[\ |N|n][0-9]{2}"/>
|
|
|
|
<RegExpr attribute="Indicator" context="CFactor1" String="[\ |N|n][K|k][A-N|p-y]"/>
|
|
|
|
<RegExpr attribute="Indicator" context="CFactor1" String="[\ |N|n][K|k][P-Y|p-y]}"/>
|
|
|
|
<RegExpr attribute="Indicator" context="CFactor1" String="[\ |N|n][L|l][1-9]"/>
|
|
|
|
<RegExpr attribute="Indicator" context="CFactor1" String="[\ |N|n][L|l|M|m][R|r]"/>
|
|
|
|
<RegExpr attribute="Indicator" context="CFactor1" String="[\ |N|n][R|r][T|t]"/>
|
|
|
|
<RegExpr attribute="Indicator" context="CFactor1" String="[\ |N|n][U|u][1-8]"/>
|
|
|
|
<RegExpr attribute="Indicator" context="CFactor1" String="[\ |N|n][O|o][A-G|a-g]"/>
|
|
|
|
<RegExpr attribute="Indicator" context="CFactor1" String="[\ |N|n][O|o][V|v]"/>
|
|
|
|
<RegExpr attribute="Indicator" context="CFactor1" String="[\ |N|n][H|h][1-9]"/>
|
|
|
|
<RegExpr attribute="Alert" context="CFactor1" String=".{3}"/>
|
|
|
|
</context>
|
|
|
|
|
|
|
|
<!-- Factor1 -->
|
|
|
|
<context name="CFactor1" attribute="Normal Text" lineEndContext="#pop#pop#pop">
|
|
|
|
<!-- TODO -->
|
|
|
|
<RegExpr attribute="Normal Text" context="FindOC" String=".{14}"/>
|
|
|
|
</context>
|
|
|
|
|
|
|
|
<!-- FindOpcode -->
|
|
|
|
<context name="FindOC" attribute="Normal Text" lineEndContext="#pop#pop#pop#pop">
|
|
|
|
<keyword attribute="Keyword" context="NonEvalOC2" String="nonevalopcodes2"/>
|
|
|
|
<keyword attribute="Keyword" context="NonEvalOC3" String="nonevalopcodes3"/>
|
|
|
|
<keyword attribute="Keyword" context="NonEvalOC4" String="nonevalopcodes4"/>
|
|
|
|
<keyword attribute="Keyword" context="NonEvalOC5" String="nonevalopcodes5"/>
|
|
|
|
<keyword attribute="Keyword" context="NonEvalOC6" String="nonevalopcodes6"/>
|
|
|
|
<keyword attribute="Keyword" context="NonEvalOC7" String="nonevalopcodes7"/>
|
|
|
|
<RegExpr attribute="Keyword" context="NonEvalOC5" String="[Z|z]-([A|a][D|d]{2}|[S|s][U|u][B|b])"/>
|
|
|
|
<keyword attribute="Keyword" context="EvalOC2" String="evalopcodes2"/>
|
|
|
|
<keyword attribute="Keyword" context="EvalOC3" String="evalopcodes3"/>
|
|
|
|
<keyword attribute="Keyword" context="EvalOC4" String="evalopcodes4"/>
|
|
|
|
<keyword attribute="Keyword" context="EvalOC5" String="evalopcodes5"/>
|
|
|
|
<keyword attribute="Keyword" context="EvalOC6" String="evalopcodes6"/>
|
|
|
|
<RegExpr attribute="Keyword" context="EvalOC8" String="[O|o][N|n]-([E|e][R|r]{2}|[O|o][R|r])"/>
|
|
|
|
<RegExpr attribute="Normal Text" context="CFactor2" String="\ {10}"/>
|
|
|
|
<RegExpr attribute="Alert" context="CFactor2" String=".{10}"/>
|
|
|
|
</context>
|
|
|
|
|
|
|
|
<!-- Opcodes that can NOT be followed by evaluation expressions -->
|
|
|
|
<context name="NonEvalOC2" attribute="Normal Text" lineEndContext="Default">
|
|
|
|
<RegExpr attribute="Normal Text" context="CFactor2" String="\ {8}"/>
|
|
|
|
</context>
|
|
|
|
<context name="NonEvalOC3" attribute="Normal Text" lineEndContext="Default">
|
|
|
|
<RegExpr attribute="Normal Text" context="CFactor2" String="\ {7}"/>
|
|
|
|
</context>
|
|
|
|
<context name="NonEvalOC4" attribute="Normal Text" lineEndContext="Default">
|
|
|
|
<RegExpr attribute="Normal Text" context="CFactor2" String="\ {6}"/>
|
|
|
|
</context>
|
|
|
|
<context name="NonEvalOC5" attribute="Normal Text" lineEndContext="Default">
|
|
|
|
<RegExpr attribute="Normal Text" context="CFactor2" String="\ {5}"/>
|
|
|
|
</context>
|
|
|
|
<context name="NonEvalOC6" attribute="Normal Text" lineEndContext="Default">
|
|
|
|
<RegExpr attribute="Normal Text" context="CFactor2" String="\ {4}"/>
|
|
|
|
</context>
|
|
|
|
<context name="NonEvalOC7" attribute="Normal Text" lineEndContext="Default">
|
|
|
|
<RegExpr attribute="Normal Text" context="CFactor2" String="\ {3}"/>
|
|
|
|
</context>
|
|
|
|
|
|
|
|
<context name="CFactor2" attribute="Normal Text" lineEndContext="Default">
|
|
|
|
<DetectChar attribute="Biff" context="Biffs" char="%"/>
|
|
|
|
<IncludeRules context="CommonCode" />
|
|
|
|
</context>
|
|
|
|
|
|
|
|
<!-- Opcodes that can be followed by evaluation expressions -->
|
|
|
|
<context name="EvalOC2" attribute="Normal Text" lineEndContext="Default">
|
|
|
|
<RegExpr attribute="Normal Text" context="CExFactor2" String="\ {8}"/>
|
|
|
|
</context>
|
|
|
|
<context name="EvalOC3" attribute="Normal Text" lineEndContext="Default">
|
|
|
|
<RegExpr attribute="Normal Text" context="CExFactor2" String="\ {7}"/>
|
|
|
|
</context>
|
|
|
|
<context name="EvalOC4" attribute="Normal Text" lineEndContext="Default">
|
|
|
|
<RegExpr attribute="Normal Text" context="CExFactor2" String="\ {6}"/>
|
|
|
|
</context>
|
|
|
|
<context name="EvalOC5" attribute="Normal Text" lineEndContext="Default">
|
|
|
|
<RegExpr attribute="Normal Text" context="CExFactor2" String="\ {5}"/>
|
|
|
|
</context>
|
|
|
|
<context name="EvalOC6" attribute="Normal Text" lineEndContext="Default">
|
|
|
|
<RegExpr attribute="Normal Text" context="CExFactor2" String="\ {4}"/>
|
|
|
|
</context>
|
|
|
|
<context name="EvalOC8" attribute="Normal Text" lineEndContext="Default">
|
|
|
|
<RegExpr attribute="Normal Text" context="CExFactor2" String="\ {2}"/>
|
|
|
|
</context>
|
|
|
|
|
|
|
|
<context name="CExFactor2" attribute="Normal Text" lineEndContext="Default">
|
|
|
|
<DetectChar attribute="Biff" context="Biffs" char="%"/>
|
|
|
|
<IncludeRules context="CommonCode" />
|
|
|
|
</context>
|
|
|
|
|
|
|
|
<!-- Comments -->
|
|
|
|
<context name="Comments" attribute="Comment" lineEndContext="#pop">
|
|
|
|
<RegExpr attribute="BoldComment" context="#stay" String="\(*(FIXME|TODO)\)*" />
|
|
|
|
<RegExpr attribute="BoldComment" context="#stay" String="\(*(NOTE:)\)*" />
|
|
|
|
<RegExpr attribute="DivideComment" context="#stay" String="-|="/>
|
|
|
|
</context>
|
|
|
|
|
|
|
|
<!-- String Constants -->
|
|
|
|
<context name="StringConstants" attribute="ConstantChar" lineEndContext="#pop">
|
|
|
|
<DetectChar attribute="ConstantChar" context="#pop" char="'"/>
|
|
|
|
</context>
|
|
|
|
|
|
|
|
<!-- Compiler Directives -->
|
|
|
|
<context name="Directives" attribute="Normal Text" lineEndContext="Default">
|
|
|
|
<RegExpr attribute="Directive" context="Free" String="[F|f][R|r][E|e][E|e]"/>
|
|
|
|
<RegExpr attribute="Directive" context="Exec" String="[E|e][X|x][E|e][C|c]"/>
|
|
|
|
<keyword attribute="Directive" context="Directives2" String="directives"/>
|
|
|
|
</context>
|
|
|
|
<context name="Directives2" attribute="Normal Text" lineEndContext="Default">
|
|
|
|
<keyword attribute="Directive" context="Directives3" String="directives2"/>
|
|
|
|
</context>
|
|
|
|
<context name="Directives3" attribute="Normal Text" lineEndContext="Default">
|
|
|
|
<keyword attribute="Directive" context="#stay" String="directives3"/>
|
|
|
|
</context>
|
|
|
|
|
|
|
|
<!-- Free -->
|
|
|
|
<context name="Free" attribute="Normal Text" lineEndContext="#stay">
|
|
|
|
<RegExpr attribute="Directive" context="#pop" String="[POIHFDC ]?/[E|e][N|n][D|d]-[F|f][R|r][E|e][E|e]"/>
|
|
|
|
<IncludeRules context="CommonCode" />
|
|
|
|
<DetectChar attribute="Biff" context="Biffs" char="%"/>
|
|
|
|
<RegExpr attribute="Comment" context="Comments" String="//"/>
|
|
|
|
<keyword attribute="Keyword" context="#stay" String="freeopcodes"/>
|
|
|
|
</context>
|
|
|
|
|
|
|
|
<!-- Exec -->
|
|
|
|
<context name="Exec" attribute="Normal Text" lineEndContext="#stay">
|
|
|
|
<RegExpr attribute="Directive" context="#pop" String="[POIHFDC ]?/[E|e][N|n][D|d]-[E|e][X|x][E|e][C|c]"/>
|
|
|
|
</context>
|
|
|
|
|
|
|
|
<context name="Biffs" attribute="Biff" lineEndContext="#pop">
|
|
|
|
<keyword attribute="Biff" context="#pop" String="biffs"/>
|
|
|
|
<RegExpr attribute="Normal Text" context="#pop" String="."/>
|
|
|
|
</context>
|
|
|
|
|
|
|
|
<!-- Stuff common to all code Use as Include -->
|
|
|
|
<context name="CommonCode" attribute="Normal Text" lineEndContext="#stay">
|
|
|
|
<IncludeRules context="ReservedWords" />
|
|
|
|
<IncludeRules context="Indicators" />
|
|
|
|
<DetectChar attribute="ConstantChar" context="StringConstants" char="'"/>
|
|
|
|
<Float attribute="Float" context="#stay"/>
|
|
|
|
<RegExpr attribute="Hex" context="#stay" String="[Xx]'[0-9a-fA-F]{2,}'"/>
|
|
|
|
<Int attribute="Decimal" context="Int Suffixes"/>
|
|
|
|
</context>
|
|
|
|
|
|
|
|
<context name="Int Suffixes" attribute="Decimal" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
|
|
|
|
<StringDetect attribute="Decimal" context="#pop" String="ULL" insensitive="true"/>
|
|
|
|
<StringDetect attribute="Decimal" context="#pop" String="LUL" insensitive="true"/>
|
|
|
|
<StringDetect attribute="Decimal" context="#pop" String="LLU" insensitive="true"/>
|
|
|
|
<StringDetect attribute="Decimal" context="#pop" String="UL" insensitive="true"/>
|
|
|
|
<StringDetect attribute="Decimal" context="#pop" String="LU" insensitive="true"/>
|
|
|
|
<StringDetect attribute="Decimal" context="#pop" String="LL" insensitive="true"/>
|
|
|
|
<StringDetect attribute="Decimal" context="#pop" String="U" insensitive="true"/>
|
|
|
|
<StringDetect attribute="Decimal" context="#pop" String="L" insensitive="true"/>
|
|
|
|
</context>
|
|
|
|
|
|
|
|
<!-- Reserved words - Use as include -->
|
|
|
|
<context name="Indicators" attribute="Normal Text" lineEndContext="#stay">
|
|
|
|
<RegExpr attribute="Indicator" context="#stay" String="\*[I|i][N|n]\(?[0-9][0-9]\)?"/>
|
|
|
|
<RegExpr attribute="Indicator" context="#stay" String="\*[I|i][N|n]\(?1[P|p]\)?"/>
|
|
|
|
<RegExpr attribute="Indicator" context="#stay" String="\*[I|i][N|n]\(?[H|h|L|l][1-9]\)?"/>
|
|
|
|
<RegExpr attribute="Indicator" context="#stay" String="\*[I|i][N|n]\(?[L|l|M|m][R|r]\)?"/>
|
|
|
|
<RegExpr attribute="Indicator" context="#stay" String="\*[I|i][N|n]\(?[O|o][A-G|a-g|V|v]\)?"/>
|
|
|
|
<RegExpr attribute="Indicator" context="#stay" String="\*[I|i][N|n]\(?[U|u][1-8]\)?"/>
|
|
|
|
<RegExpr attribute="Indicator" context="#stay" String="\*[I|i][N|n]\(?[K|k][A-N|a-n|P-Y|p-y]\)?"/>
|
|
|
|
<RegExpr attribute="Indicator" context="#stay" String="\*[I|i][N|n]\(?[R|r][T|t]\)?"/>
|
|
|
|
</context>
|
|
|
|
|
|
|
|
<!-- Reserved words - Use as include -->
|
|
|
|
<context name="ReservedWords" attribute="Normal Text" lineEndContext="#stay">
|
|
|
|
<RegExpr attribute="Reserved" context="#stay" String="[\*|U|u][D|d][A|a][T|t][E|e]"/>
|
|
|
|
<RegExpr attribute="Reserved" context="#stay" String="[\*|U|u][M|m][O|o][N|n][T|t][H|h]"/>
|
|
|
|
<RegExpr attribute="Reserved" context="#stay" String="[\*|U|u][Y|y][E|e][A|a][R|r]"/>
|
|
|
|
<RegExpr attribute="Reserved" context="#stay" String="[\*|U|u][D|d][A|a][Y|y]"/>
|
|
|
|
<RegExpr attribute="Reserved" context="#stay" String="\ [P|p][A|a][G|g][E|e][1-7]?"/>
|
|
|
|
<!-- *ALL(X/G) *BLANKS *ON *OFF *NULL *ZERO(s) *HIVAL *LOVAL *PSSR *END *START-->
|
|
|
|
<RegExpr attribute="Constant" context="#stay" String="\*([A|a][A|l]{2}[X|x|G|g]?|[B|b][L|l][A|a][N|n][K|k][S|s]?|[O|o][N|n]|[O|o][F|f]{2}|[N|n][U|u][L|l]{2}|[Z|z][E|e][R|r][O|o][S|s]?|[H|h][I|i][V|v][A|a][L|l]|[L|l][O|o][V|v][A|a][L|l]|[P|p][S|s]{2}[R|r]|[E|e][N|n][D|d]|[S|s][T|t][A|a][R|r][T|t])"/>
|
|
|
|
<!-- Date stuff -->
|
|
|
|
<RegExpr attribute="Reserved" context="#stay" String="\*[C|c][D|d][M|m][Y|y]"/>
|
|
|
|
<RegExpr attribute="Reserved" context="#stay" String="\*[C|c][M|m][D|d][Y|y]"/>
|
|
|
|
<RegExpr attribute="Reserved" context="#stay" String="\*[C|c][Y|y][M|m][D|d]"/>
|
|
|
|
<RegExpr attribute="Reserved" context="#stay" String="\*[D|d][M|m][Y|y]"/>
|
|
|
|
<RegExpr attribute="Reserved" context="#stay" String="\*[E|e][U|u][R|r]"/>
|
|
|
|
<RegExpr attribute="Reserved" context="#stay" String="\*[H|h][M|m][S|s]"/>
|
|
|
|
<RegExpr attribute="Reserved" context="#stay" String="\*[I|i][S|s][O|o]"/>
|
|
|
|
<RegExpr attribute="Reserved" context="#stay" String="\*[J|j][I|i][S|s]"/>
|
|
|
|
<RegExpr attribute="Reserved" context="#stay" String="\*[J|j][O|o][B|b]([R|r][U|u][N|n])?"/>
|
|
|
|
<RegExpr attribute="Reserved" context="#stay" String="\*([L|l][O|o][N|n][G|g])?[J|j][U|u][L|l]"/>
|
|
|
|
<RegExpr attribute="Reserved" context="#stay" String="\*[M|m][D|d][Y|y]"/>
|
|
|
|
<RegExpr attribute="Reserved" context="#stay" String="\*[S|s][Y|y][S|s]"/>
|
|
|
|
<RegExpr attribute="Reserved" context="#stay" String="\*[U|u][S|s][A|a]"/>
|
|
|
|
<RegExpr attribute="Reserved" context="#stay" String="\*[Y|y][M|m][D|d]"/>
|
|
|
|
|
|
|
|
<RegExpr attribute="Reserved" context="#stay" String="\*[A|a][L|l][T|t][S|s][E|e][Q|q]"/>
|
|
|
|
<RegExpr attribute="Reserved" context="#stay" String="\*[E|e][Q|q][U|u][A|a][T|t][E|e]"/>
|
|
|
|
<RegExpr attribute="Reserved" context="#stay" String="\*[F|f][I|i][L|l][E|e]"/>
|
|
|
|
<RegExpr attribute="Reserved" context="#stay" String="\*[F|f][T|t][R|r][A|a][N|n][S|s]"/>
|
|
|
|
|
|
|
|
<RegExpr attribute="Reserved" context="#stay" String="\*[I|i][L|l][E|e][R|r][P|p][G|g]"/>
|
|
|
|
<RegExpr attribute="Reserved" context="#stay" String="\*[C|c][R|r][T|t][B|b][N|n][D|d][R|r][P|p][G|g]"/>
|
|
|
|
<RegExpr attribute="Reserved" context="#stay" String="\*[C|c][R|r][T|t][R|r][P|p][G|g][M|m][O|o][D|d]"/>
|
|
|
|
<RegExpr attribute="Reserved" context="#stay" String="\*[V|v][0-9][R|r][0-9][M|m][0-9]"/>
|
|
|
|
|
|
|
|
</context>
|
|
|
|
|
|
|
|
<!-- AnyCode -->
|
|
|
|
<context name="AnyCode" attribute="Normal Text" lineEndContext="#pop">
|
|
|
|
<IncludeRules context="CommonCode" />
|
|
|
|
</context>
|
|
|
|
|
|
|
|
<!-- D -->
|
|
|
|
<context name="D" attribute="Normal Text" lineEndContext="#pop">
|
|
|
|
<keyword attribute="Keyword" context="#stay" String="dkeywords"/>
|
|
|
|
<RegExpr attribute="Reserved" context="#stay" String="\*[N|n][O|o][P|p][A|a][S|s]{2}"/>
|
|
|
|
<RegExpr attribute="Reserved" context="#stay" String="\*[O|o][M|m][I|i][T|t]"/>
|
|
|
|
<RegExpr attribute="Reserved" context="#stay" String="\*[V|v][A|a][R|r][S|s][I|i][Z|z][E|e]"/>
|
|
|
|
<RegExpr attribute="Reserved" context="#stay" String="\*[R|r][I|i][G|g][H|h][T|t][A|a][D|d][J|j]"/>
|
|
|
|
<RegExpr attribute="Reserved" context="#stay" String="\*[S|s][T|t][R|r][I|i][N|n][G|g]"/>
|
|
|
|
<RegExpr attribute="Reserved" context="#stay" String="\*[T|t][R|r][I|i][M|m]"/>
|
|
|
|
<DetectChar attribute="Biff" context="Biffs" char="%"/>
|
|
|
|
<IncludeRules context="CommonCode" />
|
|
|
|
</context>
|
|
|
|
|
|
|
|
<!-- P -->
|
|
|
|
<context name="P" attribute="Normal Text" lineEndContext="#pop">
|
|
|
|
<keyword attribute="Keyword" context="#stay" String="dkeywords"/>
|
|
|
|
<RegExpr attribute="Reserved" context="#stay" String="\*[N|n][O|o][P|p][A|a][S|s]{2}"/>
|
|
|
|
<RegExpr attribute="Reserved" context="#stay" String="\*[O|o][M|m][I|i][T|t]"/>
|
|
|
|
<RegExpr attribute="Reserved" context="#stay" String="\*[V|v][A|a][R|r][S|s][I|i][Z|z][E|e]"/>
|
|
|
|
<RegExpr attribute="Reserved" context="#stay" String="\*[R|r][I|i][G|g][H|h][T|t][A|a][D|d][J|j]"/>
|
|
|
|
<RegExpr attribute="Reserved" context="#stay" String="\*[S|s][T|t][R|r][I|i][N|n][G|g]"/>
|
|
|
|
<RegExpr attribute="Reserved" context="#stay" String="\*[T|t][R|r][I|i][M|m]"/>
|
|
|
|
<DetectChar attribute="Biff" context="Biffs" char="%"/>
|
|
|
|
<IncludeRules context="CommonCode" />
|
|
|
|
</context>
|
|
|
|
|
|
|
|
|
|
|
|
</contexts>
|
|
|
|
<itemDatas>
|
|
|
|
<itemData name="Alert" defStyleNum="dsAlert" />
|
|
|
|
<itemData name="Normal Text" defStyleNum="dsNormal" />
|
|
|
|
<itemData name="Keyword" defStyleNum="dsKeyword" />
|
|
|
|
<itemData name="Biff" defStyleNum="dsKeyword" />
|
|
|
|
<itemData name="Decimal" defStyleNum="dsDecVal" />
|
|
|
|
<itemData name="Float" defStyleNum="dsFloat"/>
|
|
|
|
<itemData name="Hex" defStyleNum="dsBaseN"/>
|
|
|
|
<itemData name="ConstantChar" defStyleNum="dsNormal" color="#DD0022" selColor="#000000" bold="0" italic="0"/>
|
|
|
|
<itemData name="Constant" defStyleNum="dsNormal" color="#CC2222" selColor="#000000" bold="0" italic="0"/>
|
|
|
|
<itemData name="Reserved" defStyleNum="dsNormal" color="#BB1133" selColor="#000000" bold="0" italic="0"/>
|
|
|
|
<itemData name="Indicator" defStyleNum="dsNormal" color="#CC0000" selColor="#000000" bold="0" italic="0"/>
|
|
|
|
<itemData name="Comment" defStyleNum="dsComment"/>
|
|
|
|
<itemData name="BoldComment" defStyleNum="dsNormal" color="#CD853F" selColor="#808080" bold="1" italic="1"/>
|
|
|
|
<itemData name="DivideComment" defStyleNum="dsComment" bold="1"/>
|
|
|
|
<itemData name="Directive" defStyleNum="dsOthers"/>
|
|
|
|
</itemDatas>
|
|
|
|
</highlighting>
|
|
|
|
<general>
|
|
|
|
<keywords casesensitive="0" />
|
|
|
|
</general>
|
|
|
|
</language>
|
|
|
|
|