You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

1365 lines
62 KiB

1 year ago
/*
MySQL (Positive Technologies) grammar
The MIT License (MIT).
Copyright (c) 2015-2017, Ivan Kochurkin (kvanttt@gmail.com), Positive Technologies.
Copyright (c) 2017, Ivan Khudyashev (IHudyashov@ptsecurity.com)
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
*/
lexer grammar MySqlLexer;
options { caseInsensitive = true; }
channels { MYSQLCOMMENT, ERRORCHANNEL }
// SKIP
SPACE: [ \t\r\n]+ -> channel(HIDDEN);
SPEC_MYSQL_COMMENT: '/*!' .+? '*/' -> channel(MYSQLCOMMENT);
COMMENT_INPUT: '/*' .*? '*/' -> channel(HIDDEN);
LINE_COMMENT: (
('--' [ \t]* | '#') ~[\r\n]* ('\r'? '\n' | EOF)
| '--' ('\r'? '\n' | EOF)
) -> channel(HIDDEN);
// Keywords
// Common Keywords
ADD: 'ADD';
ALL: 'ALL';
ALTER: 'ALTER';
ALWAYS: 'ALWAYS';
ANALYZE: 'ANALYZE';
AND: 'AND';
ARRAY: 'ARRAY';
AS: 'AS';
ASC: 'ASC';
ATTRIBUTE: 'ATTRIBUTE';
BEFORE: 'BEFORE';
BETWEEN: 'BETWEEN';
BOTH: 'BOTH';
BUCKETS: 'BUCKETS';
BY: 'BY';
CALL: 'CALL';
CASCADE: 'CASCADE';
CASE: 'CASE';
CAST: 'CAST';
CHANGE: 'CHANGE';
CHARACTER: 'CHARACTER';
CHECK: 'CHECK';
COLLATE: 'COLLATE';
COLUMN: 'COLUMN';
CONDITION: 'CONDITION';
CONSTRAINT: 'CONSTRAINT';
CONTINUE: 'CONTINUE';
CONVERT: 'CONVERT';
CREATE: 'CREATE';
CROSS: 'CROSS';
CURRENT: 'CURRENT';
CURRENT_ROLE: 'CURRENT_ROLE';
CURRENT_USER: 'CURRENT_USER';
CURSOR: 'CURSOR';
DATABASE: 'DATABASE';
DATABASES: 'DATABASES';
DECLARE: 'DECLARE';
DEFAULT: 'DEFAULT';
DELAYED: 'DELAYED';
DELETE: 'DELETE';
DESC: 'DESC';
DESCRIBE: 'DESCRIBE';
DETERMINISTIC: 'DETERMINISTIC';
DIAGNOSTICS: 'DIAGNOSTICS';
DISTINCT: 'DISTINCT';
DISTINCTROW: 'DISTINCTROW';
DROP: 'DROP';
EACH: 'EACH';
ELSE: 'ELSE';
ELSEIF: 'ELSEIF';
EMPTY: 'EMPTY';
ENCLOSED: 'ENCLOSED';
ENFORCED: 'ENFORCED';
ESCAPED: 'ESCAPED';
EXCEPT: 'EXCEPT';
EXISTS: 'EXISTS';
EXIT: 'EXIT';
EXPLAIN: 'EXPLAIN';
FALSE: 'FALSE';
FETCH: 'FETCH';
FOR: 'FOR';
FORCE: 'FORCE';
FOREIGN: 'FOREIGN';
FROM: 'FROM';
FULLTEXT: 'FULLTEXT';
GENERATED: 'GENERATED';
GET: 'GET';
GRANT: 'GRANT';
GROUP: 'GROUP';
HAVING: 'HAVING';
HIGH_PRIORITY: 'HIGH_PRIORITY';
HISTOGRAM: 'HISTOGRAM';
IF: 'IF';
IGNORE: 'IGNORE';
IGNORED: 'IGNORED';
IN: 'IN';
INDEX: 'INDEX';
INFILE: 'INFILE';
INNER: 'INNER';
INOUT: 'INOUT';
INSERT: 'INSERT';
INTERVAL: 'INTERVAL';
INTO: 'INTO';
IS: 'IS';
ITERATE: 'ITERATE';
JOIN: 'JOIN';
KEY: 'KEY';
KEYS: 'KEYS';
KILL: 'KILL';
LATERAL: 'LATERAL';
LEADING: 'LEADING';
LEAVE: 'LEAVE';
LEFT: 'LEFT';
LIKE: 'LIKE';
LIMIT: 'LIMIT';
LINEAR: 'LINEAR';
LINES: 'LINES';
LOAD: 'LOAD';
LOCK: 'LOCK';
LOCKED: 'LOCKED';
LOOP: 'LOOP';
LOW_PRIORITY: 'LOW_PRIORITY';
MASTER_BIND: 'MASTER_BIND';
MASTER_SSL_VERIFY_SERVER_CERT: 'MASTER_SSL_VERIFY_SERVER_CERT';
MATCH: 'MATCH';
MAXVALUE: 'MAXVALUE';
MINVALUE: 'MINVALUE';
MODIFIES: 'MODIFIES';
NATURAL: 'NATURAL';
NOT: 'NOT';
NO_WRITE_TO_BINLOG: 'NO_WRITE_TO_BINLOG';
NULL_LITERAL: 'NULL';
NUMBER: 'NUMBER';
ON: 'ON';
OPTIMIZE: 'OPTIMIZE';
OPTION: 'OPTION';
OPTIONAL: 'OPTIONAL';
OPTIONALLY: 'OPTIONALLY';
OR: 'OR';
ORDER: 'ORDER';
OUT: 'OUT';
OUTER: 'OUTER';
OUTFILE: 'OUTFILE';
OVER: 'OVER';
PARTITION: 'PARTITION';
PRIMARY: 'PRIMARY';
PROCEDURE: 'PROCEDURE';
PURGE: 'PURGE';
RANGE: 'RANGE';
READ: 'READ';
READS: 'READS';
REFERENCES: 'REFERENCES';
REGEXP: 'REGEXP';
RELEASE: 'RELEASE';
RENAME: 'RENAME';
REPEAT: 'REPEAT';
REPLACE: 'REPLACE';
REQUIRE: 'REQUIRE';
RESIGNAL: 'RESIGNAL';
RESTRICT: 'RESTRICT';
RETAIN: 'RETAIN';
RETURN: 'RETURN';
REVOKE: 'REVOKE';
RIGHT: 'RIGHT';
RLIKE: 'RLIKE';
SCHEMA: 'SCHEMA';
SCHEMAS: 'SCHEMAS';
SELECT: 'SELECT';
SET: 'SET';
SEPARATOR: 'SEPARATOR';
SHOW: 'SHOW';
SIGNAL: 'SIGNAL';
SKIP_: 'SKIP';
SKIP_QUERY_REWRITE: 'SKIP_QUERY_REWRITE';
SPATIAL: 'SPATIAL';
SQL: 'SQL';
SQLEXCEPTION: 'SQLEXCEPTION';
SQLSTATE: 'SQLSTATE';
SQLWARNING: 'SQLWARNING';
SQL_BIG_RESULT: 'SQL_BIG_RESULT';
SQL_CALC_FOUND_ROWS: 'SQL_CALC_FOUND_ROWS';
SQL_SMALL_RESULT: 'SQL_SMALL_RESULT';
SSL: 'SSL';
STACKED: 'STACKED';
STARTING: 'STARTING';
STATEMENT: 'STATEMENT';
STRAIGHT_JOIN: 'STRAIGHT_JOIN';
TABLE: 'TABLE';
TERMINATED: 'TERMINATED';
THEN: 'THEN';
TO: 'TO';
TRAILING: 'TRAILING';
TRIGGER: 'TRIGGER';
TRUE: 'TRUE';
UNDO: 'UNDO';
UNION: 'UNION';
UNIQUE: 'UNIQUE';
UNLOCK: 'UNLOCK';
UNSIGNED: 'UNSIGNED';
UPDATE: 'UPDATE';
USAGE: 'USAGE';
USE: 'USE';
USING: 'USING';
VALUES: 'VALUES';
WHEN: 'WHEN';
WHERE: 'WHERE';
WHILE: 'WHILE';
WITH: 'WITH';
WRITE: 'WRITE';
XOR: 'XOR';
ZEROFILL: 'ZEROFILL';
// DATA TYPE Keywords
TINYINT: 'TINYINT';
SMALLINT: 'SMALLINT';
MEDIUMINT: 'MEDIUMINT';
MIDDLEINT: 'MIDDLEINT';
INT: 'INT';
INT1: 'INT1';
INT2: 'INT2';
INT3: 'INT3';
INT4: 'INT4';
INT8: 'INT8';
INTEGER: 'INTEGER';
BIGINT: 'BIGINT';
REAL: 'REAL';
DOUBLE: 'DOUBLE';
PRECISION: 'PRECISION';
FLOAT: 'FLOAT';
FLOAT4: 'FLOAT4';
FLOAT8: 'FLOAT8';
DECIMAL: 'DECIMAL';
DEC: 'DEC';
NUMERIC: 'NUMERIC';
DATE: 'DATE';
TIME: 'TIME';
TIMESTAMP: 'TIMESTAMP';
DATETIME: 'DATETIME';
YEAR: 'YEAR';
CHAR: 'CHAR';
VARCHAR: 'VARCHAR';
NVARCHAR: 'NVARCHAR';
NATIONAL: 'NATIONAL';
BINARY: 'BINARY';
VARBINARY: 'VARBINARY';
TINYBLOB: 'TINYBLOB';
BLOB: 'BLOB';
MEDIUMBLOB: 'MEDIUMBLOB';
LONG: 'LONG';
LONGBLOB: 'LONGBLOB';
TINYTEXT: 'TINYTEXT';
TEXT: 'TEXT';
MEDIUMTEXT: 'MEDIUMTEXT';
LONGTEXT: 'LONGTEXT';
ENUM: 'ENUM';
VARYING: 'VARYING';
SERIAL: 'SERIAL';
// Interval type Keywords
YEAR_MONTH: 'YEAR_MONTH';
DAY_HOUR: 'DAY_HOUR';
DAY_MINUTE: 'DAY_MINUTE';
DAY_SECOND: 'DAY_SECOND';
HOUR_MINUTE: 'HOUR_MINUTE';
HOUR_SECOND: 'HOUR_SECOND';
MINUTE_SECOND: 'MINUTE_SECOND';
SECOND_MICROSECOND: 'SECOND_MICROSECOND';
MINUTE_MICROSECOND: 'MINUTE_MICROSECOND';
HOUR_MICROSECOND: 'HOUR_MICROSECOND';
DAY_MICROSECOND: 'DAY_MICROSECOND';
// JSON keywords
JSON_ARRAY: 'JSON_ARRAY';
JSON_ARRAYAGG: 'JSON_ARRAYAGG';
JSON_ARRAY_APPEND: 'JSON_ARRAY_APPEND';
JSON_ARRAY_INSERT: 'JSON_ARRAY_INSERT';
JSON_CONTAINS: 'JSON_CONTAINS';
JSON_CONTAINS_PATH: 'JSON_CONTAINS_PATH';
JSON_DEPTH: 'JSON_DEPTH';
JSON_EXTRACT: 'JSON_EXTRACT';
JSON_INSERT: 'JSON_INSERT';
JSON_KEYS: 'JSON_KEYS';
JSON_LENGTH: 'JSON_LENGTH';
JSON_MERGE: 'JSON_MERGE';
JSON_MERGE_PATCH: 'JSON_MERGE_PATCH';
JSON_MERGE_PRESERVE: 'JSON_MERGE_PRESERVE';
JSON_OBJECT: 'JSON_OBJECT';
JSON_OBJECTAGG: 'JSON_OBJECTAGG';
JSON_OVERLAPS: 'JSON_OVERLAPS';
JSON_PRETTY: 'JSON_PRETTY';
JSON_QUOTE: 'JSON_QUOTE';
JSON_REMOVE: 'JSON_REMOVE';
JSON_REPLACE: 'JSON_REPLACE';
JSON_SCHEMA_VALID: 'JSON_SCHEMA_VALID';
JSON_SCHEMA_VALIDATION_REPORT: 'JSON_SCHEMA_VALIDATION_REPORT';
JSON_SEARCH: 'JSON_SEARCH';
JSON_SET: 'JSON_SET';
JSON_STORAGE_FREE: 'JSON_STORAGE_FREE';
JSON_STORAGE_SIZE: 'JSON_STORAGE_SIZE';
JSON_TABLE: 'JSON_TABLE';
JSON_TYPE: 'JSON_TYPE';
JSON_UNQUOTE: 'JSON_UNQUOTE';
JSON_VALID: 'JSON_VALID';
JSON_VALUE: 'JSON_VALUE';
NESTED: 'NESTED';
ORDINALITY: 'ORDINALITY';
PATH: 'PATH';
// Group function Keywords
AVG: 'AVG';
BIT_AND: 'BIT_AND';
BIT_OR: 'BIT_OR';
BIT_XOR: 'BIT_XOR';
COUNT: 'COUNT';
CUME_DIST: 'CUME_DIST';
DENSE_RANK: 'DENSE_RANK';
FIRST_VALUE: 'FIRST_VALUE';
GROUP_CONCAT: 'GROUP_CONCAT';
LAG: 'LAG';
LAST_VALUE: 'LAST_VALUE';
LEAD: 'LEAD';
MAX: 'MAX';
MIN: 'MIN';
NTILE: 'NTILE';
NTH_VALUE: 'NTH_VALUE';
PERCENT_RANK: 'PERCENT_RANK';
RANK: 'RANK';
ROW_NUMBER: 'ROW_NUMBER';
STD: 'STD';
STDDEV: 'STDDEV';
STDDEV_POP: 'STDDEV_POP';
STDDEV_SAMP: 'STDDEV_SAMP';
SUM: 'SUM';
VAR_POP: 'VAR_POP';
VAR_SAMP: 'VAR_SAMP';
VARIANCE: 'VARIANCE';
// Common function Keywords
CURRENT_DATE: 'CURRENT_DATE';
CURRENT_TIME: 'CURRENT_TIME';
CURRENT_TIMESTAMP: 'CURRENT_TIMESTAMP';
LOCALTIME: 'LOCALTIME';
CURDATE: 'CURDATE';
CURTIME: 'CURTIME';
DATE_ADD: 'DATE_ADD';
DATE_SUB: 'DATE_SUB';
EXTRACT: 'EXTRACT';
LOCALTIMESTAMP: 'LOCALTIMESTAMP';
NOW: 'NOW';
POSITION: 'POSITION';
SUBSTR: 'SUBSTR';
SUBSTRING: 'SUBSTRING';
SYSDATE: 'SYSDATE';
TRIM: 'TRIM';
UTC_DATE: 'UTC_DATE';
UTC_TIME: 'UTC_TIME';
UTC_TIMESTAMP: 'UTC_TIMESTAMP';
// Keywords, but can be ID
// Common Keywords, but can be ID
ACCOUNT: 'ACCOUNT';
ACTION: 'ACTION';
AFTER: 'AFTER';
AGGREGATE: 'AGGREGATE';
ALGORITHM: 'ALGORITHM';
ANY: 'ANY';
AT: 'AT';
AUTHORS: 'AUTHORS';
AUTOCOMMIT: 'AUTOCOMMIT';
AUTOEXTEND_SIZE: 'AUTOEXTEND_SIZE';
AUTO_INCREMENT: 'AUTO_INCREMENT';
AVG_ROW_LENGTH: 'AVG_ROW_LENGTH';
BEGIN: 'BEGIN';
BINLOG: 'BINLOG';
BIT: 'BIT';
BLOCK: 'BLOCK';
BOOL: 'BOOL';
BOOLEAN: 'BOOLEAN';
BTREE: 'BTREE';
CACHE: 'CACHE';
CASCADED: 'CASCADED';
CHAIN: 'CHAIN';
CHANGED: 'CHANGED';
CHANNEL: 'CHANNEL';
CHECKSUM: 'CHECKSUM';
PAGE_CHECKSUM: 'PAGE_CHECKSUM';
CIPHER: 'CIPHER';
CLASS_ORIGIN: 'CLASS_ORIGIN';
CLIENT: 'CLIENT';
CLOSE: 'CLOSE';
CLUSTERING: 'CLUSTERING';
COALESCE: 'COALESCE';
CODE: 'CODE';
COLUMNS: 'COLUMNS';
COLUMN_FORMAT: 'COLUMN_FORMAT';
COLUMN_NAME: 'COLUMN_NAME';
COMMENT: 'COMMENT';
COMMIT: 'COMMIT';
COMPACT: 'COMPACT';
COMPLETION: 'COMPLETION';
COMPRESSED: 'COMPRESSED';
COMPRESSION: 'COMPRESSION' | QUOTE_SYMB? 'COMPRESSION' QUOTE_SYMB?;
CONCURRENT: 'CONCURRENT';
CONNECT: 'CONNECT';
CONNECTION: 'CONNECTION';
CONSISTENT: 'CONSISTENT';
CONSTRAINT_CATALOG: 'CONSTRAINT_CATALOG';
CONSTRAINT_SCHEMA: 'CONSTRAINT_SCHEMA';
CONSTRAINT_NAME: 'CONSTRAINT_NAME';
CONTAINS: 'CONTAINS';
CONTEXT: 'CONTEXT';
CONTRIBUTORS: 'CONTRIBUTORS';
COPY: 'COPY';
CPU: 'CPU';
CYCLE: 'CYCLE';
CURSOR_NAME: 'CURSOR_NAME';
DATA: 'DATA';
DATAFILE: 'DATAFILE';
DEALLOCATE: 'DEALLOCATE';
DEFAULT_AUTH: 'DEFAULT_AUTH';
DEFINER: 'DEFINER';
DELAY_KEY_WRITE: 'DELAY_KEY_WRITE';
DES_KEY_FILE: 'DES_KEY_FILE';
DIRECTORY: 'DIRECTORY';
DISABLE: 'DISABLE';
DISCARD: 'DISCARD';
DISK: 'DISK';
DO: 'DO';
DUMPFILE: 'DUMPFILE';
DUPLICATE: 'DUPLICATE';
DYNAMIC: 'DYNAMIC';
ENABLE: 'ENABLE';
ENCRYPTED: 'ENCRYPTED';
ENCRYPTION: 'ENCRYPTION';
ENCRYPTION_KEY_ID: 'ENCRYPTION_KEY_ID';
END: 'END';
ENDS: 'ENDS';
ENGINE: 'ENGINE';
ENGINES: 'ENGINES';
ERROR: 'ERROR';
ERRORS: 'ERRORS';
ESCAPE: 'ESCAPE';
EVEN: 'EVEN';
EVENT: 'EVENT';
EVENTS: 'EVENTS';
EVERY: 'EVERY';
EXCHANGE: 'EXCHANGE';
EXCLUSIVE: 'EXCLUSIVE';
EXPIRE: 'EXPIRE';
EXPORT: 'EXPORT';
EXTENDED: 'EXTENDED';
EXTENT_SIZE: 'EXTENT_SIZE';
FAILED_LOGIN_ATTEMPTS: 'FAILED_LOGIN_ATTEMPTS';
FAST: 'FAST';
FAULTS: 'FAULTS';
FIELDS: 'FIELDS';
FILE_BLOCK_SIZE: 'FILE_BLOCK_SIZE';
FILTER: 'FILTER';
FIRST: 'FIRST';
FIXED: 'FIXED';
FLUSH: 'FLUSH';
FOLLOWING: 'FOLLOWING';
FOLLOWS: 'FOLLOWS';
FOUND: 'FOUND';
FULL: 'FULL';
FUNCTION: 'FUNCTION';
GENERAL: 'GENERAL';
GLOBAL: 'GLOBAL';
GRANTS: 'GRANTS';
GROUP_REPLICATION: 'GROUP_REPLICATION';
HANDLER: 'HANDLER';
HASH: 'HASH';
HELP: 'HELP';
HISTORY: 'HISTORY';
HOST: 'HOST';
HOSTS: 'HOSTS';
IDENTIFIED: 'IDENTIFIED';
IGNORE_SERVER_IDS: 'IGNORE_SERVER_IDS';
IMPORT: 'IMPORT';
INCREMENT: 'INCREMENT';
INDEXES: 'INDEXES';
INITIAL_SIZE: 'INITIAL_SIZE';
INPLACE: 'INPLACE';
INSERT_METHOD: 'INSERT_METHOD';
INSTALL: 'INSTALL';
INSTANCE: 'INSTANCE';
INSTANT: 'INSTANT';
INVISIBLE: 'INVISIBLE';
INVOKER: 'INVOKER';
IO: 'IO';
IO_THREAD: 'IO_THREAD';
IPC: 'IPC';
ISOLATION: 'ISOLATION';
ISSUER: 'ISSUER';
JSON: 'JSON';
KEY_BLOCK_SIZE: 'KEY_BLOCK_SIZE';
LANGUAGE: 'LANGUAGE';
LAST: 'LAST';
LEAVES: 'LEAVES';
LESS: 'LESS';
LEVEL: 'LEVEL';
LIST: 'LIST';
LOCAL: 'LOCAL';
LOGFILE: 'LOGFILE';
LOGS: 'LOGS';
MASTER: 'MASTER';
MASTER_AUTO_POSITION: 'MASTER_AUTO_POSITION';
MASTER_CONNECT_RETRY: 'MASTER_CONNECT_RETRY';
MASTER_DELAY: 'MASTER_DELAY';
MASTER_HEARTBEAT_PERIOD: 'MASTER_HEARTBEAT_PERIOD';
MASTER_HOST: 'MASTER_HOST';
MASTER_LOG_FILE: 'MASTER_LOG_FILE';
MASTER_LOG_POS: 'MASTER_LOG_POS';
MASTER_PASSWORD: 'MASTER_PASSWORD';
MASTER_PORT: 'MASTER_PORT';
MASTER_RETRY_COUNT: 'MASTER_RETRY_COUNT';
MASTER_SSL: 'MASTER_SSL';
MASTER_SSL_CA: 'MASTER_SSL_CA';
MASTER_SSL_CAPATH: 'MASTER_SSL_CAPATH';
MASTER_SSL_CERT: 'MASTER_SSL_CERT';
MASTER_SSL_CIPHER: 'MASTER_SSL_CIPHER';
MASTER_SSL_CRL: 'MASTER_SSL_CRL';
MASTER_SSL_CRLPATH: 'MASTER_SSL_CRLPATH';
MASTER_SSL_KEY: 'MASTER_SSL_KEY';
MASTER_TLS_VERSION: 'MASTER_TLS_VERSION';
MASTER_USER: 'MASTER_USER';
MAX_CONNECTIONS_PER_HOUR: 'MAX_CONNECTIONS_PER_HOUR';
MAX_QUERIES_PER_HOUR: 'MAX_QUERIES_PER_HOUR';
MAX_ROWS: 'MAX_ROWS';
MAX_SIZE: 'MAX_SIZE';
MAX_UPDATES_PER_HOUR: 'MAX_UPDATES_PER_HOUR';
MAX_USER_CONNECTIONS: 'MAX_USER_CONNECTIONS';
MEDIUM: 'MEDIUM';
MEMBER: 'MEMBER';
MERGE: 'MERGE';
MESSAGE_TEXT: 'MESSAGE_TEXT';
MID: 'MID';
MIGRATE: 'MIGRATE';
MIN_ROWS: 'MIN_ROWS';
MODE: 'MODE';
MODIFY: 'MODIFY';
MUTEX: 'MUTEX';
MYSQL: 'MYSQL';
MYSQL_ERRNO: 'MYSQL_ERRNO';
NAME: 'NAME';
NAMES: 'NAMES';
NCHAR: 'NCHAR';
NEVER: 'NEVER';
NEXT: 'NEXT';
NO: 'NO';
NOCACHE: 'NOCACHE';
NOCOPY: 'NOCOPY';
NOCYCLE: 'NOCYCLE';
NOMAXVALUE: 'NOMAXVALUE';
NOMINVALUE: 'NOMINVALUE';
NOWAIT: 'NOWAIT';
NODEGROUP: 'NODEGROUP';
NONE: 'NONE';
ODBC: 'ODBC';
OFFLINE: 'OFFLINE';
OFFSET: 'OFFSET';
OF: 'OF';
OJ: 'OJ';
OLD_PASSWORD: 'OLD_PASSWORD';
ONE: 'ONE';
ONLINE: 'ONLINE';
ONLY: 'ONLY';
OPEN: 'OPEN';
OPTIMIZER_COSTS: 'OPTIMIZER_COSTS';
OPTIONS: 'OPTIONS';
OWNER: 'OWNER';
PACK_KEYS: 'PACK_KEYS';
PAGE: 'PAGE';
PAGE_COMPRESSED: 'PAGE_COMPRESSED';
PAGE_COMPRESSION_LEVEL: 'PAGE_COMPRESSION_LEVEL';
PARSER: 'PARSER';
PARTIAL: 'PARTIAL';
PARTITIONING: 'PARTITIONING';
PARTITIONS: 'PARTITIONS';
PASSWORD: 'PASSWORD';
PASSWORD_LOCK_TIME: 'PASSWORD_LOCK_TIME';
PHASE: 'PHASE';
PLUGIN: 'PLUGIN';
PLUGIN_DIR: 'PLUGIN_DIR';
PLUGINS: 'PLUGINS';
PORT: 'PORT';
PRECEDES: 'PRECEDES';
PRECEDING: 'PRECEDING';
PREPARE: 'PREPARE';
PRESERVE: 'PRESERVE';
PREV: 'PREV';
PROCESSLIST: 'PROCESSLIST';
PROFILE: 'PROFILE';
PROFILES: 'PROFILES';
PROXY: 'PROXY';
QUERY: 'QUERY';
QUICK: 'QUICK';
REBUILD: 'REBUILD';
RECOVER: 'RECOVER';
RECURSIVE: 'RECURSIVE';
REDO_BUFFER_SIZE: 'REDO_BUFFER_SIZE';
REDUNDANT: 'REDUNDANT';
RELAY: 'RELAY';
RELAY_LOG_FILE: 'RELAY_LOG_FILE';
RELAY_LOG_POS: 'RELAY_LOG_POS';
RELAYLOG: 'RELAYLOG';
REMOVE: 'REMOVE';
REORGANIZE: 'REORGANIZE';
REPAIR: 'REPAIR';
REPLICATE_DO_DB: 'REPLICATE_DO_DB';
REPLICATE_DO_TABLE: 'REPLICATE_DO_TABLE';
REPLICATE_IGNORE_DB: 'REPLICATE_IGNORE_DB';
REPLICATE_IGNORE_TABLE: 'REPLICATE_IGNORE_TABLE';
REPLICATE_REWRITE_DB: 'REPLICATE_REWRITE_DB';
REPLICATE_WILD_DO_TABLE: 'REPLICATE_WILD_DO_TABLE';
REPLICATE_WILD_IGNORE_TABLE: 'REPLICATE_WILD_IGNORE_TABLE';
REPLICATION: 'REPLICATION';
RESET: 'RESET';
RESTART: 'RESTART';
RESUME: 'RESUME';
RETURNED_SQLSTATE: 'RETURNED_SQLSTATE';
RETURNING: 'RETURNING';
RETURNS: 'RETURNS';
REUSE: 'REUSE';
ROLE: 'ROLE';
ROLLBACK: 'ROLLBACK';
ROLLUP: 'ROLLUP';
ROTATE: 'ROTATE';
ROW: 'ROW';
ROWS: 'ROWS';
ROW_FORMAT: 'ROW_FORMAT';
RTREE: 'RTREE';
SAVEPOINT: 'SAVEPOINT';
SCHEDULE: 'SCHEDULE';
SECURITY: 'SECURITY';
SEQUENCE: 'SEQUENCE';
SERVER: 'SERVER';
SESSION: 'SESSION';
SHARE: 'SHARE';
SHARED: 'SHARED';
SIGNED: 'SIGNED';
SIMPLE: 'SIMPLE';
SLAVE: 'SLAVE';
SLOW: 'SLOW';
SNAPSHOT: 'SNAPSHOT';
SOCKET: 'SOCKET';
SOME: 'SOME';
SONAME: 'SONAME';
SOUNDS: 'SOUNDS';
SOURCE: 'SOURCE';
SQL_AFTER_GTIDS: 'SQL_AFTER_GTIDS';
SQL_AFTER_MTS_GAPS: 'SQL_AFTER_MTS_GAPS';
SQL_BEFORE_GTIDS: 'SQL_BEFORE_GTIDS';
SQL_BUFFER_RESULT: 'SQL_BUFFER_RESULT';
SQL_CACHE: 'SQL_CACHE';
SQL_NO_CACHE: 'SQL_NO_CACHE';
SQL_THREAD: 'SQL_THREAD';
START: 'START';
STARTS: 'STARTS';
STATS_AUTO_RECALC: 'STATS_AUTO_RECALC';
STATS_PERSISTENT: 'STATS_PERSISTENT';
STATS_SAMPLE_PAGES: 'STATS_SAMPLE_PAGES';
STATUS: 'STATUS';
STOP: 'STOP';
STORAGE: 'STORAGE';
STORED: 'STORED';
STRING: 'STRING';
SUBCLASS_ORIGIN: 'SUBCLASS_ORIGIN';
SUBJECT: 'SUBJECT';
SUBPARTITION: 'SUBPARTITION';
SUBPARTITIONS: 'SUBPARTITIONS';
SUSPEND: 'SUSPEND';
SWAPS: 'SWAPS';
SWITCHES: 'SWITCHES';
TABLE_NAME: 'TABLE_NAME';
TABLESPACE: 'TABLESPACE';
TABLE_TYPE: 'TABLE_TYPE';
TEMPORARY: 'TEMPORARY';
TEMPTABLE: 'TEMPTABLE';
THAN: 'THAN';
TRADITIONAL: 'TRADITIONAL';
TRANSACTION: 'TRANSACTION';
TRANSACTIONAL: 'TRANSACTIONAL';
TRIGGERS: 'TRIGGERS';
TRUNCATE: 'TRUNCATE';
UNBOUNDED: 'UNBOUNDED';
UNDEFINED: 'UNDEFINED';
UNDOFILE: 'UNDOFILE';
UNDO_BUFFER_SIZE: 'UNDO_BUFFER_SIZE';
UNINSTALL: 'UNINSTALL';
UNKNOWN: 'UNKNOWN';
UNTIL: 'UNTIL';
UPGRADE: 'UPGRADE';
USER: 'USER';
USE_FRM: 'USE_FRM';
USER_RESOURCES: 'USER_RESOURCES';
VALIDATION: 'VALIDATION';
VALUE: 'VALUE';
VARIABLES: 'VARIABLES';
VIEW: 'VIEW';
VIRTUAL: 'VIRTUAL';
VISIBLE: 'VISIBLE';
WAIT: 'WAIT';
WARNINGS: 'WARNINGS';
WINDOW: 'WINDOW';
WITHOUT: 'WITHOUT';
WORK: 'WORK';
WRAPPER: 'WRAPPER';
X509: 'X509';
XA: 'XA';
XML: 'XML';
YES: 'YES';
// Date format Keywords
EUR: 'EUR';
USA: 'USA';
JIS: 'JIS';
ISO: 'ISO';
INTERNAL: 'INTERNAL';
// Interval type Keywords
QUARTER: 'QUARTER';
MONTH: 'MONTH';
DAY: 'DAY';
HOUR: 'HOUR';
MINUTE: 'MINUTE';
WEEK: 'WEEK';
SECOND: 'SECOND';
MICROSECOND: 'MICROSECOND';
// PRIVILEGES
ADMIN: 'ADMIN';
APPLICATION_PASSWORD_ADMIN: 'APPLICATION_PASSWORD_ADMIN';
AUDIT_ABORT_EXEMPT: 'AUDIT_ABORT_EXEMPT';
AUDIT_ADMIN: 'AUDIT_ADMIN';
AUTHENTICATION_POLICY_ADMIN: 'AUTHENTICATION_POLICY_ADMIN';
BACKUP_ADMIN: 'BACKUP_ADMIN';
BINLOG_ADMIN: 'BINLOG_ADMIN';
BINLOG_ENCRYPTION_ADMIN: 'BINLOG_ENCRYPTION_ADMIN';
CLONE_ADMIN: 'CLONE_ADMIN';
CONNECTION_ADMIN: 'CONNECTION_ADMIN';
ENCRYPTION_KEY_ADMIN: 'ENCRYPTION_KEY_ADMIN';
EXECUTE: 'EXECUTE';
FILE: 'FILE';
FIREWALL_ADMIN: 'FIREWALL_ADMIN';
FIREWALL_EXEMPT: 'FIREWALL_EXEMPT';
FIREWALL_USER: 'FIREWALL_USER';
FLUSH_OPTIMIZER_COSTS: 'FLUSH_OPTIMIZER_COSTS';
FLUSH_STATUS: 'FLUSH_STATUS';
FLUSH_TABLES: 'FLUSH_TABLES';
FLUSH_USER_RESOURCES: 'FLUSH_USER_RESOURCES';
GROUP_REPLICATION_ADMIN: 'GROUP_REPLICATION_ADMIN';
INNODB_REDO_LOG_ARCHIVE: 'INNODB_REDO_LOG_ARCHIVE';
INNODB_REDO_LOG_ENABLE: 'INNODB_REDO_LOG_ENABLE';
INVOKE: 'INVOKE';
LAMBDA: 'LAMBDA';
NDB_STORED_USER: 'NDB_STORED_USER';
PASSWORDLESS_USER_ADMIN: 'PASSWORDLESS_USER_ADMIN';
PERSIST_RO_VARIABLES_ADMIN: 'PERSIST_RO_VARIABLES_ADMIN';
PRIVILEGES: 'PRIVILEGES';
PROCESS: 'PROCESS';
RELOAD: 'RELOAD';
REPLICATION_APPLIER: 'REPLICATION_APPLIER';
REPLICATION_SLAVE_ADMIN: 'REPLICATION_SLAVE_ADMIN';
RESOURCE_GROUP_ADMIN: 'RESOURCE_GROUP_ADMIN';
RESOURCE_GROUP_USER: 'RESOURCE_GROUP_USER';
ROLE_ADMIN: 'ROLE_ADMIN';
ROUTINE: 'ROUTINE';
S3: 'S3';
SERVICE_CONNECTION_ADMIN: 'SERVICE_CONNECTION_ADMIN';
SESSION_VARIABLES_ADMIN: QUOTE_SYMB? 'SESSION_VARIABLES_ADMIN' QUOTE_SYMB?;
SET_USER_ID: 'SET_USER_ID';
SHOW_ROUTINE: 'SHOW_ROUTINE';
SHUTDOWN: 'SHUTDOWN';
SUPER: 'SUPER';
SYSTEM_VARIABLES_ADMIN: 'SYSTEM_VARIABLES_ADMIN';
TABLES: 'TABLES';
TABLE_ENCRYPTION_ADMIN: 'TABLE_ENCRYPTION_ADMIN';
VERSION_TOKEN_ADMIN: 'VERSION_TOKEN_ADMIN';
XA_RECOVER_ADMIN: 'XA_RECOVER_ADMIN';
// Charsets
ARMSCII8: 'ARMSCII8';
ASCII: 'ASCII';
BIG5: 'BIG5';
CP1250: 'CP1250';
CP1251: 'CP1251';
CP1256: 'CP1256';
CP1257: 'CP1257';
CP850: 'CP850';
CP852: 'CP852';
CP866: 'CP866';
CP932: 'CP932';
DEC8: 'DEC8';
EUCJPMS: 'EUCJPMS';
EUCKR: 'EUCKR';
GB18030: 'GB18030';
GB2312: 'GB2312';
GBK: 'GBK';
GEOSTD8: 'GEOSTD8';
GREEK: 'GREEK';
HEBREW: 'HEBREW';
HP8: 'HP8';
KEYBCS2: 'KEYBCS2';
KOI8R: 'KOI8R';
KOI8U: 'KOI8U';
LATIN1: 'LATIN1';
LATIN2: 'LATIN2';
LATIN5: 'LATIN5';
LATIN7: 'LATIN7';
MACCE: 'MACCE';
MACROMAN: 'MACROMAN';
SJIS: 'SJIS';
SWE7: 'SWE7';
TIS620: 'TIS620';
UCS2: 'UCS2';
UJIS: 'UJIS';
UTF16: 'UTF16';
UTF16LE: 'UTF16LE';
UTF32: 'UTF32';
UTF8: 'UTF8';
UTF8MB3: 'UTF8MB3';
UTF8MB4: 'UTF8MB4';
// DB Engines
ARCHIVE: 'ARCHIVE';
BLACKHOLE: 'BLACKHOLE';
CSV: 'CSV';
FEDERATED: 'FEDERATED';
INNODB: 'INNODB';
MEMORY: 'MEMORY';
MRG_MYISAM: 'MRG_MYISAM';
MYISAM: 'MYISAM';
NDB: 'NDB';
NDBCLUSTER: 'NDBCLUSTER';
PERFORMANCE_SCHEMA: 'PERFORMANCE_SCHEMA';
TOKUDB: 'TOKUDB';
// Transaction Levels
REPEATABLE: 'REPEATABLE';
COMMITTED: 'COMMITTED';
UNCOMMITTED: 'UNCOMMITTED';
SERIALIZABLE: 'SERIALIZABLE';
// Spatial data types
GEOMETRYCOLLECTION: 'GEOMETRYCOLLECTION';
GEOMCOLLECTION: 'GEOMCOLLECTION';
GEOMETRY: 'GEOMETRY';
LINESTRING: 'LINESTRING';
MULTILINESTRING: 'MULTILINESTRING';
MULTIPOINT: 'MULTIPOINT';
MULTIPOLYGON: 'MULTIPOLYGON';
POINT: 'POINT';
POLYGON: 'POLYGON';
// Common function names
ABS: 'ABS';
ACOS: 'ACOS';
ADDDATE: 'ADDDATE';
ADDTIME: 'ADDTIME';
AES_DECRYPT: 'AES_DECRYPT';
AES_ENCRYPT: 'AES_ENCRYPT';
AREA: 'AREA';
ASBINARY: 'ASBINARY';
ASIN: 'ASIN';
ASTEXT: 'ASTEXT';
ASWKB: 'ASWKB';
ASWKT: 'ASWKT';
ASYMMETRIC_DECRYPT: 'ASYMMETRIC_DECRYPT';
ASYMMETRIC_DERIVE: 'ASYMMETRIC_DERIVE';
ASYMMETRIC_ENCRYPT: 'ASYMMETRIC_ENCRYPT';
ASYMMETRIC_SIGN: 'ASYMMETRIC_SIGN';
ASYMMETRIC_VERIFY: 'ASYMMETRIC_VERIFY';
ATAN: 'ATAN';
ATAN2: 'ATAN2';
BENCHMARK: 'BENCHMARK';
BIN: 'BIN';
BIT_COUNT: 'BIT_COUNT';
BIT_LENGTH: 'BIT_LENGTH';
BUFFER: 'BUFFER';
CATALOG_NAME: 'CATALOG_NAME';
CEIL: 'CEIL';
CEILING: 'CEILING';
CENTROID: 'CENTROID';
CHARACTER_LENGTH: 'CHARACTER_LENGTH';
CHARSET: 'CHARSET';
CHAR_LENGTH: 'CHAR_LENGTH';
COERCIBILITY: 'COERCIBILITY';
COLLATION: 'COLLATION';
COMPRESS: 'COMPRESS';
CONCAT: 'CONCAT';
CONCAT_WS: 'CONCAT_WS';
CONNECTION_ID: 'CONNECTION_ID';
CONV: 'CONV';
CONVERT_TZ: 'CONVERT_TZ';
COS: 'COS';
COT: 'COT';
CRC32: 'CRC32';
CREATE_ASYMMETRIC_PRIV_KEY: 'CREATE_ASYMMETRIC_PRIV_KEY';
CREATE_ASYMMETRIC_PUB_KEY: 'CREATE_ASYMMETRIC_PUB_KEY';
CREATE_DH_PARAMETERS: 'CREATE_DH_PARAMETERS';
CREATE_DIGEST: 'CREATE_DIGEST';
CROSSES: 'CROSSES';
DATEDIFF: 'DATEDIFF';
DATE_FORMAT: 'DATE_FORMAT';
DAYNAME: 'DAYNAME';
DAYOFMONTH: 'DAYOFMONTH';
DAYOFWEEK: 'DAYOFWEEK';
DAYOFYEAR: 'DAYOFYEAR';
DECODE: 'DECODE';
DEGREES: 'DEGREES';
DES_DECRYPT: 'DES_DECRYPT';
DES_ENCRYPT: 'DES_ENCRYPT';
DIMENSION: 'DIMENSION';
DISJOINT: 'DISJOINT';
ELT: 'ELT';
ENCODE: 'ENCODE';
ENCRYPT: 'ENCRYPT';
ENDPOINT: 'ENDPOINT';
ENGINE_ATTRIBUTE: 'ENGINE_ATTRIBUTE';
ENVELOPE: 'ENVELOPE';
EQUALS: 'EQUALS';
EXP: 'EXP';
EXPORT_SET: 'EXPORT_SET';
EXTERIORRING: 'EXTERIORRING';
EXTRACTVALUE: 'EXTRACTVALUE';
FIELD: 'FIELD';
FIND_IN_SET: 'FIND_IN_SET';
FLOOR: 'FLOOR';
FORMAT: 'FORMAT';
FOUND_ROWS: 'FOUND_ROWS';
FROM_BASE64: 'FROM_BASE64';
FROM_DAYS: 'FROM_DAYS';
FROM_UNIXTIME: 'FROM_UNIXTIME';
GEOMCOLLFROMTEXT: 'GEOMCOLLFROMTEXT';
GEOMCOLLFROMWKB: 'GEOMCOLLFROMWKB';
GEOMETRYCOLLECTIONFROMTEXT: 'GEOMETRYCOLLECTIONFROMTEXT';
GEOMETRYCOLLECTIONFROMWKB: 'GEOMETRYCOLLECTIONFROMWKB';
GEOMETRYFROMTEXT: 'GEOMETRYFROMTEXT';
GEOMETRYFROMWKB: 'GEOMETRYFROMWKB';
GEOMETRYN: 'GEOMETRYN';
GEOMETRYTYPE: 'GEOMETRYTYPE';
GEOMFROMTEXT: 'GEOMFROMTEXT';
GEOMFROMWKB: 'GEOMFROMWKB';
GET_FORMAT: 'GET_FORMAT';
GET_LOCK: 'GET_LOCK';
GLENGTH: 'GLENGTH';
GREATEST: 'GREATEST';
GTID_SUBSET: 'GTID_SUBSET';
GTID_SUBTRACT: 'GTID_SUBTRACT';
HEX: 'HEX';
IFNULL: 'IFNULL';
INET6_ATON: 'INET6_ATON';
INET6_NTOA: 'INET6_NTOA';
INET_ATON: 'INET_ATON';
INET_NTOA: 'INET_NTOA';
INSTR: 'INSTR';
INTERIORRINGN: 'INTERIORRINGN';
INTERSECTS: 'INTERSECTS';
ISCLOSED: 'ISCLOSED';
ISEMPTY: 'ISEMPTY';
ISNULL: 'ISNULL';
ISSIMPLE: 'ISSIMPLE';
IS_FREE_LOCK: 'IS_FREE_LOCK';
IS_IPV4: 'IS_IPV4';
IS_IPV4_COMPAT: 'IS_IPV4_COMPAT';
IS_IPV4_MAPPED: 'IS_IPV4_MAPPED';
IS_IPV6: 'IS_IPV6';
IS_USED_LOCK: 'IS_USED_LOCK';
LAST_INSERT_ID: 'LAST_INSERT_ID';
LCASE: 'LCASE';
LEAST: 'LEAST';
LENGTH: 'LENGTH';
LINEFROMTEXT: 'LINEFROMTEXT';
LINEFROMWKB: 'LINEFROMWKB';
LINESTRINGFROMTEXT: 'LINESTRINGFROMTEXT';
LINESTRINGFROMWKB: 'LINESTRINGFROMWKB';
LN: 'LN';
LOAD_FILE: 'LOAD_FILE';
LOCATE: 'LOCATE';
LOG: 'LOG';
LOG10: 'LOG10';
LOG2: 'LOG2';
LOWER: 'LOWER';
LPAD: 'LPAD';
LTRIM: 'LTRIM';
MAKEDATE: 'MAKEDATE';
MAKETIME: 'MAKETIME';
MAKE_SET: 'MAKE_SET';
MASTER_POS_WAIT: 'MASTER_POS_WAIT';
MBRCONTAINS: 'MBRCONTAINS';
MBRDISJOINT: 'MBRDISJOINT';
MBREQUAL: 'MBREQUAL';
MBRINTERSECTS: 'MBRINTERSECTS';
MBROVERLAPS: 'MBROVERLAPS';
MBRTOUCHES: 'MBRTOUCHES';
MBRWITHIN: 'MBRWITHIN';
MD5: 'MD5';
MLINEFROMTEXT: 'MLINEFROMTEXT';
MLINEFROMWKB: 'MLINEFROMWKB';
MONTHNAME: 'MONTHNAME';
MPOINTFROMTEXT: 'MPOINTFROMTEXT';
MPOINTFROMWKB: 'MPOINTFROMWKB';
MPOLYFROMTEXT: 'MPOLYFROMTEXT';
MPOLYFROMWKB: 'MPOLYFROMWKB';
MULTILINESTRINGFROMTEXT: 'MULTILINESTRINGFROMTEXT';
MULTILINESTRINGFROMWKB: 'MULTILINESTRINGFROMWKB';
MULTIPOINTFROMTEXT: 'MULTIPOINTFROMTEXT';
MULTIPOINTFROMWKB: 'MULTIPOINTFROMWKB';
MULTIPOLYGONFROMTEXT: 'MULTIPOLYGONFROMTEXT';
MULTIPOLYGONFROMWKB: 'MULTIPOLYGONFROMWKB';
NAME_CONST: 'NAME_CONST';
NULLIF: 'NULLIF';
NUMGEOMETRIES: 'NUMGEOMETRIES';
NUMINTERIORRINGS: 'NUMINTERIORRINGS';
NUMPOINTS: 'NUMPOINTS';
OCT: 'OCT';
OCTET_LENGTH: 'OCTET_LENGTH';
ORD: 'ORD';
OVERLAPS: 'OVERLAPS';
PERIOD_ADD: 'PERIOD_ADD';
PERIOD_DIFF: 'PERIOD_DIFF';
PI: 'PI';
POINTFROMTEXT: 'POINTFROMTEXT';
POINTFROMWKB: 'POINTFROMWKB';
POINTN: 'POINTN';
POLYFROMTEXT: 'POLYFROMTEXT';
POLYFROMWKB: 'POLYFROMWKB';
POLYGONFROMTEXT: 'POLYGONFROMTEXT';
POLYGONFROMWKB: 'POLYGONFROMWKB';
POW: 'POW';
POWER: 'POWER';
QUOTE: 'QUOTE';
RADIANS: 'RADIANS';
RAND: 'RAND';
RANDOM: 'RANDOM';
RANDOM_BYTES: 'RANDOM_BYTES';
RELEASE_LOCK: 'RELEASE_LOCK';
REVERSE: 'REVERSE';
ROUND: 'ROUND';
ROW_COUNT: 'ROW_COUNT';
RPAD: 'RPAD';
RTRIM: 'RTRIM';
SEC_TO_TIME: 'SEC_TO_TIME';
SECONDARY_ENGINE_ATTRIBUTE: 'SECONDARY_ENGINE_ATTRIBUTE';
SESSION_USER: 'SESSION_USER';
SHA: 'SHA';
SHA1: 'SHA1';
SHA2: 'SHA2';
SCHEMA_NAME: 'SCHEMA_NAME';
SIGN: 'SIGN';
SIN: 'SIN';
SLEEP: 'SLEEP';
SOUNDEX: 'SOUNDEX';
SQL_THREAD_WAIT_AFTER_GTIDS: 'SQL_THREAD_WAIT_AFTER_GTIDS';
SQRT: 'SQRT';
SRID: 'SRID';
STARTPOINT: 'STARTPOINT';
STRCMP: 'STRCMP';
STR_TO_DATE: 'STR_TO_DATE';
ST_AREA: 'ST_AREA';
ST_ASBINARY: 'ST_ASBINARY';
ST_ASTEXT: 'ST_ASTEXT';
ST_ASWKB: 'ST_ASWKB';
ST_ASWKT: 'ST_ASWKT';
ST_BUFFER: 'ST_BUFFER';
ST_CENTROID: 'ST_CENTROID';
ST_CONTAINS: 'ST_CONTAINS';
ST_CROSSES: 'ST_CROSSES';
ST_DIFFERENCE: 'ST_DIFFERENCE';
ST_DIMENSION: 'ST_DIMENSION';
ST_DISJOINT: 'ST_DISJOINT';
ST_DISTANCE: 'ST_DISTANCE';
ST_ENDPOINT: 'ST_ENDPOINT';
ST_ENVELOPE: 'ST_ENVELOPE';
ST_EQUALS: 'ST_EQUALS';
ST_EXTERIORRING: 'ST_EXTERIORRING';
ST_GEOMCOLLFROMTEXT: 'ST_GEOMCOLLFROMTEXT';
ST_GEOMCOLLFROMTXT: 'ST_GEOMCOLLFROMTXT';
ST_GEOMCOLLFROMWKB: 'ST_GEOMCOLLFROMWKB';
ST_GEOMETRYCOLLECTIONFROMTEXT: 'ST_GEOMETRYCOLLECTIONFROMTEXT';
ST_GEOMETRYCOLLECTIONFROMWKB: 'ST_GEOMETRYCOLLECTIONFROMWKB';
ST_GEOMETRYFROMTEXT: 'ST_GEOMETRYFROMTEXT';
ST_GEOMETRYFROMWKB: 'ST_GEOMETRYFROMWKB';
ST_GEOMETRYN: 'ST_GEOMETRYN';
ST_GEOMETRYTYPE: 'ST_GEOMETRYTYPE';
ST_GEOMFROMTEXT: 'ST_GEOMFROMTEXT';
ST_GEOMFROMWKB: 'ST_GEOMFROMWKB';
ST_INTERIORRINGN: 'ST_INTERIORRINGN';
ST_INTERSECTION: 'ST_INTERSECTION';
ST_INTERSECTS: 'ST_INTERSECTS';
ST_ISCLOSED: 'ST_ISCLOSED';
ST_ISEMPTY: 'ST_ISEMPTY';
ST_ISSIMPLE: 'ST_ISSIMPLE';
ST_LINEFROMTEXT: 'ST_LINEFROMTEXT';
ST_LINEFROMWKB: 'ST_LINEFROMWKB';
ST_LINESTRINGFROMTEXT: 'ST_LINESTRINGFROMTEXT';
ST_LINESTRINGFROMWKB: 'ST_LINESTRINGFROMWKB';
ST_NUMGEOMETRIES: 'ST_NUMGEOMETRIES';
ST_NUMINTERIORRING: 'ST_NUMINTERIORRING';
ST_NUMINTERIORRINGS: 'ST_NUMINTERIORRINGS';
ST_NUMPOINTS: 'ST_NUMPOINTS';
ST_OVERLAPS: 'ST_OVERLAPS';
ST_POINTFROMTEXT: 'ST_POINTFROMTEXT';
ST_POINTFROMWKB: 'ST_POINTFROMWKB';
ST_POINTN: 'ST_POINTN';
ST_POLYFROMTEXT: 'ST_POLYFROMTEXT';
ST_POLYFROMWKB: 'ST_POLYFROMWKB';
ST_POLYGONFROMTEXT: 'ST_POLYGONFROMTEXT';
ST_POLYGONFROMWKB: 'ST_POLYGONFROMWKB';
ST_SRID: 'ST_SRID';
ST_STARTPOINT: 'ST_STARTPOINT';
ST_SYMDIFFERENCE: 'ST_SYMDIFFERENCE';
ST_TOUCHES: 'ST_TOUCHES';
ST_UNION: 'ST_UNION';
ST_WITHIN: 'ST_WITHIN';
ST_X: 'ST_X';
ST_Y: 'ST_Y';
SUBDATE: 'SUBDATE';
SUBSTRING_INDEX: 'SUBSTRING_INDEX';
SUBTIME: 'SUBTIME';
SYSTEM_USER: 'SYSTEM_USER';
TAN: 'TAN';
TIMEDIFF: 'TIMEDIFF';
TIMESTAMPADD: 'TIMESTAMPADD';
TIMESTAMPDIFF: 'TIMESTAMPDIFF';
TIME_FORMAT: 'TIME_FORMAT';
TIME_TO_SEC: 'TIME_TO_SEC';
TOUCHES: 'TOUCHES';
TO_BASE64: 'TO_BASE64';
TO_DAYS: 'TO_DAYS';
TO_SECONDS: 'TO_SECONDS';
TP_CONNECTION_ADMIN: 'TP_CONNECTION_ADMIN';
UCASE: 'UCASE';
UNCOMPRESS: 'UNCOMPRESS';
UNCOMPRESSED_LENGTH: 'UNCOMPRESSED_LENGTH';
UNHEX: 'UNHEX';
UNIX_TIMESTAMP: 'UNIX_TIMESTAMP';
UPDATEXML: 'UPDATEXML';
UPPER: 'UPPER';
UUID: 'UUID';
UUID_SHORT: 'UUID_SHORT';
VALIDATE_PASSWORD_STRENGTH: 'VALIDATE_PASSWORD_STRENGTH';
VERSION: 'VERSION';
WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS: 'WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS';
WEEKDAY: 'WEEKDAY';
WEEKOFYEAR: 'WEEKOFYEAR';
WEIGHT_STRING: 'WEIGHT_STRING';
WITHIN: 'WITHIN';
YEARWEEK: 'YEARWEEK';
Y_FUNCTION: 'Y';
X_FUNCTION: 'X';
// Operators
// Operators. Assigns
VAR_ASSIGN: ':=';
PLUS_ASSIGN: '+=';
MINUS_ASSIGN: '-=';
MULT_ASSIGN: '*=';
DIV_ASSIGN: '/=';
MOD_ASSIGN: '%=';
AND_ASSIGN: '&=';
XOR_ASSIGN: '^=';
OR_ASSIGN: '|=';
// Operators. Arithmetics
STAR: '*';
DIVIDE: '/';
MODULE: '%';
PLUS: '+';
MINUS: '-';
DIV: 'DIV';
MOD: 'MOD';
// Operators. Comparation
EQUAL_SYMBOL: '=';
GREATER_SYMBOL: '>';
LESS_SYMBOL: '<';
EXCLAMATION_SYMBOL: '!';
// Operators. Bit
BIT_NOT_OP: '~';
BIT_OR_OP: '|';
BIT_AND_OP: '&';
BIT_XOR_OP: '^';
// Constructors symbols
DOT: '.';
LR_BRACKET: '(';
RR_BRACKET: ')';
COMMA: ',';
SEMI: ';';
AT_SIGN: '@';
ZERO_DECIMAL: '0';
ONE_DECIMAL: '1';
TWO_DECIMAL: '2';
SINGLE_QUOTE_SYMB: '\'';
DOUBLE_QUOTE_SYMB: '"';
REVERSE_QUOTE_SYMB: '`';
COLON_SYMB: ':';
fragment QUOTE_SYMB
: SINGLE_QUOTE_SYMB | DOUBLE_QUOTE_SYMB | REVERSE_QUOTE_SYMB
;
// Charsets
CHARSET_REVERSE_QOUTE_STRING: '`' CHARSET_NAME '`';
// File's sizes
FILESIZE_LITERAL: DEC_DIGIT+ ('K'|'M'|'G'|'T');
// Literal Primitives
START_NATIONAL_STRING_LITERAL: 'N' SQUOTA_STRING;
STRING_LITERAL: DQUOTA_STRING | SQUOTA_STRING | BQUOTA_STRING;
DECIMAL_LITERAL: DEC_DIGIT+;
HEXADECIMAL_LITERAL: 'X' '\'' (HEX_DIGIT HEX_DIGIT)+ '\''
| '0X' HEX_DIGIT+;
REAL_LITERAL: (DEC_DIGIT+)? '.' DEC_DIGIT+
| DEC_DIGIT+ '.' EXPONENT_NUM_PART
| (DEC_DIGIT+)? '.' (DEC_DIGIT+ EXPONENT_NUM_PART)
| DEC_DIGIT+ EXPONENT_NUM_PART;
NULL_SPEC_LITERAL: '\\' 'N';
BIT_STRING: BIT_STRING_L;
STRING_CHARSET_NAME: '_' CHARSET_NAME;
// Hack for dotID
// Prevent recognize string: .123somelatin AS ((.123), FLOAT_LITERAL), ((somelatin), ID)
// it must recoginze: .123somelatin AS ((.), DOT), (123somelatin, ID)
DOT_ID: '.' ID_LITERAL;
// Identifiers
ID: ID_LITERAL;
// DOUBLE_QUOTE_ID: '"' ~'"'+ '"';
REVERSE_QUOTE_ID: BQUOTA_STRING;
STRING_USER_NAME: (
SQUOTA_STRING | DQUOTA_STRING
| BQUOTA_STRING | ID_LITERAL
) '@'
(
SQUOTA_STRING | DQUOTA_STRING
| BQUOTA_STRING | ID_LITERAL
| IP_ADDRESS
);
IP_ADDRESS: (
[0-9]+ '.' [0-9.]+
| [0-9A-F]* ':' [0-9A-F]* ':' [0-9A-F:]+
);
LOCAL_ID: '@'
(
[A-Z0-9._$\u0080-\uFFFF]+
| SQUOTA_STRING
| DQUOTA_STRING
| BQUOTA_STRING
);
GLOBAL_ID: '@' '@'
(
[A-Z0-9._$\u0080-\uFFFF]+
| BQUOTA_STRING
);
// Fragments for Literal primitives
fragment CHARSET_NAME: ARMSCII8 | ASCII | BIG5 | BINARY | CP1250
| CP1251 | CP1256 | CP1257 | CP850
| CP852 | CP866 | CP932 | DEC8 | EUCJPMS
| EUCKR | GB2312 | GBK | GEOSTD8 | GREEK
| HEBREW | HP8 | KEYBCS2 | KOI8R | KOI8U
| LATIN1 | LATIN2 | LATIN5 | LATIN7
| MACCE | MACROMAN | SJIS | SWE7 | TIS620
| UCS2 | UJIS | UTF16 | UTF16LE | UTF32
| UTF8 | UTF8MB3 | UTF8MB4;
fragment EXPONENT_NUM_PART: 'E' [-+]? DEC_DIGIT+;
fragment ID_LITERAL: [A-Z_$0-9\u0080-\uFFFF]*?[A-Z_$\u0080-\uFFFF]+?[A-Z_$0-9\u0080-\uFFFF]*;
fragment DQUOTA_STRING: '"' ( '\\'. | '""' | ~('"'| '\\') )* '"';
fragment SQUOTA_STRING: '\'' ('\\'. | '\'\'' | ~('\'' | '\\'))* '\'';
fragment BQUOTA_STRING: '`' ( ~'`' | '``' )* '`';
fragment HEX_DIGIT: [0-9A-F];
fragment DEC_DIGIT: [0-9];
fragment BIT_STRING_L: 'B' '\'' [01]+ '\'';
// Last tokens must generate Errors
ERROR_RECONGNIGION: . -> channel(ERRORCHANNEL);