alvinalexander.com | career | drupal | java | mac | mysql | perl | scala | uml | unix  

jEdit example source code file (sas.xml)

This example jEdit source code file (sas.xml) is included in the DevDaily.com "Java Source Code Warehouse" project. The intent of this project is to help you "Learn Java by Example" TM.

Java - jEdit tags/keywords

at_word_start, comment2, function, keyword2, keyword2, keyword3, operator, proc, seq, seq, true, true, type, type

The jEdit sas.xml source code

<?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
      
      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" / -->

<!-- C style comment -->
<SPAN TYPE="COMMENT1">
	<BEGIN>/*
	<END>*/
</SPAN>

<!-- COMMENT2: 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 COMMENT2 range comments in a row requires regexp for each case -->

<!-- Currently only two COMMENT2 range-comments in row (per line) are implemented  -->
<!-- The rational behind the solution is the following: Define the "complete COMMENT2-block -->
<!-- AND the start of the second COMMENT2 block" as the start of the second COMMENT2 range comment  -->

<!-- case1: two COMMENT2 range comments in a row at the start of a line: -->
<SPAN_REGEXP TYPE="COMMENT2" HASH_CHAR="*" AT_WHITESPACE_END="TRUE" EXCLUDE_MATCH="FALSE">
    <BEGIN>[*][^;]*[;][\s]*[*]
    <END>;
</SPAN_REGEXP>

<!-- case2: one COMMENT2 at the start of a line: -->
<SPAN_REGEXP TYPE="COMMENT2" HASH_CHAR="*" AT_WHITESPACE_END="TRUE" EXCLUDE_MATCH="FALSE">
    <BEGIN>[*]
    <END>;
</SPAN_REGEXP>

<!-- case3: two COMMENT2 range comments in a row after SAS-code: -->
<SPAN_REGEXP TYPE="COMMENT2"  HASH_CHAR=";" EXCLUDE_MATCH="FALSE">
    <BEGIN>[;][\s]*[*][^;]*[;][\s]*[*]
    <END>;
</SPAN_REGEXP>

<!-- case4: one COMMENT2 range comment after SAS-code: -->
<SPAN_REGEXP TYPE="COMMENT2" HASH_CHAR=";" EXCLUDE_MATCH="FALSE">
    <BEGIN>[;][\s]*[*]
    <END>;
</SPAN_REGEXP>


<SPAN TYPE="COMMENT2">
    <BEGIN>%*
    <END>;
</SPAN>


<SPAN TYPE="LITERAL1" NO_LINE_BREAK="FALSE">
    <BEGIN>'
    <END>'
</SPAN>
<SPAN TYPE="LITERAL2" NO_LINE_BREAK="FALSE">
    <BEGIN>"
    <END>"
</SPAN>

<!-- PROCS                 -->
<SEQ TYPE="FUNCTION" AT_WORD_START="TRUE">PROC ANOVA
<SEQ TYPE="FUNCTION" AT_WORD_START="TRUE">PROC APPEND
<SEQ TYPE="FUNCTION" AT_WORD_START="TRUE">PROC BOXPLOT
<SEQ TYPE="FUNCTION" AT_WORD_START="TRUE">PROC CONTENTS
<SEQ TYPE="FUNCTION" AT_WORD_START="TRUE">PROC DATASETS
<SEQ TYPE="FUNCTION" AT_WORD_START="TRUE">PROC DELETE
<SEQ TYPE="FUNCTION" AT_WORD_START="TRUE">PROC FORMAT
<SEQ TYPE="FUNCTION" AT_WORD_START="TRUE">PROC FREQ
<SEQ TYPE="FUNCTION" AT_WORD_START="TRUE">PROC IMPORT
<SEQ TYPE="FUNCTION" AT_WORD_START="TRUE">PROC MEANS
<SEQ TYPE="FUNCTION" AT_WORD_START="TRUE">PROC PRINT
<SEQ TYPE="FUNCTION" AT_WORD_START="TRUE">PROC REPORT
<SEQ TYPE="FUNCTION" AT_WORD_START="TRUE">PROC SORT
<SEQ TYPE="FUNCTION" AT_WORD_START="TRUE">PROC SQL
<SEQ TYPE="FUNCTION" AT_WORD_START="TRUE">PROC UNIVARIATE

<SEQ TYPE="FUNCTION" AT_WHITESPACE_END="TRUE">DATA 
<SEQ TYPE="FUNCTION" AT_WORD_START="TRUE">%INCLUDE

<SEQ TYPE="FUNCTION" AT_WORD_START="TRUE">PROC
<SEQ TYPE="FUNCTION" AT_WORD_START="TRUE">RUN;
<SEQ TYPE="FUNCTION" AT_WORD_START="TRUE">QUIT;

