GeSHi


geshi/mysql.php

mysql.php --------- Author: Marjolein Katsma (marjolein.is.back@gmail.com) Copyright: (c) 2008 Marjolein Katsma (http://blog.marjoleinkatsma.com/) Release Version: 1.0.8.3 Date Started: 2008-12-12

MySQL language file for GeSHi.

Based on original MySQL language file by Carl Fürstenberg (2004); brought up-to-date for current MySQL versions, and with more classes for different types of keywords; several minor errors were corrected as well.

Some "classes" have two groups here: this is to allow for the fact that some keywords in MySQL have a double function: many of those are either a function (must be immediately followed by an opening bracket) or some other keyword: so they can be distinguished by the presence (or not) of that opening bracket. (An immediately following opening bracket is a default rule for functions in MySQL, though this may be overridden; because it's only a default, we use a regex lookahead only where necessary to distinguish homonyms, not generally to match any function.) Other keywords with double usage cannot be distinguished and are classified in the "Mix" category.

This file is part of GeSHi.

GeSHi is free software; you can redistribute 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.

GeSHi 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 GeSHi; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA


<?php
/*************************************************************************************
 * mysql.php
 * ---------
 * Author: Marjolein Katsma (marjolein.is.back@gmail.com)
 * Copyright: (c) 2008 Marjolein Katsma (http://blog.marjoleinkatsma.com/)
 * Release Version: 1.0.8.3
 * Date Started: 2008-12-12
 *
 * MySQL language file for GeSHi.
 *
 * Based on original MySQL language file by Carl Fürstenberg (2004); brought
 * up-to-date for current MySQL versions, and with more classes for different
 * types of keywords; several minor errors were corrected as well.
 *
 * Some "classes" have two groups here: this is to allow for the fact that some
 * keywords in MySQL have a double function: many of those are either a function
 * (must be immediately followed by an opening bracket) or some other keyword:
 * so they can be distinguished by the presence (or not) of that opening bracket.
 * (An immediately following opening bracket is a default rule for functions in
 * MySQL, though this may be overridden; because it's only a default, we use a
 * regex lookahead only where necessary to distinguish homonyms, not generally
 * to match any function.)
 * Other keywords with double usage cannot be distinguished and are classified
 * in the "Mix" category.
 *
 *************************************************************************************
 *
 * This file is part of GeSHi.
 *
 * GeSHi is free software; you can redistribute 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.
 *
 * GeSHi 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 GeSHi; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
 *
 ************************************************************************************/
 
$language_data = array (
    'LANG_NAME' => 'MySQL',
    //'COMMENT_SINGLE' => array(1 =>'--', 2 => '#'),    // '--' MUST be folowed by whitespace,not necessarily a space
    'COMMENT_SINGLE' => array(
        1 =>'-- ',
        2 => '#'
        ),
    'COMMENT_REGEXP' => array(
        1 => "/(?:--\s).*?$/",                          // double dash followed by any whitespace
        ),
    'COMMENT_MULTI' => array('/*' => '*/'),
    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,            // @@@ would be nice if this could be defined per group!
    'QUOTEMARKS' => array("'", '"', '`'),
    'ESCAPE_CHAR' => '\\',                              // by default only, can be specified
    'ESCAPE_REGEXP' => array(
        1 => "/[_%]/",                                  // search wildcards
        ),
    'NUMBERS' =>
        GESHI_NUMBER_INT_BASIC |
        GESHI_NUMBER_OCT_PREFIX |
        GESHI_NUMBER_HEX_PREFIX |
        GESHI_NUMBER_FLT_NONSCI |
        GESHI_NUMBER_FLT_SCI_SHORT |
        GESHI_NUMBER_FLT_SCI_ZERO,
    'KEYWORDS' => array(
        1 => array(
            // Mix: statement keywords and keywords that don't fit in any other
            // category, or have multiple usage/meanings
            'ACTION','ADD','AFTER','ALGORITHM','ALL','ALTER','ANALYZE','ANY',
            'ASC','AS','BDB','BEGIN','BERKELEYDB','BINARY','BTREE','CALL',
            'CASCADED','CASCADE','CHAIN','CHECK','COLUMNS','COLUMN','COMMENT',
            'COMMIT','COMMITTED','CONSTRAINT','CONTAINS SQL','CONSISTENT',
            'CONVERT','CREATE','CROSS','DATA','DATABASES',
            'DECLARE','DEFINER','DELAYED','DELETE','DESCRIBE','DESC',
            'DETERMINISTIC','DISABLE','DISCARD','DISTINCTROW','DISTINCT','DO',
            'DROP','DUMPFILE','DUPLICATE KEY','ENABLE','ENCLOSED BY','ENGINE',
            'ERRORS','ESCAPED BY','EXISTS','EXPLAIN','EXTENDED','FIELDS',
            'FIRST','FOR EACH ROW','FORCE','FOREIGN KEY','FROM','FULL',
            'FUNCTION','GLOBAL','GRANT','GROUP BY','HANDLER','HASH','HAVING',
            'HELP','HIGH_PRIORITY','IF NOT EXISTS','IGNORE','IMPORT','INDEX',
            'INFILE','INNER','INNODB','INOUT','INTO','INVOKER',
            'ISOLATION LEVEL','JOIN','KEYS','KEY','KILL','LANGUAGE SQL','LAST',
            'LIMIT','LINES','LOAD','LOCAL','LOCK','LOW_PRIORITY',
            'MASTER_SERVER_ID','MATCH','MERGE','MIDDLEINT','MODIFIES SQL DATA',
            'MODIFY','MRG_MYISAM','NATURAL','NEXT','NO SQL','NO','ON',
            'OPTIMIZE','OPTIONALLY','OPTION','ORDER BY','OUTER','OUTFILE','OUT',
            'PARTIAL','PREV','PRIMARY KEY','PRIVILEGES','PROCEDURE','PURGE',
            'QUICK','READS SQL DATA','READ','REFERENCES','RELEASE','RENAME',
            'REPEATABLE','REQUIRE','RESTRICT','RETURNS','REVOKE',
            'ROLLBACK','ROUTINE','RTREE','SAVEPOINT','SELECT',
            'SERIALIZABLE','SESSION','SET','SHARE MODE','SHOW','SIMPLE',
            'SNAPSHOT','SOME','SONAME','SQL SECURITY','SQL_BIG_RESULT',
            'SQL_BUFFER_RESULT','SQL_CACHE','SQL_CALC_FOUND_ROWS',
            'SQL_NO_CACHE','SQL_SMALL_RESULT','SSL','START','STARTING BY',
            'STATUS','STRAIGHT_JOIN','STRIPED','TABLESPACE','TABLES','TABLE',
            'TEMPORARY','TEMPTABLE','TERMINATED BY','TO','TRANSACTIONS',
            'TRANSACTION','TRIGGER','TYPES','TYPE','UNCOMMITTED','UNDEFINED',
            'UNION','UNLOCK_TABLES','UPDATE','USAGE','USE','USER_RESOURCES',
            'USING','VALUES','VALUE','VIEW','WARNINGS','WHERE','WITH ROLLUP',
            'WITH','WORK','WRITE',
            ),
        2 => array(     //No ( must follow
            // Mix: statement keywords distinguished from functions by the same name
            "CURRENT_USER", "DATABASE", "IN", "INSERT", "DEFAULT", "REPLACE", "SCHEMA", "TRUNCATE"
            ),
        3 => array(
            // Values (Constants)
            'FALSE','NULL','TRUE',
            ),
        4 => array(
            // Column Data Types
            'BIGINT','BIT','BLOB','BOOLEAN','BOOL','CHARACTER VARYING',
            'CHAR VARYING','DATETIME','DECIMAL','DEC','DOUBLE PRECISION',
            'DOUBLE','ENUM','FIXED','FLOAT','GEOMETRYCOLLECTION','GEOMETRY',
            'INTEGER','INT','LINESTRING','LONGBLOB','LONGTEXT','MEDIUMBLOB',
            'MEDIUMINT','MEDIUMTEXT','MULTIPOINT','MULTILINESTRING',
            'MULTIPOLYGON','NATIONAL CHARACTER','NATIONAL CHARACTER VARYING',
            'NATIONAL CHAR VARYING','NATIONAL VARCHAR','NCHAR VARCHAR','NCHAR',
            'NUMERIC','POINT','POLYGON','REAL','SERIAL',
            'SMALLINT','TEXT','TIMESTAMP','TINYBLOB','TINYINT',
            'TINYTEXT','VARBINARY','VARCHARACTER','VARCHAR',
            ),
        5 => array(     //No ( must follow
            // Column data types distinguished from functions by the same name
            "CHAR", "DATE", "TIME"
            ),
        6 => array(
            // Table, Column & Index Attributes
            'AUTO_INCREMENT','AVG_ROW_LENGTH','BOTH','CHECKSUM','CONNECTION',
            'DATA DIRECTORY','DEFAULT NULL','DELAY_KEY_WRITE','FULLTEXT',
            'INDEX DIRECTORY','INSERT_METHOD','LEADING','MAX_ROWS','MIN_ROWS',
            'NOT NULL','PACK_KEYS','ROW_FORMAT','SERIAL DEFAULT VALUE','SIGNED',
            'SPATIAL','TRAILING','UNIQUE','UNSIGNED','ZEROFILL'
            ),
        7 => array(     //No ( must follow
            // Column attribute distinguished from function by the same name
            "CHARSET"
            ),
        8 => array(
            // Date and Time Unit Specifiers
            'DAY_HOUR','DAY_MICROSECOND','DAY_MINUTE','DAY_SECOND',
            'HOUR_MICROSECOND','HOUR_MINUTE','HOUR_SECOND',
            'MINUTE_MICROSECOND','MINUTE_SECOND',
            'SECOND_MICROSECOND','YEAR_MONTH'
            ),
        9 => array(     //No ( must follow
            // Date-time unit specifiers distinguished from functions by the same name
            "DAY", "HOUR", "MICROSECOND", "MINUTE", "MONTH", "QUARTER", "SECOND", "WEEK", "YEAR"
            ),
        10 => array(
            // Operators (see also Symbols)
            'AND','BETWEEN','CHARACTER SET','COLLATE','DIV','IS NOT NULL',
            'IS NOT','IS NULL','IS','LIKE','NOT','OFFSET','OR','REGEXP','RLIKE',
            'SOUNDS LIKE','XOR'
            ),
        11 => array(     //No ( must follow
            // Operator distinghuished from function by the same name
            "INTERVAL"
            ),
        12 => array(
            // Control Flow (functions)
            'CASE','ELSE','END','IFNULL','IF','NULLIF','THEN','WHEN',
            ),
        13 => array(
            // String Functions
            'ASCII','BIN','BIT_LENGTH','CHAR_LENGTH','CHARACTER_LENGTH',
            'CONCAT_WS','CONCAT','ELT','EXPORT_SET','FIELD',
            'FIND_IN_SET','FORMAT','HEX','INSTR','LCASE','LEFT','LENGTH',
            'LOAD_FILE','LOCATE','LOWER','LPAD','LTRIM','MAKE_SET','MID',
            'OCTET_LENGTH','ORD','POSITION','QUOTE','REPEAT','REVERSE',
            'RIGHT','RPAD','RTRIM','SOUNDEX','SPACE','STRCMP','SUBSTRING_INDEX',
            'SUBSTRING','TRIM','UCASE','UNHEX','UPPER',
            ),
        14 => array(     //A ( must follow
            // String functions distinguished from other keywords by the same name
            "INSERT", "REPLACE", "CHAR"
            ),
        15 => array(
            // Numeric Functions
            'ABS','ACOS','ASIN','ATAN2','ATAN','CEILING','CEIL',
            'CONV','COS','COT','CRC32','DEGREES','EXP','FLOOR','LN','LOG10',
            'LOG2','LOG','MOD','OCT','PI','POWER','POW','RADIANS','RAND',
            'ROUND','SIGN','SIN','SQRT','TAN',
            ),
        16 => array(     //A ( must follow
            // Numeric function distinguished from other keyword by the same name
            "TRUNCATE"
            ),
        17 => array(
            // Date and Time Functions
            'ADDDATE','ADDTIME','CONVERT_TZ','CURDATE','CURRENT_DATE',
            'CURRENT_TIME','CURRENT_TIMESTAMP','CURTIME','DATE_ADD',
            'DATE_FORMAT','DATE_SUB','DATEDIFF','DAYNAME','DAYOFMONTH',
            'DAYOFWEEK','DAYOFYEAR','EXTRACT','FROM_DAYS','FROM_UNIXTIME',
            'GET_FORMAT','LAST_DAY','LOCALTIME','LOCALTIMESTAMP','MAKEDATE',
            'MAKETIME','MONTHNAME','NOW','PERIOD_ADD',
            'PERIOD_DIFF','SEC_TO_TIME','STR_TO_DATE','SUBDATE','SUBTIME',
            'SYSDATE','TIME_FORMAT','TIME_TO_SEC',
            'TIMESTAMPADD','TIMESTAMPDIFF','TO_DAYS',
            'UNIX_TIMESTAMP','UTC_DATE','UTC_TIME','UTC_TIMESTAMP','WEEKDAY',
            'WEEKOFYEAR','YEARWEEK',
            ),
        18 => array(     //A ( must follow
            // Date-time functions distinguished from other keywords by the same name
            "DATE", "DAY", "HOUR", "MICROSECOND", "MINUTE", "MONTH", "QUARTER",
            "SECOND", "TIME", "WEEK", "YEAR"
            ),
        19 => array(
            // Comparison Functions
            'COALESCE','GREATEST','ISNULL','LEAST',
            ),
        20 => array(     //A ( must follow
            // Comparison functions distinguished from other keywords by the same name
            "IN", "INTERVAL"
            ),
        21 => array(
            // Encryption and Compression Functions
            'AES_DECRYPT','AES_ENCRYPT','COMPRESS','DECODE','DES_DECRYPT',
            'DES_ENCRYPT','ENCODE','ENCRYPT','MD5','OLD_PASSWORD','PASSWORD',
            'SHA1','SHA','UNCOMPRESS','UNCOMPRESSED_LENGTH',
            ),
        22 => array(
            // GROUP BY (aggregate) Functions
            'AVG','BIT_AND','BIT_OR','BIT_XOR','COUNT','GROUP_CONCAT',
            'MAX','MIN','STDDEV_POP','STDDEV_SAMP','STDDEV','STD','SUM',
            'VAR_POP','VAR_SAMP','VARIANCE',
            ),
        23 => array(
            // Information Functions
            'BENCHMARK','COERCIBILITY','COLLATION','CONNECTION_ID',
            'FOUND_ROWS','LAST_INSERT_ID','ROW_COUNT',
            'SESSION_USER','SYSTEM_USER','USER','VERSION',
            ),
        24 => array(     //A ( must follow
            // Information functions distinguished from other keywords by the same name
            "CURRENT_USER", "DATABASE", "SCHEMA", "CHARSET"
            ),
        25 => array(
            // Miscellaneous Functions
            'ExtractValue','BIT_COUNT','GET_LOCK','INET_ATON','INET_NTOA',
            'IS_FREE_LOCK','IS_USED_LOCK','MASTER_POS_WAIT','NAME_CONST',
            'RELEASE_LOCK','SLEEP','UpdateXML','UUID',
            ),
        26 => array(     //A ( must follow
            // Miscellaneous function distinguished from other keyword by the same name
            "DEFAULT"
            ),
        27 => array(
            // Geometry Functions
            'Area','AsBinary','AsText','AsWKB','AsWKT','Boundary','Buffer',
            'Centroid','Contains','ConvexHull','Crosses',
            'Difference','Dimension','Disjoint','Distance',
            'EndPoint','Envelope','Equals','ExteriorRing',
            'GLength','GeomCollFromText','GeomCollFromWKB','GeomFromText',
            'GeomFromWKB','GeometryCollectionFromText',
            'GeometryCollectionFromWKB','GeometryFromText','GeometryFromWKB',
            'GeometryN','GeometryType',
            'InteriorRingN','Intersection','Intersects','IsClosed','IsEmpty',
            'IsRing','IsSimple',
            'LineFromText','LineFromWKB','LineStringFromText',
            'LineStringFromWKB',
            'MBRContains','MBRDisjoint','MBREqual','MBRIntersects',
            'MBROverlaps','MBRTouches','MBRWithin','MLineFromText',
            'MLineFromWKB','MPointFromText','MPointFromWKB','MPolyFromText',
            'MPolyFromWKB','MultiLineStringFromText','MultiLineStringFromWKB',
            'MultiPointFromText','MultiPointFromWKB','MultiPolygonFromText',
            'MultiPolygonFromWKB',
            'NumGeometries','NumInteriorRings','NumPoints',
            'Overlaps',
            'PointFromText','PointFromWKB','PointN','PointOnSurface',
            'PolyFromText','PolyFromWKB','PolygonFromText','PolygonFromWKB',
            'Related','SRID','StartPoint','SymDifference',
            'Touches',
            'Union',
            'Within',
            'X',
            'Y',
            ),
        ),
    'SYMBOLS' => array(
        1 => array(
            /* Operators */
            '=', ':=',                                      // assignment operators
            '||', '&&', '!',                                // locical operators
            '=', '<=>', '>=', '>', '<=', '<', '<>', '!=',   // comparison operators
            '|', '&', '^', '~', '<<', '>>',                 // bitwise operators
            '-', '+', '*', '/', '%',                        // numerical operators
            ),
        2 => array(
            /* Other syntactical symbols */
            '(', ')',
            ',', ';',
            ),
        ),
    'CASE_SENSITIVE' => array(
        GESHI_COMMENTS => false,
        1 => false,
        2 => false,
        3 => false,
        4 => false,
        5 => false,
        6 => false,
        7 => false,
        8 => false,
        9 => false,
        10 => false,
        11 => false,
        12 => false,
        13 => false,
        13 => false,
        14 => false,
        15 => false,
        16 => false,
        17 => false,
        18 => false,
        19 => false,
        20 => false,
        21 => false,
        22 => false,
        23 => false,
        24 => false,
        25 => false,
        26 => false,
        27 => false,
        ),
    'STYLES' => array(
        'KEYWORDS' => array(
            1 => 'color: #990099; font-weight: bold;',      // mix
            2 => 'color: #990099; font-weight: bold;',      // mix
            3 => 'color: #9900FF; font-weight: bold;',      // constants
            4 => 'color: #999900; font-weight: bold;',      // column data types
            5 => 'color: #999900; font-weight: bold;',      // column data types
            6 => 'color: #FF9900; font-weight: bold;',      // attributes
            7 => 'color: #FF9900; font-weight: bold;',      // attributes
            8 => 'color: #9900FF; font-weight: bold;',      // date-time units
            9 => 'color: #9900FF; font-weight: bold;',      // date-time units
 
            10 => 'color: #CC0099; font-weight: bold;',      // operators
            11 => 'color: #CC0099; font-weight: bold;',      // operators
 
            12 => 'color: #009900;',     // control flow (functions)
            13 => 'color: #000099;',     // string functions
            14 => 'color: #000099;',     // string functions
            15 => 'color: #000099;',     // numeric functions
            16 => 'color: #000099;',     // numeric functions
            17 => 'color: #000099;',     // date-time functions
            18 => 'color: #000099;',     // date-time functions
            19 => 'color: #000099;',     // comparison functions
            20 => 'color: #000099;',     // comparison functions
            21 => 'color: #000099;',     // encryption functions
            22 => 'color: #000099;',     // aggregate functions
            23 => 'color: #000099;',     // information functions
            24 => 'color: #000099;',     // information functions
            25 => 'color: #000099;',     // miscellaneous functions
            26 => 'color: #000099;',     // miscellaneous functions
            27 => 'color: #00CC00;',     // geometry functions
            ),
        'COMMENTS' => array(
            'MULTI' => 'color: #808000; font-style: italic;',
            1 => 'color: #808080; font-style: italic;',
            2 => 'color: #808080; font-style: italic;'
            ),
        'ESCAPE_CHAR' => array(
            0 => 'color: #004000; font-weight: bold;',
            1 => 'color: #008080; font-weight: bold;'       // search wildcards
            ),
        'BRACKETS' => array(
            0 => 'color: #FF00FF;'
            ),
        'STRINGS' => array(
            0 => 'color: #008000;'
            ),
        'NUMBERS' => array(
            0 => 'color: #008080;'
            ),
        'METHODS' => array(
            ),
        'SYMBOLS' => array(
            1 => 'color: #CC0099;',         // operators
            2 => 'color: #000033;',         // syntax
            ),
        'SCRIPT' => array(
            ),
        'REGEXPS' => array(
            )
        ),
    'URLS' => array(
        1 => 'http://search.mysql.com/search?site=refman-51&amp;q={FNAME}&amp;lr=lang_en',
        2 => 'http://search.mysql.com/search?site=refman-51&amp;q={FNAME}&amp;lr=lang_en',
        3 => 'http://search.mysql.com/search?site=refman-51&amp;q={FNAME}&amp;lr=lang_en',
        4 => 'http://search.mysql.com/search?site=refman-51&amp;q={FNAME}&amp;lr=lang_en',
        5 => 'http://search.mysql.com/search?site=refman-51&amp;q={FNAME}&amp;lr=lang_en',
        6 => 'http://search.mysql.com/search?site=refman-51&amp;q={FNAME}&amp;lr=lang_en',
        7 => 'http://search.mysql.com/search?site=refman-51&amp;q={FNAME}&amp;lr=lang_en',
        8 => 'http://search.mysql.com/search?site=refman-51&amp;q={FNAME}&amp;lr=lang_en',
        9 => 'http://search.mysql.com/search?site=refman-51&amp;q={FNAME}&amp;lr=lang_en',
 
        10 => 'http://dev.mysql.com/doc/refman/5.1/en/non-typed-operators.html',
        11 => 'http://dev.mysql.com/doc/refman/5.1/en/non-typed-operators.html',
 
        12 => 'http://dev.mysql.com/doc/refman/5.1/en/control-flow-functions.html',
        13 => 'http://dev.mysql.com/doc/refman/5.1/en/string-functions.html',
        14 => 'http://dev.mysql.com/doc/refman/5.1/en/string-functions.html',
        15 => 'http://dev.mysql.com/doc/refman/5.1/en/numeric-functions.html',
        16 => 'http://dev.mysql.com/doc/refman/5.1/en/numeric-functions.html',
        17 => 'http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html',
        18 => 'http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html',
        19 => 'http://dev.mysql.com/doc/refman/5.1/en/comparison-operators.html',
        20 => 'http://dev.mysql.com/doc/refman/5.1/en/comparison-operators.html',
        21 => 'http://dev.mysql.com/doc/refman/5.1/en/encryption-functions.html',
        22 => 'http://dev.mysql.com/doc/refman/5.1/en/group-by-functions-and-modifiers.html',
        23 => 'http://dev.mysql.com/doc/refman/5.1/en/information-functions.html',
        24 => 'http://dev.mysql.com/doc/refman/5.1/en/information-functions.html',
        25 => 'http://dev.mysql.com/doc/refman/5.1/en/func-op-summary-ref.html',
        26 => 'http://dev.mysql.com/doc/refman/5.1/en/func-op-summary-ref.html',
        27 => 'http://dev.mysql.com/doc/refman/5.1/en/analysing-spatial-information.html',
        ),
    'OOLANG' => false,
    'OBJECT_SPLITTERS' => array(
        ),
    'REGEXPS' => array(
        ),
    'STRICT_MODE_APPLIES' => GESHI_NEVER,
    'SCRIPT_DELIMITERS' => array(
        ),
    'HIGHLIGHT_STRICT_BLOCK' => array(
        ),
    'TAB_WIDTH' => 4,
    'PARSER_CONTROL' => array(
        'KEYWORDS' => array(
            2 => array(
                'DISALLOWED_AFTER' => '(?![\(\w])'
                ),
            5 => array(
                'DISALLOWED_AFTER' => '(?![\(\w])'
                ),
            7 => array(
                'DISALLOWED_AFTER' => '(?![\(\w])'
                ),
            9 => array(
                'DISALLOWED_AFTER' => '(?![\(\w])'
                ),
            11 => array(
                'DISALLOWED_AFTER' => '(?![\(\w])'
                ),
 
            14 => array(
                'DISALLOWED_AFTER' => '(?=\()'
                ),
            16 => array(
                'DISALLOWED_AFTER' => '(?=\()'
                ),
            18 => array(
                'DISALLOWED_AFTER' => '(?=\()'
                ),
            20 => array(
                'DISALLOWED_AFTER' => '(?=\()'
                ),
            24 => array(
                'DISALLOWED_AFTER' => '(?=\()'
                ),
            26 => array(
                'DISALLOWED_AFTER' => '(?=\()'
                )
            )
        )
);
 
?>
 

GeSHi