]> gitweb.factorcode.org Git - factor.git/blobdiff - basis/xmode/modes/sas.xml
xmode.modes: updating with recent xmode files
[factor.git] / basis / xmode / modes / sas.xml
index 4f51536b927e0a2235e392cac8f517faafed73bd..b0b80338b6c684d268b220e6a52629a9b17f494c 100644 (file)
-<?xml version="1.0"?>\r
-\r
-<!DOCTYPE MODE SYSTEM "xmode.dtd">\r
-\r
-<!--  \r
-      SAS edit mode by Bill McMilleon (bill@mcmilleon.com)\r
-      March 19, 2003\r
-      \r
-      Suggested catalog file entry:\r
-\r
-      <MODE NAME="SAS"         FILE="sas.xml" FILE_NAME_GLOB="*.{sas}" />\r
-\r
--->\r
\r
-\r
-<MODE>\r
-\r
-    \r
-    <RULES IGNORE_CASE="TRUE" HIGHLIGHT_DIGITS="FALSE">\r
-\r
-<!-- In fixed form, column 72 is the last column parsed, unless the\r
-\extend_source option is invoked -->\r
-    <!-- TERMINATE AT_CHAR="72" / -->\r
-\r
-               <!-- C style comment -->\r
-               <SPAN TYPE="COMMENT1">\r
-                       <BEGIN>/*</BEGIN>\r
-                       <END>*/</END>\r
-               </SPAN>\r
-\r
-               <SPAN TYPE="LITERAL1" NO_LINE_BREAK="FALSE">\r
-                       <BEGIN>'</BEGIN>\r
-                       <END>'</END>\r
-               </SPAN>\r
-\r
-    <!-- Highlighted Operators -->\r
-    <SEQ TYPE="OPERATOR">=</SEQ>\r
-    <SEQ TYPE="OPERATOR">&lt;</SEQ>\r
-    <SEQ TYPE="OPERATOR">&gt;</SEQ>\r
-    <SEQ TYPE="OPERATOR">_</SEQ>\r
-    <SEQ TYPE="OPERATOR">|</SEQ>\r
-    <SEQ TYPE="OPERATOR">~</SEQ>\r
-    <SEQ TYPE="OPERATOR">^</SEQ>\r
-    <SEQ TYPE="OPERATOR">@</SEQ>\r
-    <SEQ TYPE="OPERATOR">?</SEQ>\r
-    <SEQ TYPE="OPERATOR">/</SEQ>\r
-    <SEQ TYPE="OPERATOR">.</SEQ>\r
-    <SEQ TYPE="OPERATOR">-</SEQ>\r
-    <SEQ TYPE="OPERATOR">+</SEQ>\r
-    <SEQ TYPE="OPERATOR">*</SEQ>\r
-    <SEQ TYPE="OPERATOR">!</SEQ>\r
-    \r
-    <KEYWORDS>\r
-      <KEYWORD2>$ASCII</KEYWORD2>\r
-      <KEYWORD2>$BINARY</KEYWORD2>\r
-      <KEYWORD2>$CB</KEYWORD2>\r
-      <KEYWORD2>$CHAR</KEYWORD2>\r
-      <KEYWORD2>$CHARZB</KEYWORD2>\r
-      <KEYWORD2>$EBCDIC</KEYWORD2>\r
-      <KEYWORD2>$HEX</KEYWORD2>\r
-      <KEYWORD2>$OCTAL</KEYWORD2>\r
-      <KEYWORD2>$VARYING</KEYWORD2>\r
-      <KEYWORD2>%BQUOTE</KEYWORD2>\r
-      <KEYWORD2>%DO</KEYWORD2>\r
-      <KEYWORD2>%ELSE</KEYWORD2>\r
-      <KEYWORD2>%END</KEYWORD2>\r
-      <KEYWORD2>%EVAL</KEYWORD2>\r
-      <KEYWORD2>%Global</KEYWORD2>\r
-      <KEYWORD2>%GOTO</KEYWORD2>\r
-      <KEYWORD2>%IF</KEYWORD2>\r
-      <KEYWORD2>%INC</KEYWORD2>\r
-      <KEYWORD2>%INCLUDE</KEYWORD2>\r
-      <KEYWORD2>%INDEX</KEYWORD2>\r
-      <KEYWORD2>%INPUT</KEYWORD2>\r
-      <KEYWORD2>%LENGTH</KEYWORD2>\r
-      <KEYWORD2>%LET</KEYWORD2>\r
-      <KEYWORD2>%LOCAL</KEYWORD2>\r
-      <KEYWORD2>%MACRO</KEYWORD2>\r
-      <KEYWORD2>%MEND</KEYWORD2>\r
-      <KEYWORD2>%NRBQUOTE</KEYWORD2>\r
-      <KEYWORD2>%NRQUOTE</KEYWORD2>\r
-      <KEYWORD2>%NRSTR</KEYWORD2>\r
-      <KEYWORD2>%PUT</KEYWORD2>\r
-      <KEYWORD2>%QSCAN</KEYWORD2>\r
-      <KEYWORD2>%Quote</KEYWORD2>\r
-      <KEYWORD2>%RUN</KEYWORD2>\r
-      <KEYWORD2>%SUBSTR</KEYWORD2>\r
-      <KEYWORD2>%SYSEXEC</KEYWORD2>\r
-      <KEYWORD2>%THEN</KEYWORD2>\r
-      <KEYWORD2>%UNTIL</KEYWORD2>\r
-      <KEYWORD2>%WHILE</KEYWORD2>\r
-      <KEYWORD2>%WINDOW</KEYWORD2>\r
-      <KEYWORD2>_ALL_</KEYWORD2>\r
-      <KEYWORD2>_CHARACTER_</KEYWORD2>\r
-      <KEYWORD2>_CMD_</KEYWORD2>\r
-      <KEYWORD2>_ERROR_</KEYWORD2>\r
-      <KEYWORD2>_I_</KEYWORD2>\r
-      <KEYWORD2>_INFILE_</KEYWORD2>\r
-      <KEYWORD2>_LAST_</KEYWORD2>\r
-      <KEYWORD2>_MSG_</KEYWORD2>\r
-      <KEYWORD2>_N_</KEYWORD2>\r
-      <KEYWORD2>_NULL_</KEYWORD2>\r
-      <KEYWORD2>_NUMERIC_</KEYWORD2>\r
-      <KEYWORD2>_TEMPORARY_</KEYWORD2>\r
-      <KEYWORD2>_TYPE_</KEYWORD2>\r
-      <KEYWORD2>=DATA</KEYWORD2>\r
-      <KEYWORD2>ABORT</KEYWORD2>\r
-      <KEYWORD2>ADD</KEYWORD2>\r
-      <KEYWORD2>ADJRSQ</KEYWORD2>\r
-      <KEYWORD2>AND</KEYWORD2>\r
-      <KEYWORD2>ARRAY</KEYWORD2>\r
-      <KEYWORD2>ATTRIB</KEYWORD2>\r
-      <KEYWORD2>BACKWARD</KEYWORD2>\r
-      <KEYWORD2>BINARY</KEYWORD2>\r
-      <KEYWORD2>BLOCKSIZE</KEYWORD2>\r
-      <KEYWORD2>BY</KEYWORD2>\r
-      <KEYWORD2>BZ</KEYWORD2>\r
-      <KEYWORD2>CALL</KEYWORD2>\r
-      <KEYWORD2>CARDS</KEYWORD2>\r
-      <KEYWORD2>CARDS4</KEYWORD2>\r
-      <KEYWORD2>CHAR</KEYWORD2>\r
-      <KEYWORD2>CLASS</KEYWORD2>\r
-      <KEYWORD2>COL</KEYWORD2>\r
-      <KEYWORD2>COLLIN</KEYWORD2>\r
-      <KEYWORD2>COLUMN</KEYWORD2>\r
-      <KEYWORD2>COMMA</KEYWORD2>\r
-      <KEYWORD2>COMMAX</KEYWORD2>\r
-      <KEYWORD2>CREATE</KEYWORD2>\r
-      <KEYWORD2>DATA</KEYWORD2>\r
-      <KEYWORD2>DATA=</KEYWORD2>\r
-      <KEYWORD2>DATE</KEYWORD2>\r
-      <KEYWORD2>DATETIME</KEYWORD2>\r
-      <KEYWORD2>DDMMYY</KEYWORD2>\r
-      <KEYWORD2>DECENDING</KEYWORD2>\r
-      <KEYWORD2>DEFINE</KEYWORD2>\r
-      <KEYWORD2>DELETE</KEYWORD2>\r
-      <KEYWORD2>DELIMITER</KEYWORD2>\r
-      <KEYWORD2>DISPLAY</KEYWORD2>\r
-      <KEYWORD2>DLM</KEYWORD2>\r
-      <KEYWORD2>DO</KEYWORD2>\r
-      <KEYWORD2>DROP</KEYWORD2>\r
-      <KEYWORD2>ELSE</KEYWORD2>\r
-      <KEYWORD2>END</KEYWORD2>\r
-      <KEYWORD2>ENDSAS</KEYWORD2>\r
-      <KEYWORD2>EOF</KEYWORD2>\r
-      <KEYWORD2>EOV</KEYWORD2>\r
-      <KEYWORD2>EQ</KEYWORD2>\r
-      <KEYWORD2>ERRORS</KEYWORD2>\r
-      <KEYWORD2>FILE</KEYWORD2>\r
-      <KEYWORD2>FILENAME</KEYWORD2>\r
-      <KEYWORD2>FILEVAR</KEYWORD2>\r
-      <KEYWORD2>FIRST.</KEYWORD2>\r
-      <KEYWORD2>FIRSTOBS</KEYWORD2>\r
-      <KEYWORD2>FOOTNOTE</KEYWORD2>\r
-      <KEYWORD2>FOOTNOTE1</KEYWORD2>\r
-      <KEYWORD2>FOOTNOTE2</KEYWORD2>\r
-      <KEYWORD2>FOOTNOTE3</KEYWORD2>\r
-      <KEYWORD2>FORM</KEYWORD2>\r
-      <KEYWORD2>FORMAT</KEYWORD2>\r
-      <KEYWORD2>FORMCHAR</KEYWORD2>\r
-      <KEYWORD2>FORMDELIM</KEYWORD2>\r
-      <KEYWORD2>FORMDLIM</KEYWORD2>\r
-      <KEYWORD2>FORWARD</KEYWORD2>\r
-      <KEYWORD2>FROM</KEYWORD2>\r
-      <KEYWORD2>GO</KEYWORD2>\r
-      <KEYWORD2>GROUP</KEYWORD2>\r
-      <KEYWORD2>GT</KEYWORD2>\r
-      <KEYWORD2>HBAR</KEYWORD2>\r
-      <KEYWORD2>HEX</KEYWORD2>\r
-      <KEYWORD2>HPCT</KEYWORD2>\r
-      <KEYWORD2>HVAR</KEYWORD2>\r
-      <KEYWORD2>IB</KEYWORD2>\r
-      <KEYWORD2>ID</KEYWORD2>\r
-      <KEYWORD2>IEEE</KEYWORD2>\r
-      <KEYWORD2>IF</KEYWORD2>\r
-      <KEYWORD2>IN</KEYWORD2>\r
-      <KEYWORD2>INFILE</KEYWORD2>\r
-      <KEYWORD2>INFORMAT</KEYWORD2>\r
-      <KEYWORD2>INPUT</KEYWORD2>\r
-      <KEYWORD2>INR</KEYWORD2>\r
-      <KEYWORD2>JOIN</KEYWORD2>\r
-      <KEYWORD2>JULIAN</KEYWORD2>\r
-      <KEYWORD2>KEEP</KEYWORD2>\r
-      <KEYWORD2>LABEL</KEYWORD2>\r
-      <KEYWORD2>LAG</KEYWORD2>\r
-      <KEYWORD2>LAST.</KEYWORD2>\r
-      <KEYWORD2>LE</KEYWORD2>\r
-      <KEYWORD2>LIB</KEYWORD2>\r
-      <KEYWORD2>LIBNAME</KEYWORD2>\r
-      <KEYWORD2>LINE</KEYWORD2>\r
-      <KEYWORD2>LINESIZE</KEYWORD2>\r
-      <KEYWORD2>LINK</KEYWORD2>\r
-      <KEYWORD2>LIST</KEYWORD2>\r
-      <KEYWORD2>LOSTCARD</KEYWORD2>\r
-      <KEYWORD2>LRECL</KEYWORD2>\r
-      <KEYWORD2>LS</KEYWORD2>\r
-      <KEYWORD2>MACRO</KEYWORD2>\r
-      <KEYWORD2>MACROGEN</KEYWORD2>\r
-      <KEYWORD2>MAXDEC</KEYWORD2>\r
-      <KEYWORD2>MAXR</KEYWORD2>\r
-      <KEYWORD2>MEDIAN</KEYWORD2>\r
-      <KEYWORD2>MEMTYPE</KEYWORD2>\r
-      <KEYWORD2>MERGE</KEYWORD2>\r
-      <KEYWORD2>MERROR</KEYWORD2>\r
-      <KEYWORD2>MISSOVE</KEYWORD2>\r
-      <KEYWORD2>MLOGIC</KEYWORD2>\r
-      <KEYWORD2>MMDDYY</KEYWORD2>\r
-      <KEYWORD2>MODE</KEYWORD2>\r
-      <KEYWORD2>MODEL</KEYWORD2>\r
-      <KEYWORD2>MONYY</KEYWORD2>\r
-      <KEYWORD2>MPRINT</KEYWORD2>\r
-      <KEYWORD2>MRECALL</KEYWORD2>\r
-      <KEYWORD2>NE</KEYWORD2>\r
-      <KEYWORD2>NEW</KEYWORD2>\r
-      <KEYWORD2>NO</KEYWORD2>\r
-      <KEYWORD2>NOBS</KEYWORD2>\r
-      <KEYWORD2>NOCENTER</KEYWORD2>\r
-      <KEYWORD2>NOCUM</KEYWORD2>\r
-      <KEYWORD2>NODATE</KEYWORD2>\r
-      <KEYWORD2>NODUP</KEYWORD2>\r
-      <KEYWORD2>NODUPKEY</KEYWORD2>\r
-      <KEYWORD2>NOINT</KEYWORD2>\r
-      <KEYWORD2>NONUMBER</KEYWORD2>\r
-      <KEYWORD2>NOPAD</KEYWORD2>\r
-      <KEYWORD2>NOPRINT</KEYWORD2>\r
-      <KEYWORD2>NOROW</KEYWORD2>\r
-      <KEYWORD2>NOT</KEYWORD2>\r
-      <KEYWORD2>NOTITLE</KEYWORD2>\r
-      <KEYWORD2>NOTITLES</KEYWORD2>\r
-      <KEYWORD2>NOXSYNC</KEYWORD2>\r
-      <KEYWORD2>NOXWAIT</KEYWORD2>\r
-      <KEYWORD2>NUMBER</KEYWORD2>\r
-      <KEYWORD2>NWAY</KEYWORD2>\r
-      <KEYWORD2>OBS</KEYWORD2>\r
-      <KEYWORD2>OPTION</KEYWORD2>\r
-      <KEYWORD2>OPTIONS</KEYWORD2>\r
-      <KEYWORD2>OR</KEYWORD2>\r
-      <KEYWORD2>ORDER</KEYWORD2>\r
-      <KEYWORD2>OTHERWISE</KEYWORD2>\r
-      <KEYWORD2>OUT</KEYWORD2>\r
-      <KEYWORD2>OUTPUT</KEYWORD2>\r
-      <KEYWORD2>OVER</KEYWORD2>\r
-      <KEYWORD2>PAD</KEYWORD2>\r
-      <KEYWORD2>PAD2</KEYWORD2>\r
-      <KEYWORD2>PAGESIZE</KEYWORD2>\r
-      <KEYWORD2>PD</KEYWORD2>\r
-      <KEYWORD2>PERCENT</KEYWORD2>\r
-      <KEYWORD2>PIB</KEYWORD2>\r
-      <KEYWORD2>PK</KEYWORD2>\r
-      <KEYWORD2>POINT</KEYWORD2>\r
-      <KEYWORD2>POSITION</KEYWORD2>\r
-      <KEYWORD2>PRINTER</KEYWORD2>\r
-      <KEYWORD2>PROC</KEYWORD2>\r
-      <KEYWORD2>PS</KEYWORD2>\r
-      <KEYWORD2>PUT</KEYWORD2>\r
-      <KEYWORD2>QUIT</KEYWORD2>\r
-      <KEYWORD2>R</KEYWORD2>\r
-      <KEYWORD2>RB</KEYWORD2>\r
-      <KEYWORD2>RECFM</KEYWORD2>\r
-      <KEYWORD2>REG</KEYWORD2>\r
-      <KEYWORD2>REGR</KEYWORD2>\r
-      <KEYWORD2>RENAME</KEYWORD2>\r
-      <KEYWORD2>REPLACE</KEYWORD2>\r
-      <KEYWORD2>RETAIN</KEYWORD2>\r
-      <KEYWORD2>RETURN</KEYWORD2>\r
-      <KEYWORD2>REUSE</KEYWORD2>\r
-      <KEYWORD2>RSQUARE</KEYWORD2>\r
-      <KEYWORD2>RUN</KEYWORD2>\r
-      <KEYWORD2>SASAUTOS</KEYWORD2>\r
-      <KEYWORD2>SCAN</KEYWORD2>\r
-      <KEYWORD2>SELECT</KEYWORD2>\r
-      <KEYWORD2>SELECTION</KEYWORD2>\r
-      <KEYWORD2>SERROR</KEYWORD2>\r
-      <KEYWORD2>SET</KEYWORD2>\r
-      <KEYWORD2>SIMPLE</KEYWORD2>\r
-      <KEYWORD2>SLE</KEYWORD2>\r
-      <KEYWORD2>SLS</KEYWORD2>\r
-      <KEYWORD2>START</KEYWORD2>\r
-      <KEYWORD2>STDIN</KEYWORD2>\r
-      <KEYWORD2>STOP</KEYWORD2>\r
-      <KEYWORD2>STOPOVER</KEYWORD2>\r
-      <KEYWORD2>SUBSTR</KEYWORD2>\r
-      <KEYWORD2>SYMBOL</KEYWORD2>\r
-      <KEYWORD2>SYMBOLGEN</KEYWORD2>\r
-      <KEYWORD2>T</KEYWORD2>\r
-      <KEYWORD2>TABLE</KEYWORD2>\r
-      <KEYWORD2>TABLES</KEYWORD2>\r
-      <KEYWORD2>THEN</KEYWORD2>\r
-      <KEYWORD2>TITLE</KEYWORD2>\r
-      <KEYWORD2>TITLE1</KEYWORD2>\r
-      <KEYWORD2>TITLE2</KEYWORD2>\r
-      <KEYWORD2>TITLE3</KEYWORD2>\r
-      <KEYWORD2>TITLE4</KEYWORD2>\r
-      <KEYWORD2>TITLE5</KEYWORD2>\r
-      <KEYWORD2>TO</KEYWORD2>\r
-      <KEYWORD2>TOL</KEYWORD2>\r
-      <KEYWORD2>UNFORMATTED</KEYWORD2>\r
-      <KEYWORD2>UNTIL</KEYWORD2>\r
-      <KEYWORD2>UPDATE</KEYWORD2>\r
-      <KEYWORD2>VALUE</KEYWORD2>\r
-      <KEYWORD2>VAR</KEYWORD2>\r
-      <KEYWORD2>WHEN</KEYWORD2>\r
-      <KEYWORD2>WHERE</KEYWORD2>\r
-      <KEYWORD2>WHILE</KEYWORD2>\r
-      <KEYWORD2>WINDOW</KEYWORD2>\r
-      <KEYWORD2>WORK</KEYWORD2>\r
-      <KEYWORD2>X</KEYWORD2>\r
-      <KEYWORD2>XSYNC</KEYWORD2>\r
-      <KEYWORD2>XWAIT</KEYWORD2>\r
-      <KEYWORD2>YES</KEYWORD2>\r
-      <KEYWORD2>YYMMDD</KEYWORD2>\r
-    </KEYWORDS>\r
-\r
-    </RULES>\r
-</MODE>\r
-\r
-\r
-\r
+<?xml version="1.0"?>
+
+<!DOCTYPE MODE SYSTEM "xmode.dtd">
+
+<!--
+      SAS edit mode by Bill McMilleon (bill@mcmilleon.com) March 19, 2003
+      updated by Ian Helgesen 2007-10-02
+      updated by goebbe 2009-05-19
+      updated by goebbe 2010-06-15
+
+      Suggested catalog file entry:
+      <MODE NAME="SAS"         FILE="sas.xml" FILE_NAME_GLOB="*.{sas}" />
+-->
+
+<MODE>
+<PROPS>
+    <PROPERTY NAME="indentNextLines" VALUE="(.*%?do.*;|\s*proc
+.*;|\s*data .*;|\s*%macro\s?.*;|define event \S+\s*;)"/>
+
+    <PROPERTY NAME="unindentThisLine" VALUE="^\s*(else.*|end\s*|elsif.*|rescue.*|when.*)$"/>
+    <PROPERTY NAME="unindentNextLines" VALUE="^\s*(end\s*|else.*|rescue.*|elsif.*|when.*)$"/>
+
+    <PROPERTY NAME="commentStart" VALUE="/*" />
+    <PROPERTY NAME="commentEnd" VALUE="*/" />
+    <PROPERTY NAME="lineComment" VALUE="*" />
+</PROPS>
+
+    <RULES IGNORE_CASE="TRUE" NO_WORD_SEP="_" HIGHLIGHT_DIGITS="TRUE">
+
+<!-- In fixed form, column 72 is the last column parsed, unless the
+\extend_source option is invoked -->
+    <!-- TERMINATE AT_CHAR="72" / -->
+
+<!-- type2-range comment in the case when there is nothing OR nothing but space between the last ; and the *   -->
+<!-- Currently the ending ; of a comment cannot be used in regexp inside Jedit -->
+<!-- therefore several type2-range comments in a row requires regexp for each case -->
+
+<!-- Currently only two type2-range-comments in row (per line) are implemented  -->
+<!-- The rational behind the solution is the following: Define the "complete type2-comment block -->
+<!-- AND the start of the second typ2-comment block" as the start of the type2-range comment  -->
+
+<!-- case0: two COMMENT2 range comments in a row at the start of a line: -->
+<SPAN_REGEXP TYPE="COMMENT2" HASH_CHAR="*" AT_WHITESPACE_END="TRUE">
+    <BEGIN>[*][^;]*[;][\s]*[*]</BEGIN>
+    <END>;</END>
+</SPAN_REGEXP>
+
+<!-- case1: two comments in a row /*comment*/ *comment; - at the start of a line, : -->
+<SPAN_REGEXP TYPE="COMMENT2" HASH_CHAR="/*" AT_WHITESPACE_END="TRUE">
+    <BEGIN>([/][*][*][/][\s]*[*])|([/][*](.)*[*][/][\s]*[*])</BEGIN>
+    <END>;</END>
+</SPAN_REGEXP>
+
+<!-- case2: one COMMENT2 at the start of a line: -->
+<SPAN_REGEXP TYPE="COMMENT2" HASH_CHAR="*" AT_WHITESPACE_END="TRUE">
+    <BEGIN>[*]</BEGIN>
+    <END>;</END>
+</SPAN_REGEXP>
+
+<!-- case3: two COMMENT2 range comments in a row -  after SAS-code:-->
+<SPAN_REGEXP TYPE="COMMENT2"  HASH_CHAR=";">
+    <BEGIN>[;][\s]*[*][^;]*[;][\s]*[*]</BEGIN>
+    <END>;</END>
+</SPAN_REGEXP>
+
+<!-- case4: two comments in a row /*comment*/ *comment; - after SAS-code:-->
+<SPAN_REGEXP TYPE="COMMENT2" HASH_CHAR=";">
+    <BEGIN>[;][\s]*[/][*](.)*[*][/][\s]*[*]</BEGIN>
+    <END>;</END>
+</SPAN_REGEXP>
+
+<!-- case5: one COMMENT2 range comment after SAS-code: -->
+<SPAN_REGEXP TYPE="COMMENT2" HASH_CHAR=";">
+    <BEGIN>[;][\s]*[*]</BEGIN>
+    <END>;</END>
+</SPAN_REGEXP>
+
+<!-- range-comment "macro"-type -->
+<SPAN TYPE="COMMENT2">
+    <BEGIN>%*</BEGIN>
+    <END>;</END>
+</SPAN>
+
+<!-- C style comment -->
+<SPAN TYPE="COMMENT1">
+       <BEGIN>/*</BEGIN>
+       <END>*/</END>
+</SPAN>
+
+<SPAN TYPE="LITERAL1" NO_LINE_BREAK="FALSE">
+    <BEGIN>'</BEGIN>
+    <END>'</END>
+</SPAN>
+
+<SPAN TYPE="LITERAL2" NO_LINE_BREAK="FALSE">
+    <BEGIN>"</BEGIN>
+    <END>"</END>
+</SPAN>
+
+<!-- PROCS                 -->
+<SEQ TYPE="KEYWORD1" AT_WORD_START="TRUE">PROC ANOVA</SEQ>
+<SEQ TYPE="KEYWORD1" AT_WORD_START="TRUE">PROC APPEND</SEQ>
+<SEQ TYPE="KEYWORD1" AT_WORD_START="TRUE">PROC BOXPLOT</SEQ>
+<SEQ TYPE="KEYWORD1" AT_WORD_START="TRUE">PROC CONTENTS</SEQ>
+<SEQ TYPE="KEYWORD1" AT_WORD_START="TRUE">PROC DATASETS</SEQ>
+<SEQ TYPE="KEYWORD1" AT_WORD_START="TRUE">PROC DELETE</SEQ>
+<SEQ TYPE="KEYWORD1" AT_WORD_START="TRUE">PROC FORMAT</SEQ>
+<SEQ TYPE="KEYWORD1" AT_WORD_START="TRUE">PROC FREQ</SEQ>
+<SEQ TYPE="KEYWORD1" AT_WORD_START="TRUE">PROC IMPORT</SEQ>
+<SEQ TYPE="KEYWORD1" AT_WORD_START="TRUE">PROC MEANS</SEQ>
+<SEQ TYPE="KEYWORD1" AT_WORD_START="TRUE">PROC PRINTTO</SEQ>
+<SEQ TYPE="KEYWORD1" AT_WORD_START="TRUE">PROC PRINT</SEQ>
+<SEQ TYPE="KEYWORD1" AT_WORD_START="TRUE">PROC REPORT</SEQ>
+<SEQ TYPE="KEYWORD1" AT_WORD_START="TRUE">PROC SORT</SEQ>
+<SEQ TYPE="KEYWORD1" AT_WORD_START="TRUE">PROC SQL</SEQ>
+<SEQ TYPE="KEYWORD1" AT_WORD_START="TRUE">PROC UNIVARIATE</SEQ>
+
+<SEQ TYPE="KEYWORD1" AT_WHITESPACE_END="TRUE">DATA </SEQ>
+<SEQ TYPE="FUNCTION" AT_WORD_START="TRUE">%INCLUDE</SEQ>
+
+<SEQ TYPE="KEYWORD1" AT_WORD_START="TRUE">PROC</SEQ>
+<SEQ TYPE="KEYWORD1" AT_WORD_START="TRUE">RUN;</SEQ>
+<SEQ TYPE="KEYWORD1" AT_WORD_START="TRUE">QUIT;</SEQ>
+
+<SEQ TYPE="KEYWORD1" AT_WORD_START="TRUE">%macro</SEQ>
+<SEQ TYPE="KEYWORD1" AT_WORD_START="TRUE">%mend</SEQ>
+
+<!--<SEQ_REGEXP TYPE="FUNCTION" AT_WORD_START="TRUE">\s*%\S+\s?\(</SEQ_REGEXP>-->
+<!--<SEQ_REGEXP TYPE="KEYWORD2" HASH_CHAR="%">\%\s*\(</SEQ_REGEXP>-->
+
+<SEQ_REGEXP TYPE="KEYWORD3" HASH_CHAR="%" AT_WHITESPACE_END="TRUE">%\S+\s*\(</SEQ_REGEXP>
+<SEQ_REGEXP TYPE="MARKUP" HASH_CHAR="&amp;">(&amp;*\w+)+(\.+|,|;|\s|$|\}|\))</SEQ_REGEXP>
+<!--<SEQ_REGEXP TYPE="MARKUP" HASH_CHAR="&amp;" AT_LINE_START="TRUE">&amp;\S+(\.|;|\s)</SEQ_REGEXP>-->
+
+<!--"data"+"=" can also be a keyword that is applied inside a proc or a data step:-->
+<SEQ_REGEXP TYPE="KEYWORD2" HASH_CHAR="DATA">(DATA)[\s]*[=]</SEQ_REGEXP>
+
+<!--<SEQ TYPE="MARKUP" AT_WORD_START="TRUE">ODS CSV</SEQ>
+<SEQ TYPE="MARKUP" AT_WORD_START="TRUE">ODS CSV CLOSE</SEQ>
+<SEQ TYPE="MARKUP" AT_WORD_START="TRUE">ODS HTML</SEQ>
+<SEQ TYPE="MARKUP" AT_WORD_START="TRUE">ODS HTML CLOSE</SEQ>
+<SEQ TYPE="MARKUP" AT_WORD_START="TRUE">ODS LISTING</SEQ>
+<SEQ TYPE="MARKUP" AT_WORD_START="TRUE">ODS LISTING OFF</SEQ>
+<SEQ TYPE="MARKUP" AT_WORD_START="TRUE">ODS PDF</SEQ>
+<SEQ TYPE="MARKUP" AT_WORD_START="TRUE">ODS PDF CLOSE</SEQ>
+<SEQ TYPE="MARKUP" AT_WORD_START="TRUE">ODS RTF</SEQ>
+<SEQ TYPE="MARKUP" AT_WORD_START="TRUE">ODS RTF CLOSE</SEQ>
+<SEQ TYPE="MARKUP" AT_WORD_START="TRUE">ODS</SEQ>-->
+
+    <!-- Highlighted Operators -->
+    <SEQ TYPE="OPERATOR">=</SEQ>
+    <SEQ TYPE="OPERATOR">&lt;</SEQ>
+    <SEQ TYPE="OPERATOR">&gt;</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="OPERATOR">!</SEQ>
+
+    <KEYWORDS>
+      <KEYWORD2>$ASCII</KEYWORD2>
+      <KEYWORD2>$BINARY</KEYWORD2>
+      <KEYWORD2>$CB</KEYWORD2>
+      <KEYWORD2>$CHAR</KEYWORD2>
+      <KEYWORD2>$CHARZB</KEYWORD2>
+      <KEYWORD2>$EBCDIC</KEYWORD2>
+      <KEYWORD2>$HEX</KEYWORD2>
+      <KEYWORD2>$OCTAL</KEYWORD2>
+      <KEYWORD2>$VARYING</KEYWORD2>
+
+      <KEYWORD3>%ABORT</KEYWORD3>
+      <KEYWORD3>%BQUOTE</KEYWORD3>
+      <KEYWORD3>%DO</KEYWORD3>
+      <KEYWORD3>%ELSE</KEYWORD3>
+      <KEYWORD3>%END</KEYWORD3>
+      <KEYWORD3>%EVAL</KEYWORD3>
+      <KEYWORD3>%Global</KEYWORD3>
+      <KEYWORD3>%GOTO</KEYWORD3>
+      <KEYWORD3>%IF</KEYWORD3>
+      <KEYWORD3>%INC</KEYWORD3>
+      <KEYWORD3>%INCLUDE</KEYWORD3>
+      <KEYWORD3>%INDEX</KEYWORD3>
+      <KEYWORD3>%INPUT</KEYWORD3>
+      <KEYWORD3>%LENGTH</KEYWORD3>
+      <KEYWORD3>%LET</KEYWORD3>
+      <KEYWORD3>%LOCAL</KEYWORD3>
+      <KEYWORD3>%LOWCASE</KEYWORD3>
+      <KEYWORD3>%MACRO</KEYWORD3>
+      <KEYWORD3>%MEND</KEYWORD3>
+      <KEYWORD3>%NRBQUOTE</KEYWORD3>
+      <KEYWORD3>%NRQUOTE</KEYWORD3>
+      <KEYWORD3>%NRSTR</KEYWORD3>
+      <KEYWORD3>%PUT</KEYWORD3>
+      <KEYWORD3>%QSCAN</KEYWORD3>
+      <KEYWORD3>%QSUBSTR</KEYWORD3>
+      <KEYWORD3>%Quote</KEYWORD3>
+      <KEYWORD3>%RUN</KEYWORD3>
+      <KEYWORD3>%SCAN</KEYWORD3>
+      <KEYWORD3>%STR</KEYWORD3>
+      <KEYWORD3>%SUBSTR</KEYWORD3>
+      <KEYWORD3>%SYMDEL</KEYWORD3>
+      <KEYWORD3>%SYSEXEC</KEYWORD3>
+      <KEYWORD3>%SYSFUNC</KEYWORD3>
+      <KEYWORD3>%THEN</KEYWORD3>
+      <KEYWORD3>%TO</KEYWORD3>
+      <KEYWORD3>%UNTIL</KEYWORD3>
+      <KEYWORD3>%WHILE</KEYWORD3>
+      <KEYWORD3>%WINDOW</KEYWORD3>
+      <KEYWORD3>%UPCASE</KEYWORD3>
+
+      <KEYWORD2>_ALL_</KEYWORD2>
+      <KEYWORD2>_CHARACTER_</KEYWORD2>
+      <KEYWORD2>_CMD_</KEYWORD2>
+      <KEYWORD2>_ERROR_</KEYWORD2>
+      <KEYWORD2>_I_</KEYWORD2>
+      <KEYWORD2>_INFILE_</KEYWORD2>
+      <KEYWORD2>_LAST_</KEYWORD2>
+      <KEYWORD2>_MSG_</KEYWORD2>
+      <KEYWORD2>_N_</KEYWORD2>
+      <KEYWORD2>_NULL_</KEYWORD2>
+      <KEYWORD2>_NUMERIC_</KEYWORD2>
+      <KEYWORD2>_TEMPORARY_</KEYWORD2>
+      <KEYWORD2>_TYPE_</KEYWORD2>
+      <KEYWORD2>=DATA</KEYWORD2>
+      <KEYWORD2>ABORT</KEYWORD2>
+      <KEYWORD2>ADD</KEYWORD2>
+      <KEYWORD2>ADJRSQ</KEYWORD2>
+      <KEYWORD2>AND</KEYWORD2>
+      <KEYWORD2>ARRAY</KEYWORD2>
+      <KEYWORD2>ATTRIB</KEYWORD2>
+      <KEYWORD2>BACKWARD</KEYWORD2>
+      <KEYWORD2>BINARY</KEYWORD2>
+      <KEYWORD2>BLOCKSIZE</KEYWORD2>
+      <KEYWORD2>BY</KEYWORD2>
+      <KEYWORD2>BZ</KEYWORD2>
+      <KEYWORD2>CALL</KEYWORD2>
+      <KEYWORD2>CARDS</KEYWORD2>
+      <KEYWORD2>CARDS4</KEYWORD2>
+      <KEYWORD2>CHAR</KEYWORD2>
+      <KEYWORD2>CLASS</KEYWORD2>
+      <KEYWORD2>COL</KEYWORD2>
+      <KEYWORD2>COLLIN</KEYWORD2>
+      <KEYWORD2>COLUMN</KEYWORD2>
+      <KEYWORD2>COMMA</KEYWORD2>
+      <KEYWORD2>COMMAX</KEYWORD2>
+      <KEYWORD2>CREATE</KEYWORD2>
+      <KEYWORD2>DATA</KEYWORD2>
+      <KEYWORD2>DATA=</KEYWORD2>
+      <KEYWORD2>DATE</KEYWORD2>
+      <KEYWORD2>DATAFILE</KEYWORD2>
+      <KEYWORD2>DATETIME</KEYWORD2>
+      <KEYWORD2>DDMMYY</KEYWORD2>
+      <KEYWORD2>DECENDING</KEYWORD2>
+      <KEYWORD2>DEFINE</KEYWORD2>
+      <KEYWORD2>DELETE</KEYWORD2>
+      <KEYWORD2>DELIMITER</KEYWORD2>
+      <KEYWORD2>DISPLAY</KEYWORD2>
+      <KEYWORD2>DLM</KEYWORD2>
+      <KEYWORD2>DO</KEYWORD2>
+      <KEYWORD2>DROP</KEYWORD2>
+      <KEYWORD2>ELSE</KEYWORD2>
+      <KEYWORD2>END</KEYWORD2>
+      <KEYWORD2>ENDSAS</KEYWORD2>
+      <KEYWORD2>EOF</KEYWORD2>
+      <KEYWORD2>EOV</KEYWORD2>
+      <KEYWORD2>EQ</KEYWORD2>
+      <KEYWORD2>ERRORS</KEYWORD2>
+      <KEYWORD2>FILE</KEYWORD2>
+      <KEYWORD2>FILENAME</KEYWORD2>
+      <KEYWORD2>FILEVAR</KEYWORD2>
+      <KEYWORD2>FIRST.</KEYWORD2>
+      <KEYWORD2>FIRSTOBS</KEYWORD2>
+      <KEYWORD2>FOOTNOTE</KEYWORD2>
+      <KEYWORD2>FOOTNOTE1</KEYWORD2>
+      <KEYWORD2>FOOTNOTE2</KEYWORD2>
+      <KEYWORD2>FOOTNOTE3</KEYWORD2>
+      <KEYWORD2>FORM</KEYWORD2>
+      <KEYWORD2>FORMAT</KEYWORD2>
+      <KEYWORD2>FORMCHAR</KEYWORD2>
+      <KEYWORD2>FORMDELIM</KEYWORD2>
+      <KEYWORD2>FORMDLIM</KEYWORD2>
+      <KEYWORD2>FORWARD</KEYWORD2>
+      <KEYWORD2>FROM</KEYWORD2>
+      <KEYWORD2>GO</KEYWORD2>
+      <KEYWORD2>GROUP</KEYWORD2>
+      <KEYWORD2>GT</KEYWORD2>
+      <KEYWORD2>HBAR</KEYWORD2>
+      <KEYWORD2>HEX</KEYWORD2>
+      <KEYWORD2>HPCT</KEYWORD2>
+      <KEYWORD2>HVAR</KEYWORD2>
+      <KEYWORD2>IB</KEYWORD2>
+      <KEYWORD2>ID</KEYWORD2>
+      <KEYWORD2>IEEE</KEYWORD2>
+      <KEYWORD2>IF</KEYWORD2>
+      <KEYWORD2>IN</KEYWORD2>
+      <KEYWORD2>INFILE</KEYWORD2>
+      <KEYWORD2>INFORMAT</KEYWORD2>
+      <KEYWORD2>INTO</KEYWORD2>
+      <KEYWORD2>INPUT</KEYWORD2>
+      <KEYWORD2>INR</KEYWORD2>
+      <KEYWORD2>INVALUE</KEYWORD2>
+      <KEYWORD2>JOIN</KEYWORD2>
+      <KEYWORD2>JULIAN</KEYWORD2>
+      <KEYWORD2>KEEP</KEYWORD2>
+      <KEYWORD2>LABEL</KEYWORD2>
+      <KEYWORD2>LAG</KEYWORD2>
+      <KEYWORD2>LAST.</KEYWORD2>
+      <KEYWORD2>LEFT</KEYWORD2>
+      <KEYWORD2>LENGTH</KEYWORD2>
+      <KEYWORD2>LIB</KEYWORD2>
+      <KEYWORD2>LIBNAME</KEYWORD2>
+      <KEYWORD2>LINE</KEYWORD2>
+      <KEYWORD2>LINESIZE</KEYWORD2>
+      <KEYWORD2>LINK</KEYWORD2>
+      <KEYWORD2>LIST</KEYWORD2>
+      <KEYWORD2>LOSTCARD</KEYWORD2>
+      <KEYWORD2>LRECL</KEYWORD2>
+      <KEYWORD2>LS</KEYWORD2>
+      <KEYWORD2>MACRO</KEYWORD2>
+      <KEYWORD2>MACROGEN</KEYWORD2>
+      <KEYWORD2>MAXDEC</KEYWORD2>
+      <KEYWORD2>MAXR</KEYWORD2>
+      <KEYWORD2>MEDIAN</KEYWORD2>
+      <KEYWORD2>MEMTYPE</KEYWORD2>
+      <KEYWORD2>MERGE</KEYWORD2>
+      <KEYWORD2>MERROR</KEYWORD2>
+      <KEYWORD2>MISSOVE</KEYWORD2>
+      <KEYWORD2>MLOGIC</KEYWORD2>
+      <KEYWORD2>MMDDYY</KEYWORD2>
+      <KEYWORD2>MODE</KEYWORD2>
+      <KEYWORD2>MODEL</KEYWORD2>
+      <KEYWORD2>MONYY</KEYWORD2>
+      <KEYWORD2>MPRINT</KEYWORD2>
+      <KEYWORD2>MRECALL</KEYWORD2>
+      <KEYWORD2>NE</KEYWORD2>
+      <KEYWORD2>NEW</KEYWORD2>
+      <KEYWORD2>NO</KEYWORD2>
+      <KEYWORD2>NOBS</KEYWORD2>
+      <KEYWORD2>NOCENTER</KEYWORD2>
+      <KEYWORD2>NOCUM</KEYWORD2>
+      <KEYWORD2>NODATE</KEYWORD2>
+      <KEYWORD2>NODUP</KEYWORD2>
+      <KEYWORD2>NODUPKEY</KEYWORD2>
+      <KEYWORD2>NOINT</KEYWORD2>
+      <KEYWORD2>NONUMBER</KEYWORD2>
+      <KEYWORD2>NOPAD</KEYWORD2>
+      <KEYWORD2>NOPRINT</KEYWORD2>
+      <KEYWORD2>NOROW</KEYWORD2>
+      <KEYWORD2>NOT</KEYWORD2>
+      <KEYWORD2>NOTITLE</KEYWORD2>
+      <KEYWORD2>NOTITLES</KEYWORD2>
+      <KEYWORD2>NOXSYNC</KEYWORD2>
+      <KEYWORD2>NOXWAIT</KEYWORD2>
+      <KEYWORD2>NUMBER</KEYWORD2>
+      <KEYWORD2>NWAY</KEYWORD2>
+      <KEYWORD2>OBS</KEYWORD2>
+      <KEYWORD2>OPTION</KEYWORD2>
+      <KEYWORD2>OPTIONS</KEYWORD2>
+      <KEYWORD2>OR</KEYWORD2>
+      <KEYWORD2>ORDER</KEYWORD2>
+      <KEYWORD2>OTHERWISE</KEYWORD2>
+      <KEYWORD2>OUT</KEYWORD2>
+      <KEYWORD2>OUTPUT</KEYWORD2>
+      <KEYWORD2>OVER</KEYWORD2>
+      <KEYWORD2>PAD</KEYWORD2>
+      <KEYWORD2>PAD2</KEYWORD2>
+      <KEYWORD2>PAGESIZE</KEYWORD2>
+      <KEYWORD2>PD</KEYWORD2>
+      <KEYWORD2>PERCENT</KEYWORD2>
+      <KEYWORD2>PIB</KEYWORD2>
+      <KEYWORD2>PK</KEYWORD2>
+      <KEYWORD2>POINT</KEYWORD2>
+      <KEYWORD2>POSITION</KEYWORD2>
+      <KEYWORD2>PRINTER</KEYWORD2>
+      <KEYWORD2>PRXMATCH</KEYWORD2>
+      <KEYWORD2>PRXCHANGE</KEYWORD2>
+      <KEYWORD2>PS</KEYWORD2>
+      <KEYWORD2>PUT</KEYWORD2>
+      <KEYWORD2>R</KEYWORD2>
+      <KEYWORD2>RB</KEYWORD2>
+      <KEYWORD2>RECFM</KEYWORD2>
+      <KEYWORD2>REG</KEYWORD2>
+      <KEYWORD2>REGR</KEYWORD2>
+      <KEYWORD2>RENAME</KEYWORD2>
+      <KEYWORD2>REPLACE</KEYWORD2>
+      <KEYWORD2>RETAIN</KEYWORD2>
+      <KEYWORD2>RETURN</KEYWORD2>
+      <KEYWORD2>REUSE</KEYWORD2>
+      <KEYWORD2>REVERSE</KEYWORD2>
+      <KEYWORD2>RSQUARE</KEYWORD2>
+      <KEYWORD2>RUN</KEYWORD2>
+      <KEYWORD2>SASAUTOS</KEYWORD2>
+      <KEYWORD2>SCAN</KEYWORD2>
+      <KEYWORD2>SELECT</KEYWORD2>
+      <KEYWORD2>SELECTION</KEYWORD2>
+      <KEYWORD2>SERROR</KEYWORD2>
+      <KEYWORD2> SET</KEYWORD2>
+      <KEYWORD2>SIMPLE</KEYWORD2>
+      <KEYWORD2>SLE</KEYWORD2>
+      <KEYWORD2>SLS</KEYWORD2>
+      <KEYWORD2>START</KEYWORD2>
+      <KEYWORD2>STDIN</KEYWORD2>
+      <KEYWORD2>STOP</KEYWORD2>
+      <KEYWORD2>STOPOVER</KEYWORD2>
+      <KEYWORD2>SUBSTR</KEYWORD2>
+      <KEYWORD2>SYMBOL</KEYWORD2>
+      <KEYWORD2>SYMBOLGEN</KEYWORD2>
+      <KEYWORD2>SYMGET</KEYWORD2>
+      <KEYWORD2>SYMPUT</KEYWORD2>
+      <KEYWORD2>SYMPUTX</KEYWORD2>
+      <KEYWORD2>T</KEYWORD2>
+      <KEYWORD2>TABLE</KEYWORD2>
+      <KEYWORD2>TABLES</KEYWORD2>
+      <KEYWORD2>THEN</KEYWORD2>
+      <KEYWORD2>TITLE</KEYWORD2>
+      <KEYWORD2>TITLE1</KEYWORD2>
+      <KEYWORD2>TITLE2</KEYWORD2>
+      <KEYWORD2>TITLE3</KEYWORD2>
+      <KEYWORD2>TITLE4</KEYWORD2>
+      <KEYWORD2>TITLE5</KEYWORD2>
+      <KEYWORD2>TO</KEYWORD2>
+      <KEYWORD2>TOL</KEYWORD2>
+      <KEYWORD2>TRIM</KEYWORD2>
+      <KEYWORD2>UNFORMATTED</KEYWORD2>
+      <KEYWORD2>UNTIL</KEYWORD2>
+      <KEYWORD2>UPDATE</KEYWORD2>
+      <KEYWORD2>UPCASE</KEYWORD2>
+      <KEYWORD2>VALUE</KEYWORD2>
+      <KEYWORD2>VAR</KEYWORD2>
+      <KEYWORD2>WHEN</KEYWORD2>
+      <KEYWORD2>WHERE</KEYWORD2>
+      <KEYWORD2>WHILE</KEYWORD2>
+      <KEYWORD2>WINDOW</KEYWORD2>
+      <KEYWORD2>WORK</KEYWORD2>
+      <KEYWORD2>X</KEYWORD2>
+      <KEYWORD2>XSYNC</KEYWORD2>
+      <KEYWORD2>XWAIT</KEYWORD2>
+      <KEYWORD2>YES</KEYWORD2>
+      <KEYWORD2>YYMMDD</KEYWORD2>
+      <KEYWORD2>GOPTIONS</KEYWORD2>
+      <KEYWORD2>AXIS1</KEYWORD2>
+      <KEYWORD2>AXIS2</KEYWORD2>
+      <KEYWORD2>SYMBOL1</KEYWORD2>
+      <KEYWORD2>SET</KEYWORD2>
+   </KEYWORDS>
+
+    </RULES>
+</MODE>
+
+
+