<SEQ TYPE="FUNCTION" AT_WORD_START="TRUE">%macro
<SEQ TYPE="FUNCTION" AT_WORD_START="TRUE">%mend

<!---->
<!---->

<SEQ_REGEXP TYPE="KEYWORD3" HASH_CHAR="%" AT_WHITESPACE_END="TRUE">%\S+\(
<SEQ_REGEXP TYPE="KEYWORD3" HASH_CHAR="&" AT_LINE_START="TRUE">&\S+(\.|;|\s)

<!--
<SEQ TYPE="MARKUP" AT_WORD_START="TRUE">ODS CSV CLOSE
<SEQ TYPE="MARKUP" AT_WORD_START="TRUE">ODS HTML
<SEQ TYPE="MARKUP" AT_WORD_START="TRUE">ODS HTML CLOSE
<SEQ TYPE="MARKUP" AT_WORD_START="TRUE">ODS LISTING
<SEQ TYPE="MARKUP" AT_WORD_START="TRUE">ODS LISTING OFF
<SEQ TYPE="MARKUP" AT_WORD_START="TRUE">ODS PDF
<SEQ TYPE="MARKUP" AT_WORD_START="TRUE">ODS PDF CLOSE
<SEQ TYPE="MARKUP" AT_WORD_START="TRUE">ODS RTF
<SEQ TYPE="MARKUP" AT_WORD_START="TRUE">ODS RTF CLOSE
<SEQ TYPE="MARKUP" AT_WORD_START="TRUE">ODS-->

    <!-- Highlighted Operators -->
    <SEQ TYPE="OPERATOR">=
    <SEQ TYPE="OPERATOR"><
    <SEQ TYPE="OPERATOR">>
    <!--  -->
    <SEQ TYPE="OPERATOR">|
    <SEQ TYPE="OPERATOR">~
    <SEQ TYPE="OPERATOR">^
    <SEQ TYPE="OPERATOR">@
    <SEQ TYPE="OPERATOR">?
    <SEQ TYPE="OPERATOR">/
    <SEQ TYPE="OPERATOR">.
    <SEQ TYPE="OPERATOR">-
    <SEQ TYPE="OPERATOR">+
    <SEQ TYPE="OPERATOR">*
    <SEQ TYPE="OPERATOR">!
    
    <KEYWORDS>
      <KEYWORD2>$ASCII
      <KEYWORD2>$BINARY
      <KEYWORD2>$CB
      <KEYWORD2>$CHAR
      <KEYWORD2>$CHARZB
      <KEYWORD2>$EBCDIC
      <KEYWORD2>$HEX
      <KEYWORD2>$OCTAL
      <KEYWORD2>$VARYING

      <KEYWORD3>%ABORT
      <KEYWORD3>%BQUOTE
      <KEYWORD3>%DO
      <KEYWORD3>%ELSE
      <KEYWORD3>%END
      <KEYWORD3>%EVAL
      <KEYWORD3>%Global
      <KEYWORD3>%GOTO
      <KEYWORD3>%IF
      <KEYWORD3>%INC
      <KEYWORD3>%INCLUDE
      <KEYWORD3>%INDEX
      <KEYWORD3>%INPUT
      <KEYWORD3>%LENGTH
      <KEYWORD3>%LET
      <KEYWORD3>%LOCAL
      <KEYWORD3>%LOWCASE
      <KEYWORD3>%MACRO
      <KEYWORD3>%MEND
      <KEYWORD3>%NRBQUOTE
      <KEYWORD3>%NRQUOTE
      <KEYWORD3>%NRSTR
      <KEYWORD3>%PUT
      <KEYWORD3>%QSCAN
      <KEYWORD3>%QSUBSTR
      <KEYWORD3>%Quote
      <KEYWORD3>%RUN
      <KEYWORD3>%SCAN
      <KEYWORD3>%STR
      <KEYWORD3>%SUBSTR
      <KEYWORD3>%SYMDEL
      <KEYWORD3>%SYSEXEC
      <KEYWORD3>%SYSFUNC
      <KEYWORD3>%THEN
      <KEYWORD3>%TO
      <KEYWORD3>%UNTIL
      <KEYWORD3>%WHILE
      <KEYWORD3>%WINDOW
      <KEYWORD3>%UPCASE

      <KEYWORD2>_ALL_
      <KEYWORD2>_CHARACTER_
      <KEYWORD2>_CMD_
      <KEYWORD2>_ERROR_
      <KEYWORD2>_I_
      <KEYWORD2>_INFILE_
      <KEYWORD2>_LAST_
      <KEYWORD2>_MSG_
      <KEYWORD2>_N_
      <KEYWORD2>_NULL_
      <KEYWORD2>_NUMERIC_
      <KEYWORD2>_TEMPORARY_
      <KEYWORD2>_TYPE_
      <KEYWORD2>=DATA
      <KEYWORD2>ABORT
      <KEYWORD2>ADD
      <KEYWORD2>ADJRSQ
      <KEYWORD2>AND
      <KEYWORD2>ARRAY
      <KEYWORD2>ATTRIB
      <KEYWORD2>BACKWARD
      <KEYWORD2>BINARY
      <KEYWORD2>BLOCKSIZE
      <KEYWORD2>BY
      <KEYWORD2>BZ
      <KEYWORD2>CALL
      <KEYWORD2>CARDS
      <KEYWORD2>CARDS4
      <KEYWORD2>CHAR
      <KEYWORD2>CLASS
      <KEYWORD2>COL
      <KEYWORD2>COLLIN
      <KEYWORD2>COLUMN
      <KEYWORD2>COMMA
      <KEYWORD2>COMMAX
      <KEYWORD2>CREATE
      <KEYWORD2>DATA
      <KEYWORD2>DATA=
      <KEYWORD2>DATE
      <KEYWORD2>DATAFILE
      <KEYWORD2>DATETIME
      <KEYWORD2>DDMMYY
      <KEYWORD2>DECENDING
      <KEYWORD2>DEFINE
      <KEYWORD2>DELETE
      <KEYWORD2>DELIMITER
      <KEYWORD2>DISPLAY
      <KEYWORD2>DLM
      <KEYWORD2>DO
      <KEYWORD2>DROP
      <KEYWORD2>ELSE
      <KEYWORD2>END
      <KEYWORD2>ENDSAS
      <KEYWORD2>EOF
      <KEYWORD2>EOV
      <KEYWORD2>EQ
      <KEYWORD2>ERRORS
      <KEYWORD2>FILE
      <KEYWORD2>FILENAME
      <KEYWORD2>FILEVAR
      <KEYWORD2>FIRST.
      <KEYWORD2>FIRSTOBS
      <KEYWORD2>FOOTNOTE
      <KEYWORD2>FOOTNOTE1
      <KEYWORD2>FOOTNOTE2
      <KEYWORD2>FOOTNOTE3
      <KEYWORD2>FORM
      <KEYWORD2>FORMAT
      <KEYWORD2>FORMCHAR
      <KEYWORD2>FORMDELIM
      <KEYWORD2>FORMDLIM
      <KEYWORD2>FORWARD
      <KEYWORD2>FROM
      <KEYWORD2>GO
      <KEYWORD2>GROUP
      <KEYWORD2>GT
      <KEYWORD2>HBAR
      <KEYWORD2>HEX
      <KEYWORD2>HPCT
      <KEYWORD2>HVAR
      <KEYWORD2>IB
      <KEYWORD2>ID
      <KEYWORD2>IEEE
      <KEYWORD2>IF
      <KEYWORD2>IN
      <KEYWORD2>INFILE
      <KEYWORD2>INFORMAT
      <KEYWORD2>INTO
      <KEYWORD2>INPUT
      <KEYWORD2>INR
      <KEYWORD2>JOIN
      <KEYWORD2>JULIAN
      <KEYWORD2>KEEP
      <KEYWORD2>LABEL
      <KEYWORD2>LAG
      <KEYWORD2>LAST.
      <KEYWORD2>LEFT
      <KEYWORD2>LENGTH
      <KEYWORD2>LIB
      <KEYWORD2>LIBNAME
      <KEYWORD2>LINE
      <KEYWORD2>LINESIZE
      <KEYWORD2>LINK
      <KEYWORD2>LIST
      <KEYWORD2>LOSTCARD
      <KEYWORD2>LRECL
      <KEYWORD2>LS
      <KEYWORD2>MACRO
      <KEYWORD2>MACROGEN
      <KEYWORD2>MAXDEC
      <KEYWORD2>MAXR
      <KEYWORD2>MEDIAN
      <KEYWORD2>MEMTYPE
      <KEYWORD2>MERGE
      <KEYWORD2>MERROR
      <KEYWORD2>MISSOVE
      <KEYWORD2>MLOGIC
      <KEYWORD2>MMDDYY
      <KEYWORD2>MODE
      <KEYWORD2>MODEL
      <KEYWORD2>MONYY
      <KEYWORD2>MPRINT
      <KEYWORD2>MRECALL
      <KEYWORD2 AT_WORD_START="TRUE">NE
      <KEYWORD2>NEW
      <KEYWORD2>NO
      <KEYWORD2>NOBS
      <KEYWORD2>NOCENTER
      <KEYWORD2>NOCUM
      <KEYWORD2>NODATE
      <KEYWORD2>NODUP
      <KEYWORD2>NODUPKEY
      <KEYWORD2>NOINT
      <KEYWORD2>NONUMBER
      <KEYWORD2>NOPAD
      <KEYWORD2>NOPRINT
      <KEYWORD2>NOROW
      <KEYWORD2>NOT
      <KEYWORD2>NOTITLE
      <KEYWORD2>NOTITLES
      <KEYWORD2>NOXSYNC
      <KEYWORD2>NOXWAIT
      <KEYWORD2>NUMBER
      <KEYWORD2>NWAY
      <KEYWORD2>OBS
      <KEYWORD2>OPTION
      <KEYWORD2>OPTIONS
      <KEYWORD2>OR
      <KEYWORD2>ORDER
      <KEYWORD2>OTHERWISE
      <KEYWORD2>OUT
      <KEYWORD2>OUTPUT
      <KEYWORD2>OVER
      <KEYWORD2>PAD
      <KEYWORD2>PAD2
      <KEYWORD2>PAGESIZE
      <KEYWORD2>PD
      <KEYWORD2>PERCENT
      <KEYWORD2>PIB
      <KEYWORD2>PK
      <KEYWORD2>POINT
      <KEYWORD2>POSITION
      <KEYWORD2>PRINTER
      <KEYWORD2>PRXMATCH
      <KEYWORD2>PRXCHANGE
      <KEYWORD2>PS
      <KEYWORD2>PUT
      <KEYWORD2>R
      <KEYWORD2>RB
      <KEYWORD2>RECFM
      <KEYWORD2>REG
      <KEYWORD2>REGR
      <KEYWORD2>RENAME
      <KEYWORD2>REPLACE
      <KEYWORD2>RETAIN
      <KEYWORD2>RETURN
      <KEYWORD2>REUSE
      <KEYWORD2>REVERSE
      <KEYWORD2>RSQUARE
      <KEYWORD2>RUN
      <KEYWORD2>SASAUTOS
      <KEYWORD2>SCAN
      <KEYWORD2>SELECT
      <KEYWORD2>SELECTION
      <KEYWORD2>SERROR
      <KEYWORD2> SET
      <KEYWORD2>SIMPLE
      <KEYWORD2>SLE
      <KEYWORD2>SLS
      <KEYWORD2>START
      <KEYWORD2>STDIN
      <KEYWORD2>STOP
      <KEYWORD2>STOPOVER
      <KEYWORD2>SUBSTR
      <KEYWORD2>SYMBOL
      <KEYWORD2>SYMBOLGEN
      <KEYWORD2>SYMGET
      <KEYWORD2>SYMPUT
      <KEYWORD2>SYMPUTX
      <KEYWORD2>T
      <KEYWORD2>TABLE
      <KEYWORD2>TABLES
      <KEYWORD2>THEN
      <KEYWORD2 AT_WORD_START="TRUE">TITLE
      <KEYWORD2>TITLE1
      <KEYWORD2>TITLE2
      <KEYWORD2>TITLE3
      <KEYWORD2>TITLE4
      <KEYWORD2>TITLE5
      <KEYWORD2>TO
      <KEYWORD2>TOL
      <KEYWORD2>TRIM
      <KEYWORD2>UNFORMATTED
      <KEYWORD2>UNTIL
      <KEYWORD2>UPDATE
      <KEYWORD2>UPCASE
      <KEYWORD2>VALUE
      <KEYWORD2>VAR
      <KEYWORD2>WHEN
      <KEYWORD2 AT_WORD_START="TRUE">WHERE
      <KEYWORD2>WHILE
      <KEYWORD2>WINDOW
      <KEYWORD2>WORK
      <KEYWORD2>X
      <KEYWORD2>XSYNC
      <KEYWORD2>XWAIT
      <KEYWORD2>YES
      <KEYWORD2>YYMMDD
      <KEYWORD2>GOPTIONS
      <KEYWORD2>AXIS1
      <KEYWORD2>AXIS2
      <KEYWORD2>SYMBOL1
      <KEYWORD2>SET
   </KEYWORDS>

    </RULES>
</MODE>

Other jEdit examples (source code examples)

Here is a short list of links related to this jEdit sas.xml source code file:

... this post is sponsored by my books ...

#1 New Release!

FP Best Seller

 

new blog posts

 

Copyright 1998-2021 Alvin Alexander, alvinalexander.com
All Rights Reserved.

A percentage of advertising revenue from
pages under the /java/jwarehouse URI on this website is
paid back to open source projects.