SqlConstants.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace SQLFormatter
{
    class SqlConstants
    {
            /**
             * ANSI SQL キーワード
             */
            public static readonly String[] SQL_RESERVED_WORDS = {
                    // ANSI SQL89
                    "ALL", "AND", "ANY", "AS", "ASC", "AUTHORIZATION", "AVG", "BEGIN",
                    "BETWEEN", "BY", "CHAR", "CHARACTER", "CHECK", "CLOSE", "COBOL",
                    "COMMIT", "CONTINUE", "COUNT", "CREATE", "CURRENT", "CURSOR",
                    "DEC", "DECIMAL", "DECLARE", "DEFAULT", "DELETE", "DESC",
                    "DISTINCT", "DOUBLE", "END", "ESCAPE", "EXEC", "EXISTS", "FETCH",
                    "FLOAT", "FOR", "FOREIGN", "FORTRAN", "FOUND", "FROM", "GO",
                    "GOTO", "GRANT", "GROUP", "HAVING", "IN", "INDICATOR", "INSERT",
                    "INT", "INTEGER", "INTO", "IS", "KEY", "LANGUAGE", "LIKE", "MAX",
                    "MIN", "MODULE", "NOT",
                    "NULL",
                    "NUMERIC",
                    "OF",
                    "ON",
                    "OPEN",
                    "OPTION",
                    "OR",
                    "ORDER",
                    "PASCAL",
                    "PLI",
                    "PRECISION",
                    "PRIMARY",
                    "PRIVILEGES",
                    "PROCEDURE",
                    "PUBLIC",
                    "REAL",
                    "REFERENCES",
                    "ROLLBACK",
                    "SCHEMA",
                    "SECTION",
                    "SELECT",
                    "SET",
                    "SMALLINT",
                    "SOME",
                    "SQL",
                    "SQLCODE",
                    "SQLERROR",
                    "SUM",
                    "TABLE",
                    "TO",
                    "UNION",
                    "UNIQUE",
                    "UPDATE",
                    "USER",
                    "VALUES",
                    "VIEW",
                    "WHENEVER",
                    "WHERE",
                    "WITH",
                    "WORK",
                    // ANSI SQL92
                    "ABSOLUTE", "ACTION", "ADD", "ALLOCATE", "ALTER", "ARE",
                    "ASSERTION", "AT", "BIT", "BIT_LENGTH", "BOTH", "CASCADE",
                    "CASCADED", "CASE", "CAST", "CATALOG", "CHAR_LENGTH",
                    "CHARACTER_LENGTH", "COALESCE", "COLLATE", "COLLATION", "COLUMN",
                    "CONNECT", "CONNECTION", "CONSTRAINT", "CONSTRAINTS", "CONVERT",
                    "CORRESPONDING", "CROSS", "CURRENT_DATE", "CURRENT_TIME",
                    "CURRENT_TIMESTAMP", "CURRENT_USER", "DATE", "DAY", "DEALLOATE",
                    "DEFERRABLE", "DEFERRED", "DESCRIBE", "DESCRIPTOR", "DIAGNOSTICS",
                    "DISCONNECT", "DOMAIN", "DROP", "ELSE", "END-EXEC", "EXCEPT",
                    "EXCEPTION", "EXECUTE", "EXTERNAL", "EXTRACT", "FALSE", "FIRST",
                    "FULL", "GET", "GLOBAL", "HOUR", "IDENTITY", "IMMEDIATE",
                    "INITIALLY", "INNER", "INPUT", "INSENSITIVE", "INTERSECT",
                    "INTERVAL", "ISOLATION", "JOIN", "LAST", "LEADING", "LEFT",
                    "LEVEL", "LOCAL", "LOWER", "MATCH", "MINUTE", "MONTH", "NAMES",
                    "NATIONAL", "NATURAL", "NCHAR", "NEXT", "NO", "NULLIF",
                    "OCTET_LENGTH", "ONLY", "OUTER", "OUTPUT", "OVERLAPS", "PAD",
                    "PARTIAL", "POSITION", "PREPARE", "PRESERVE", "PRIOR", "READ",
                    "RELATIVE", "RESTRICT", "REVOKE", "RIGHT", "ROWS", "SCROLL",
                    "SECOND", "SESSION", "SESSION_USER", "SIZE", "SPACE", "SQLSTATE",
                    "SUBSTRING", "SYSTEM_USER", "TEMPORARY", "THEN", "TIME",
                    "TIMESTAMP", "TIMEZONE_HOUR", "TIMEZONE_MINUTE", "TRAILING",
                    "TRANSACTION", "TRANSLATE", "TRANSLATION",
                    "TRIM",
                    "TRUE",
                    "UNKNOWN",
                    "UPPER",
                    "USAGE",
                    "USING",
                    "VALUE",
                    "VARCHAR",
                    "VARYING",
                    "WHEN",
                    "WRITE",
                    "YEAR",
                    "ZONE",
                    // ANSI SQL99
                    "ADMIN", "AFTER", "AGGREGATE", "ALIAS", "ARRAY", "BEFORE",
                    "BINARY", "BLOB", "BOOLEAN", "BREADTH", "CALL", "CLASS", "CLOB",
                    "COMPLETION", "CONDITION", "CONSTRUCTOR", "CUBE", "CURRENT_PATH",
                    "CURRENT_ROLE", "CYCLE", "DATA", "DEPTH", "DEREF", "DESTROY",
                    "DESTRUCTOR", "DETERMINISTIC", "DICTIONARY", "DO", "DYNAMIC",
                    "EACH", "ELSEIF", "EQUALS", "EVERY", "EXIT", "FREE", "FUNCTION",
                    "GENERAL", "GROUPING", "HANDLER", "HOST", "IF", "IGNORE",
                    "INITIALIZE", "INOUT", "ITERATE", "LARGE", "LATERAL", "LEAVE",
                    "LESS", "LIMIT", "LIST", "LOCALTIME", "LOCALTIMESTAMP", "LOCATOR",
                    "LONG", "LOOP", "MAP", "MODIFIES", "MODIFY", "NCLOB", "NEW",
                    "NONE", "NUMBER", "OBJECT", "OFF", "OLD", "OPERATION",
                    "ORDINALITY", "OUT", "PARAMETER", "PARAMETERS", "PATH", "POSTFIX",
                    "PREFIX", "PREORDER", "RAW", "READS", "RECURSIVE", "REDO",
                    // ANSI SQLではないのだが とても良く使われる構文
                    "TRUNCATE" };

            /**
             * キーワード. ANSI SQL89
             * 
             * Eclipseプラグイン側から利用されています。
             */
            public static readonly String[] SQL89_RESERVED_WORDS = { "ALL", "AND", "ANY",
                    "AS", "ASC", "AUTHORIZATION", "AVG", "BEGIN", "BETWEEN", "BY",
                    "CHAR", "CHARACTER", "CHECK", "CLOSE", "COBOL", "COMMIT",
                    "CONTINUE", "COUNT", "CREATE", "CURRENT", "CURSOR", "DEC",
                    "DECIMAL", "DECLARE", "DEFAULT", "DELETE", "DESC", "DISTINCT",
                    "DOUBLE", "END", "ESCAPE", "EXEC", "EXISTS", "FETCH", "FLOAT",
                    "FOR", "FOREIGN", "FORTRAN", "FOUND", "FROM", "GO", "GOTO",
                    "GRANT", "GROUP", "HAVING", "IN", "INDICATOR", "INSERT", "INT",
                    "INTEGER", "INTO", "IS", "KEY", "LANGUAGE", "LIKE", "MAX", "MIN",
                    "MODULE", "NOT", "NULL", "NUMERIC", "OF", "ON", "OPEN", "OPTION",
                    "OR", "ORDER", "PASCAL", "PLI", "PRECISION", "PRIMARY",
                    "PRIVILEGES", "PROCEDURE", "PUBLIC", "REAL", "REFERENCES",
                    "ROLLBACK", "SCHEMA", "SECTION", "SELECT", "SET", "SMALLINT",
                    "SOME", "SQL", "SQLCODE", "SQLERROR", "SUM", "TABLE", "TO",
                    "UNION", "UNIQUE", "UPDATE", "USER", "VALUES", "VIEW", "WHENEVER",
                    "WHERE", "WITH", "WORK" };

            /**
             * キーワード. ANSI SQL92
             * 
             * Eclipseプラグイン側から利用されています。
             */
            public static readonly String[] SQL92_RESERVED_WORDS = { "ABSOLUTE", "ACTION",
                    "ADD", "ALLOCATE", "ALTER", "ARE", "ASSERTION", "AT", "BIT",
                    "BIT_LENGTH", "BOTH", "CASCADE", "CASCADED", "CASE", "CAST",
                    "CATALOG", "CHAR_LENGTH", "CHARACTER_LENGTH", "COALESCE",
                    "COLLATE", "COLLATION", "COLUMN", "CONNECT", "CONNECTION",
                    "CONSTRAINT", "CONSTRAINTS", "CONVERT", "CORRESPONDING", "CROSS",
                    "CURRENT_DATE", "CURRENT_TIME", "CURRENT_TIMESTAMP",
                    "CURRENT_USER", "DATE", "DAY", "DEALLOATE", "DEFERRABLE",
                    "DEFERRED", "DESCRIBE", "DESCRIPTOR", "DIAGNOSTICS", "DISCONNECT",
                    "DOMAIN", "DROP", "ELSE", "END-EXEC", "EXCEPT", "EXCEPTION",
                    "EXECUTE", "EXTERNAL", "EXTRACT", "FALSE", "FIRST", "FULL", "GET",
                    "GLOBAL", "HOUR", "IDENTITY", "IMMEDIATE", "INITIALLY", "INNER",
                    "INPUT", "INSENSITIVE", "INTERSECT", "INTERVAL", "ISOLATION",
                    "JOIN", "LAST", "LEADING", "LEFT", "LEVEL", "LOCAL", "LOWER",
                    "MATCH", "MINUTE", "MONTH", "NAMES", "NATIONAL", "NATURAL",
                    "NCHAR", "NEXT", "NO", "NULLIF", "OCTET_LENGTH", "ONLY", "OUTER",
                    "OUTPUT", "OVERLAPS", "PAD", "PARTIAL", "POSITION", "PREPARE",
                    "PRESERVE", "PRIOR", "READ", "RELATIVE", "RESTRICT", "REVOKE",
                    "RIGHT", "ROWS", "SCROLL", "SECOND", "SESSION", "SESSION_USER",
                    "SIZE", "SPACE", "SQLSTATE", "SUBSTRING", "SYSTEM_USER",
                    "TEMPORARY", "THEN", "TIME", "TIMESTAMP", "TIMEZONE_HOUR",
                    "TIMEZONE_MINUTE", "TRAILING", "TRANSACTION", "TRANSLATE",
                    "TRANSLATION", "TRIM", "TRUE", "UNKNOWN", "UPPER", "USAGE",
                    "USING", "VALUE", "VARCHAR", "VARYING", "WHEN", "WRITE", "YEAR",
                    "ZONE" };

            /**
             * キーワード. ANSI SQL99
             * 
             * Eclipseプラグイン側から利用されています。
             */
            public static readonly String[] SQL99_RESERVED_WORDS = { "ADMIN", "AFTER",
                    "AGGREGATE", "ALIAS", "ARRAY", "BEFORE", "BINARY", "BLOB",
                    "BOOLEAN", "BREADTH", "CALL", "CLASS", "CLOB", "COMPLETION",
                    "CONDITION", "CONSTRUCTOR", "CUBE", "CURRENT_PATH", "CURRENT_ROLE",
                    "CYCLE", "DATA", "DEPTH", "DEREF", "DESTROY", "DESTRUCTOR",
                    "DETERMINISTIC", "DICTIONARY", "DO", "DYNAMIC", "EACH", "ELSEIF",
                    "EQUALS", "EVERY", "EXIT", "FREE", "FUNCTION", "GENERAL",
                    "GROUPING", "HANDLER", "HOST", "IF", "IGNORE", "INITIALIZE",
                    "INOUT", "ITERATE", "LARGE", "LATERAL", "LEAVE", "LESS", "LIMIT",
                    "LIST", "LOCALTIME", "LOCALTIMESTAMP", "LOCATOR", "LONG", "LOOP",
                    "MAP", "MODIFIES", "MODIFY", "NCLOB", "NEW", "NONE", "NUMBER",
                    "OBJECT", "OFF", "OLD", "OPERATION", "ORDINALITY", "OUT",
                    "PARAMETER", "PARAMETERS", "PATH", "POSTFIX", "PREFIX", "PREORDER",
                    "RAW", "READS", "RECURSIVE", "REDO" };

            /**
             * キーワード. ANSI SQL以外の構文
             * 
             * Eclipseプラグイン側から利用されています。
             */
            // C#への移植の際は不要?
            public static readonly String[] SQL_FAMOUS_WORDS = { "TRUNCATE" };
    }
}