#if defined(W32)||defined(LNX)

   .SyntaxHighlight.

    Syntax highlight display text with each color and font style according to the language syntax.
    xe's syntax-highlight use the function of andre-simon's Highlight or GNU source-highlight.

      GNU source-highlight (specified by SHCMD= or SHCMDR= in the cfg file)
         Source-highlight(Windows version or Linux version) installation is required.
         (http://www.gnu.org/software/src-highlite/source-highlight.html)
         Boost regex may be also required on which source-highlight depends.
         (http://www.boost.org)
         source-highlight compiled on cygwin is little bit slow,
         Binary compiled on MinGW was upploaded to my HP at 2008/03/21.
         There is no need to install cygwin if you use it.

         My derived version "xeshm" is also offerred for perfomance gain.
         This version is resident sub-process to avoid process initialization load.
         xeshm uses StartApp class of source-highlight version2.9.
         Windows version is compiled on MingW, Linux version is compiled on FC12.
         Latest version of source-highlight is v2.10.
         Original source-highlight can be called from xe as one time process.
         If you use xewhm data-directory hove to be of v2.9.
         In config file, specify not SHCMD option but SHCMDR.
         See mkxeshm.mingw to make xeshm.

      Mr.andre-simon's Highlight (specified by SHCMDA= in the cfg file)
         This one is easy to use.
         Install from Mr.andre-simon's homepage.(commandline "highlight" is included in sample directory of xe package)
         The windows version is installer.
         xe use command-line binary, leave gui version even if its compilation failed.
         This is not depend on boost package, installation is easy.
         It suport many variety of language such as COBOL, PLI.
         To customize color, use CMAP option of xe's cfg file.
         This tool is relatively small and light.
         So, it is open-source but I did not create resident mode version.

         xe Windows version package contins Highligh package in "sample" directory.
         Put data directory at where the exe file existing or specify it
         by --data-dir= parameter.
         Linux version's default folder is /usr/share/highlight.

         On v3.1 "-A" is invalid. xe dropped it from internal setting.
         You have to specify it on CMDA parameter of cfg file
             ::xesynw.cfg(Windows), ::xesynl.cfg(Linux), ::xesyna.cfg(Android)
           OldVersion: SHCMDA= "d:\gnuwin32\WinHighlight\highlight.exe -q -A"
           NewVersion: SHCMDA= "d:\gnuwin32\WinHighlight\highlight.exe -q --out-format=ansi"
         For Android version(2.16), data folder is as followings.
           SHCMDA= "highlight -q --data-dir=/data/data/com.xe.Axe/files/highlight-data --add-config-dir=/data/data/com.xe.Axe/files/highlight-data --out-format=ansi "

    xe accept outlang:esc format output from highlighter through stdout pipe.
    (xe fail to display color if original source contains esc code)

    (ANSI Esc sequence style code is NORMAL:0, BOLD:1, UNDERLINE:4, BLINK:5, REVERSE:7, INVISIBLE:8. About color code see later.)
    (xeacb is also used as utility to browse file contains ANSI Esc sequence code.)
    (Note.) Some anti-wirus-soft watches external process i/o
            and that may be cause of syntax highlight's slow response.

    When lines are updated,syntax re-evaluation is not done immediately. Re-evaluation is done by Ctrl+s key as default.
    You can set ENTER key as trigger of re-evaluation by the cost of response delay.
    For best response.
      1.No trigger setting of ENTER key.
      2.Using Ctrl+s, do re-evaluation to the updated lines only when required.
      3.Using "SYN ALL" cmd, do re-evaluation to all lines when multiline evaluation rewuired.
    Next will be reasonable if you allow those response delay.
      1.Trigger setting of ENTER key as Update line only.
      2.Using Ctrl+s, do re-evaluation for all lines when required.
    Related cfg options.
      0. Set SyntaxHighlight:ON at file open using OPEN=/OPEN_EXT=.
      1. Set ENTER key trigger using ENTER=.
      2. Set UPDONLY_EXT= to limit or not re-evaluation to updated lines only.

    (a)Command.

       SYN [ ? | ALL | RESET | ENTER | ENTERA | ON [lang-type] | OFF]
            ?                 : Display help and brief current status.
            ALL               : Re-evaluation is done regardless update after previous evaluation and UPDONLY_EXT setting in .cfg file.
            RESET             : Use to re-read config file.
            ENTER             : Set ENTER key as trigger of re-evaluation for current file on the screen.
                                To keep good response,re-evaluation is done only for the updated lines
                                without consideration of multiline syntax.
                                To evaluate multiline syntax,execute "SYN ON"(Ctrl+s) cmd.
            ENTERA            : Set ENTER key as trigger of re-evaluation for current file on the screen.
                                Re-evaluation is done for all lines with consideration of multiline syntax
                                cost of slow response.
            ON [lang-type]    : Do re-evaluation for all lines of the file except the case
                                the extension is defined on UPDONLY_EXT of cfg file.
                                lang-type is used to change lang type of the file.
            OFF               : Stop syntax highlight for the file.

       "SYN ON" is done if operand missing or function key Ctrl+s is used as default assignment.

    (b)Config file.

       Put cfg file on work-dir(c:\xe_wd or /home/userID/xe_wdnnnn, nnnn:userIDnumber as default).
       (cfg file name is xesynw.cfg(Windows version) or xesynl.cfg(Linux version)) or xesyna.cfg(Android version)
       See later, (d) for source-highlight configuration,
       (e) for andre-simon's Highlighter configuration, (f) ANSI Esc sequence code.

       About option on cfg file,see next (c) "sample cfg file".

    (c)sample cfg file.

    ######################################################################################
    # xesynw.cfg
    # ==syntax highlight configuration==
    #
    #   if err detected, correct, save then use "SYN RESET" cmd to re-load config file.
    #
    ### execution 
    #
    #  select highight command from SHCMD or SHCMDR or SHCMDA
    #     SHCMDA is recomended(installation required,"sample" dir contains required files(highlight-3.7)
    #
    #     SHCMD=       :Specify source-highlight command
    #                   default "source-highlight -f esc". "-f esc" (outlang:esc) is always appended.
    #                   If use .bat file on Windows, use "@" to avoid that cmd echo is written to stdout.
    #     SHCMDR=      :Specify xeshm command
    #                   xeshm is my derivative from source-highlight v2.9.
    #                   To avoid process initialization load, xeshm is resident process.
    #     SHCMDA=      :Specify andre-simon's Highlight command
    #                    Specify as following if space is embedded in the path.
    #                    SHCMDA= '""c:\Program Files\WinHighlight\highlight.exe"" -q --out-format=ansi'
    ##    ACBCMD=      :Specify path of xeacb(.exe).-->Discarded.
    #     ENTER =      :Specify file line count threshold to use Enter key as trigger of SyntaxHighlight re-evaluation.
    #                   If the file line count is under this value at open,
    #                   Enter key is treated as trigger of re-evaluation of updated lines..
    #                   You can change triger ON/OFF status by SYN cmd later.
    #                   0 :Do not use as trigger. Use Ctrl+s to evaluate syntax.
    #                   -1:No line count limit.(Default)
    ### file type 
    #     OPEN  =      :SyntaxHighlight mode at opening file.
    #                   "Y":SyntaxHighlight mode if the extention is listed by OPEN_EXT
    #                   "N":always No SyntaxHighlight mode at open
    #                   "A":always SyntaxHighlight mode at open
    #     OPEN_EXT=    :Specify file extention list for the case of OPEN=y.
    #                   ex) OPEN_EXT=c cpp h hpp
    #     UPDONLY_EXT= :Specify file extention list to limit evaluation by "SYN ON"(Ctrl+s) cmd to updated lines only.
    #                   If the language has no multiline syntax such as /* */ comment in c-like language,
    #                   You get better response by limiting syntax evaluation to updated lines only.
    #                   If you set ENTER key as trigger of re-evaluation,there is no need to use "SYN ON" cmd
    #                   because updated lines evaluation is done by ENTER key.
    #                   If you not want to set ENTER key trigger,and evaluate by "SYN ON"(Ctrl+S) cmd each time
    #                   even the language has multiline syntax, register extension in this list.
    #                   For all lines re-evaluation,"SYN ALL" cmd is used in this case.
    #                   ex) UPDONLY_EXT=cob
    #     PATH_EXT_xxx=:For the file with missing or improper extension name,specify extention name.
    #                   xxx:max 7 byte extension name. Specify 1 pathname/line.
    #                   All files in the directory is assumed as xxx is its extension name.
    #                   ex) PATH_cob=d:\src\cobs
    #                       PATH_syslog=d:\logs\windows\actlog
    ### color
    #     BG=          :BackGround color palette number.
    #                   You can check the palette color on =0.0 panel.
    #                   Valid value is "0" to "15"(Windows) or "1 to "7"(Linux).
    #     BG_BROWSE    :BackGround color palette number for browse panel
    #                   Default is same as BG
    #     FG=          :ForeGround color palette number
    #                   Valid value is "0" to "15"
    #     BG_EOL=      :Background color for the right of EndOfLine.
    #                   Default is same as BG(Edit) or BG_BROWSE(Browse)
    #     BG_TAB=      :Background color for TAB/UnPrintable Character.
    #                   Default is same as BG(Edit) or BG_BROWSE(Browse)
    #     BG_UPD=      :Background color for updated and not yet re-evaluated line.
    #                   Default:0(black)
    #     BG_REVERSE_EDIT=  :Background color for reverse on edit panel(Find cmd,Cut&Paste)
    #                        Default:14(yellow) except linux console version(6:brown)
    #     BG_REVERSE_BROWSE=:Background color for reverse on browse panel(Find cmd,Cut&Paste)
    #                        Default:15(white) except Linux console version(6:brown)
    #     CMAP  =      :Color palette re-mapping. Remap ANSI color number to xe's palette.
    #                   Specify from color palette number from 0 to max 15 each.
    #                   Use this option when using andre-simon's Highlight because it is not customizable.
    #                   ex) CMAP=__.04.10.__.01   # swap Red and Blue and use Intense Green("__" means no change.)
    #     RGBn  =      :RGB value for each palette (wxe and gxe only)
    #                   n:0-->15 (correspond to palette number of xe 0.0 panel)
    #                   ex) rgb2=20e030   # palette No2(green)'rgb value is R:0x20, G:0xe0, B:0x30.
    ### font style
    #     ITALIC_ESC = :ANSI esc code for italic.
    #                   Notify value specified on esc.lang file of source-highlight as ANSI font style code:italic. 
    #                   Valid value is one digit except reserved "1":bold, "4":underline.
    #                   Default is "5":blink. (If you use this default,specify it on esc.outlang).
    #     C_BOLD     = :treatment of font style:1(BOLD) for console version xe
    #                   "H":HighIntensity, "N":Ignore.  Default is "H".
    #     C_UNDERLINE= :treatment of font style:4(UNDERLINE) for console version xe. Not supported for Linux version.
    #                   "H":HighIntensity, "N":Ignore.  Default is "N".
    #     C_ITALIC   = :treatment of font style:5(or value of ITALIC_ESC parameter if used) for console version xe
    #                   "H":HighIntensity, "N":Ignore.  Default is "N".
    #     G_BOLD     = :treatment of font style:1(BOLD) for GUI version xe(wxe,gxe)
    #                   "H":HighIntensity, "Y":Bold, "N":Ignore. Default is "YH".
    #     G_UNDERLINE= :treatment of font style:4(UNDERLINE) for GUI version xe(wxe). Not supported for gxe.
    #                   "H":HighIntensity, "Y":Underline, "N":Ignore. Default is "Y".
    #     G_ITALIC   = :treatment of font style:5(or value of ITALIC_ESC parameter if used) for GUI version xe(wxe,gxe)
    #                   "H":HighIntensity, "Y":Italic, "N". Default is "Y".
    ### sample ###########################
    #
    #     SHCMD = "g:\src\syntaxh\GnuWin32\bin\source-highlight --data-dir=g:\src\syntaxh\GnuWin32\share\source-highlight"
    ###   SHCMD = "/usr/local/bin/source-highlight --data-dir=/use/local/share/source-highlight"
    #     OPEN  = y              # display color at file open.
    #     ENTER = -1             # Enter key is trigger of re-evaluation
    #     BG    = 7              # Black on White
    #     BG_TAB= 7              # Draw TAB/Unprintable by BG color.
    #     CMAP  =__.04.10.__.01  # swap Red and Blue and Intense Green("__" means no change.)
    #     G_ITALIC=N             # ignore italic style
    #
    #####################################################################
    #SHCMD = "g:\src\syntaxh\GnuWin32\bin\source-highlight --data-dir=g:\src\syntaxh\GnuWin32\share\source-highlight --style-file=esc.style"   #see source highlight document
    #SHCMDR= "m:\vcobjmingw\xeshm.exe  --data-dir=g:\src\syntaxh\GnuWin32\share\source-highlight --style-file=esc.style"
    #SHCMDA= "d:\gnuwin32\WinHighlight\highlight.exe -q"
     SHCMDA= '""c:\Program Files\WinHighlight\highlight.exe"" -q --out-format=ansi'
    #SHCMDA= '/h/objlinux/up/sample/highlight-3.7/highlight -q --out-format=ansi -D /h/objlinux/up/sample/highlight-3.7 --add-config=/h/objlinux/up/sample/highlight-3.7'
    #ENTER =0
     BG    = 7
     FG    = 0
     BG_EOL= 6
     BG_TAB= 10
    #BG_UPD= 7
    #BG_REVERSE_EDIT=14;
    #BG_REVERSE_BROWSE=1
    #CMAP  =__.04.10.__.01.__.14  # swap Red and Blue and Intense Green("__" means no change.)
    #RGB1 = 20e030
    #RGB14= f01080
    #ITALIC_ESC= 0
    #C_BOLD=h
    #C_ITALIC=n
    #C_UNDERLINE=n
    #G_BOLD=y 
    #G_ITALIC=hy
     G_UNDERLINE=h
     OPEN  = y
     OPEN_EXT= c cpp java
    #######
    PATH_EXT_cob=g:\src\xe\cobs
    #####################################################################

    (d)source-highlight configuration.

       See source-highlight previously shown about detail information.
       This section is brief description related to xe.
       (source-highlight v2.8 has no configuration gfor COBOL.
        cobol.lang later shown is for myself, copy it into data-dir when you use it.)

       .lang.map

        Each lines are extention = lang-file format to map extention to inputfile language syntax file.
        following lines are for the c-like language.
        ###
            cpp = cpp.lang
            c = cpp.lang
            C = cpp.lang
            cc = cpp.lang
            h = cpp.lang
            hh = cpp.lang
            H = cpp.lang
            hpp = cpp.lang

        To utilize COBOL,on assumption its extension is cob,insert following line into lang.map file.
        (cobol.lang is described later.)
            cob  = cobol.lang 

       .cpp.lang
         
        c-like language syntax(how to determine keyword,comment etc.) is coded by source-syntax and 
        regular-expression syntax.

        ###
            include "c_comment.lang"

            state preproc start '^[[:blank:]]*#(?:[[:blank:]]*include)' begin
                    string delim "<" ">" 
                    string delim "\"" "\"" escape "\\"
                    include "c_comment.lang"
            end

            preproc = '^[[:blank:]]*#([[:blank:]]*[[:word:]]*)'

            include "number.lang"

            string delim "\"" "\"" escape "\\"
            string delim "'" "'"  escape "\\"

            keyword = "__asm|__cdecl|__declspec|__export|__far16|__fastcall|__fortran|__import",
                  "__pascal|__rtti|__stdcall|_asm|_cdecl|__except|_export|_far16|_fastcall",
                  "__finally|_fortran|_import|_pascal|_stdcall|__thread|__try|asm|auto",
                  "break|case|catch|cdecl|class|const|const_cast|continue|default|delete",
                  "do|dynamic_cast|else|enum|explicit|extern|false|for|friend|goto",
                  "if|inline|mutable|namespace|new|operator|pascal|private|protected",
                  "public|register|reinterpret_cast|return|sizeof|static|static_cast",
                  "struct|switch|template|this|throw|true|try|typedef|typeid|typename|union",
                  "using|virtual|volatile|while"

            type = "bool|char|double|float|int|long|short|signed|unsigned|void|wchar_t"

            include "symbols.lang"

            cbracket = "{|}"

            include "function.lang"

       .default.style
         
         How(color and font style) to display the comment,keyword etc. is coded in this file.
         You can select the other file by specifying --style-file= parameter on SHCMD of xe config file.

        ###
            keyword blue b ;    // for language keywords
            type darkgreen ;    // for basic types
            string red f ;      // for strings and chars
            comment brown i ;   // for comments
            number purple ;     // for literal numbers
            preproc darkblue b ;    // for preproc directives (e.g. #include, import)
            symbol darkred ;    // for simbols (e.g. <, >, +)
            function black b;   // for function calls and declarations
            cbracket red;       // for block brackets (e.g. {, })

       .esc.outlang

         Default outlang of source-highlight is html,
         xe use esc.outlang by specifying "-f esc" parameter.
         This file describe ESC code corresponding font style and color.
         To use italic,you have to change the following line of default esc.outlang file.
            italics "$style"
         is modified to
            italics "5$style"
         "5" is xe's default,that may any value except 0(Normal),1(Bold),4(Underline)
         if you specify it on ITALIC_ESC= line of xe config file.

         See later (f) for ANSI definition for color esc code.

        ###
            extension "txt"

            styletemplate "\x1b[$stylem$text\x1b[m"
            styleseparator ";"

            bold "01$style"
            underline "04$style"
            italics "$style"
            color "$style"


            colormap
            "green" "32"
            "red" "31"
            "darkred" "31"
            "blue" "34"
            "brown" "33"
            "pink" "35"
            "yellow" "33"
            "cyan" "36"
            "purple" "35"
            "orange" "31"
            "brightorange" "31"
            "brightgreen" "32"
            "darkgreen" "32"
            "black" "30"
            "teal" "37"
            "gray" "37"
            "darkblue" "34"
            default "30;"
            end

            # Decorate text with terminal control sequences (escape sequences).
            # To set the attribute/fg_color/bg_color we need to print
            #   "\033[AA;FF;BBm"
            # where AA is one of these:
            # 00=none 01=bold 04=underscore 05=blink 07=reverse 08=concealed,
            # FF is one of these:
            # 30=black 31=red 32=green 33=yellow 34=blue 35=magenta 36=cyan 37=white
            # BB is one of these:
            # 40=black 41=red 42=green 43=yellow 44=blue 45=magenta 46=cyan 47=white
            #
            # Any of AA,FF,BB may be omited.
            #
            # To reset do default color/attribute we need to print
            # "\033[m"

       .cobol.outlang

         keyword list is selceted from vim configuration.
         To leave Col.1-6 not as comment, delete following line.
            comment='^.{6}'                                #col.1-6:comment 
         I don't know how to commentize Col.73-80.

        ###

            ######################################
            # for COBOL
            ######################################
            #delm
            # minus"-" may be part of variable
            #
            #symbol = "~","!","%","^","*","(",")","-","+","=","[",
            symbol = "~","!","%","^","*","(",")","+","=","[",
                    "]","\\",":",";",",",".","/","?","&","<",">","\|"
            symbol = '[[:blank:]]+-[[:blank:]]+'

            ######################################
            #data type to PICTURE
            ######################################
            type="BINARY|PACKED-DECIMAL"
            type='(COMP|COMPUTATIONAL)-[123456XN]'
            type='(PIC|PICTURE)[[:blank:]]+X(\([[:digit:]]+\)|X*)'
            type='(PIC|PICTURE)[[:blank:]]+[S]?(9\([[:digit:]]+\)|9+)[V]?(9\([[:digit:]]+\)|9+)?'
            type='(PIC|PICTURE)[[:blank:]]+[+-]?([Z9]\([[:digit:]]+\)|[Z9]+)([\.,]?([Z9]\([[:digit:]]+\)|[Z9]+)?)*(E[+-]?9+)?'
            ######################################
            # keyword from VIM  2008/02/26
            ######################################
            keyword="DIVISION"
            keyword="IDENTIFICATION|ENVIRONMENT|DATA|PROCEDURE"
            keyword="PROGRAM-ID|SOURCE-COMPUTER|OBJECT-COMPUTER|SPECIAL-NAMES|FILE-CONTROL|I-O-CONTROL"
            keyword="CONFIGURATION|INPUT-OUTPUT|FILE|WORKING-STORAGE|LOCAL-STORAGE|LINKAGE"
            keyword="FUNCTION-POINTER|PROCEDURE-POINTER"
            keyword = "ACCEPT|ACCESS|ADD|ADDRESS|ADVANCING|AFTER|ALPHABET|ALPHABETIC",
                "ALPHABETIC-LOWER|ALPHABETIC-UPPER|ALPHANUMERIC|ALPHANUMERIC-EDITED|ALS",
                "ALTERNATE|AND|ANY|ARE|AREA|AREAS|ASCENDING|ASSIGN|AT|AUTHOR|BEFORE|BINARY",
                "BLANK|BLOCK|BOTTOM|BY|CANCEL|CBLL|CD|CF|CH|CHARACTER|CHARACTERS|CLASS",
                "CLOCK-UNITS|CLOSE|COBOL|CODE|CODE-SET|COLLATING|COLUMN|COMMA|COMMON",
                "COMMUNICATIONS|COMPUTATIONAL|COMPUTE|CONTENT|CONTINUE",
                "CONTROL|CONVERTING|CORR|CORRESPONDING|COUNT|CURRENCY|DATE|DATE-COMPILED",
                "DATE-WRITTEN|DAY|DAY-OF-WEEK|DE|DEBUG-CONTENTS|DEBUG-ITEM|DEBUG-LINE",
                "DEBUG-NAME|DEBUG-SUB-1|DEBUG-SUB-2|DEBUG-SUB-3|DEBUGGING|DECIMAL-POINT",
                "DELARATIVES|DELETE|DELIMITED|DELIMITER|DEPENDING|DESCENDING|DESTINATION",
                "DETAIL|DISABLE|DISPLAY|DIVIDE|DIVISION|DOWN|DUPLICATES|DYNAMIC|EGI|ELSE|EMI",
                "ENABLE|END-ADD|END-COMPUTE|END-DELETE|END-DIVIDE|END-EVALUATE|END-IF",
                "END-MULTIPLY|END-OF-PAGE|END-READ|END-RECEIVE|END-RETURN",
                "END-REWRITE|END-SEARCH|END-START|END-STRING|END-SUBTRACT|END-UNSTRING",
                "END-WRITE|EQUAL|ERROR|ESI|EVALUATE|EVERY|EXCEPTION|EXIT",
                "EXTEND|EXTERNAL|FALSE|FD|FILLER|FINAL|FIRST|FOOTING|FOR|FROM",
                "GENERATE|GIVING|GLOBAL|GREATER|GROUP|HEADING|HIGH-VALUE|HIGH-VALUES|I-O",
                "IN|INDEX|INDEXED|INDICATE|INITIAL|INITIALIZE",
                "INITIATE|INPUT|INSPECT|INSTALLATION|INTO|IS|JUST",
                "JUSTIFIED|KEY|LABEL|LAST|LEADING|LEFT|LENGTH|LOCK|MEMORY",
                "MERGE|MESSAGE|MODE|MODULES|MOVE|MULTIPLE|MULTIPLY|NATIVE|NEGATIVE|NEXT|NO|NOT",
                "NUMBER|NUMERIC|NUMERIC-EDITED|OCCURS|OF|OFF|OMITTED|ON|OPEN",
                "OPTIONAL|OR|ORDER|ORGANIZATION|OTHER|OUTPUT|OVERFLOW|PACKED-DECIMAL|PADDING",
                "PAGE|PAGE-COUNTER|PERFORM|PF|PH|PIC|PICTURE|PLUS|POINTER|POSITION|POSITIVE",
                "PRINTING|PROCEDURES|PROCEDD|PROGRAM|PURGE|QUEUE|QUOTES",
                "RANDOM|RD|READ|RECEIVE|RECORD|RECORDS|REDEFINES|REEL|REFERENCE|REFERENCES",
                "RELATIVE|RELEASE|REMAINDER|REMOVAL|REPLACE|REPLACING|REPORT|REPORTING",
                "REPORTS|RERUN|RESERVE|RESET|RETURN|RETURNING|REVERSED|REWIND|REWRITE|RF|RH",
                "RIGHT|ROUNDED|RUN|SAME|SD|SEARCH|SECTION|SECURITY|SEGMENT|SEGMENT-LIMITED",
                "SELECT|SEND|SENTENCE|SEPARATE|SEQUENCE|SEQUENTIAL|SET|SIGN|SIZE|SORT",
                "SORT-MERGE|SOURCE|STANDARD",
                "STANDARD-1|STANDARD-2|START|STATUS|STOP|STRING|SUB-QUEUE-1|SUB-QUEUE-2",
                "SUB-QUEUE-3|SUBTRACT|SUM|SUPPRESS|SYMBOLIC|SYNC|SYNCHRONIZED|TABLE|TALLYING",
                "TAPE|TERMINAL|TERMINATE|TEST|TEXT|THAN|THEN|THROUGH|THRU|TIME|TIMES|TO|TOP",
                "TRAILING|TRUE|TYPE|UNIT|UNSTRING|UNTIL|UP|UPON|USAGE|USE|USING|VALUE|VALUES",
                "VARYING|WHEN|WITH|WORDS|WRITE"
            keyword="CONTAINS"
            keyword="IF|INVALID|END|EOP"
            keyword="ALL"
            keyword="SPACE|SPACES|NULL|ZERO|ZEROES|ZEROS|LOW-VALUE|LOW-VALUES"
            keyword="GO|GOTO"
            keyword="COPY"
            keyword="ALTER|ENTER|RENAMES"
            keyword="OCCURS|DEPENDING|VARYING|BINARY|COMP|REDEFINES"
            keyword="REPLACING|RUN"
            keyword="EXEC|END-EXEC"
            keyword="CALL|END-CALL|CANCEL|GOBACK|PERFORM|END-PERFORM|INVOKE"
            #keyword='(?=.*[[:lower:]])(?=.*[[:upper:]])(?=.*[[:punct:]]).+'
            #keyword='(?=.*[[:lower:]])A.*'
            #keyword='(?(?=.{80}).{8}$)'        //cond not support 
            #keyword='(?(?=xx)AAB|AAC)'     //cond not support 

            ######################################
            #comment:no consideration of COL.1-6,73-
            ######################################
            #comment start '^.{72}(?=.+)'
            comment start '^.{6}[*/C]'                     #*,/,C on col.7
            comment='^.{6}'                                #col.1-6:comment 
            #state comment start '^.{72}'    begin
            #   comment='.{8}'
            #end
            #environment comment start '^.' begin
            #   comment = '^.{6}' exitall
            #end
            #comment start `(?(?=^.{72}).{8}$)`
            #comment start '(^[[:blank:]]{72}).{8}$'
            ######################################
            #string:no consideration of COL.1-6,73-
            ######################################
            #string delim "\"" "\"" escape "\"\""
            #string delim "'"  "'"  escape "''"
            string delim '[X]?\"'  '(\"|.$)' 
            string delim '[X]?\''  '(\'|.$)' 
            ######################################
            # numbers
            ######################################
            number = '\<[+-]?(([[:digit:]]*\.)?[[:digit:]]+([eE][+-]?[[:digit:]]+)?)\>'

            ######################################
            #include "function.lang"
            # no function definition
            ######################################
    (e) andre-simon's Highlight configuration.

       .tested using v2.7.
       .configuration folder is registered at installation.
       .see his homepage about customization.
        ANSI output style is hard-coded in ansigenerator.cpp as following.
        (see next (f) about meaning of "31","34",...)
        To customize color mapping,use CMAP option of xe's cfg file.
        Bold,Italic... style may not be avalable.(1st parameter:"00")

          styleTagOpen.push_back(getOpenTag("00", "31")); //str
          styleTagOpen.push_back(getOpenTag("00", "34"));//number
          styleTagOpen.push_back(getOpenTag("00", "34"));//sl comment
          styleTagOpen.push_back(getOpenTag("00", "34"));//ml comment
          styleTagOpen.push_back(getOpenTag("00", "35"));//escapeChar
          styleTagOpen.push_back(getOpenTag("00", "35"));//directive
          styleTagOpen.push_back(getOpenTag("00", "31"));//directive string
          styleTagOpen.push_back(getOpenTag("00", "30"));//linenum
          styleTagOpen.push_back(getOpenTag("00", "00"));//symbol

          getMatchingOpenTag(unsigned int styleID)
            return (styleID)?getOpenTag("00", "32", ""):getOpenTag("00", "33");
          ("32" or "33" by $KW_LIST class of .lang file in langDef dir)

    (f) ANSI definition.

       Note. Red and Blue bit is exchanged on Windows.

           style
             NORMAL     '0'
             BOLD       '1'
             UNDERLINE  '4'
             BLINK      '5'
             REVERSE    '7'
             INVISIBLE  '8'
           foreground colors
             30 black
             31 red
             32 green
             33 yellow
             34 blue
             35 magenta
             36 cyan
             37 white
           background colors
             40 black
             41 red
             42 green
             43 yellow
             44 blue
             45 magenta
             46 cyan
             47 white

#endif   //W32 || LNX