feat: add generic and plsql basic parser file

This commit is contained in:
xiaowei
2020-09-11 17:39:10 +08:00
parent 68800312d3
commit f85163892a
83 changed files with 326433 additions and 155590 deletions

View File

@ -23,7 +23,7 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
*/
lexer grammar MySQLLexer;
lexer grammar SqlLexer;
channels { MYSQLCOMMENT, ERRORCHANNEL }

View File

@ -23,13 +23,15 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
*/
parser grammar MySQLParser;
parser grammar SqlParser;
options { tokenVocab=MySQLLexer; }
options { tokenVocab=SqlLexer; }
// Top Level Description
program: statement EOF;
statement
: sqlStatements? MINUSMINUS? EOF
;

View File

@ -1,4 +0,0 @@
grammar helloSQL;
r: 'hello' ID ;
ID: [a-z]+ ;
WS: [ \t\r\n]+ -> skip ;

1540
src/grammar/hive/HiveSql.g4 Normal file

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,435 @@
lexer grammar HiveSqlLexer;
// Lexer rules
T_ACTION : A C T I O N ;
T_ADD2 : A D D ;
T_ALL : A L L ;
T_ALLOCATE : A L L O C A T E ;
T_ALTER : A L T E R ;
T_AND : A N D ;
T_ANSI_NULLS : A N S I '_' N U L L S ;
T_ANSI_PADDING : A N S I '_' P A D D I N G ;
T_AS : A S ;
T_ASC : A S C ;
T_ASSOCIATE : A S S O C I A T E ;
T_AT : A T ;
T_AUTO_INCREMENT : A U T O '_' I N C R E M E N T ;
T_AVG : A V G ;
T_BATCHSIZE : B A T C H S I Z E ;
T_BEGIN : B E G I N ;
T_BETWEEN : B E T W E E N ;
T_BIGINT : B I G I N T ;
T_BINARY_DOUBLE : B I N A R Y '_' D O U B L E ;
T_BINARY_FLOAT : B I N A R Y '_' F L O A T ;
T_BINARY_INTEGER : B I N A R Y '_' I N T E G E R ;
T_BIT : B I T ;
T_BODY : B O D Y ;
T_BREAK : B R E A K ;
T_BY : B Y ;
T_BYTE : B Y T E ;
T_CALL : C A L L ;
T_CALLER : C A L L E R ;
T_CASCADE : C A S C A D E ;
T_CASE : C A S E ;
T_CASESPECIFIC : C A S E S P E C I F I C ;
T_CAST : C A S T ;
T_CHAR : C H A R ;
T_CHARACTER : C H A R A C T E R ;
T_CHARSET : C H A R S E T ;
T_CLIENT : C L I E N T ;
T_CLOSE : C L O S E ;
T_CLUSTERED : C L U S T E R E D;
T_CMP : C M P ;
T_COLLECT : C O L L E C T ;
T_COLLECTION : C O L L E C T I O N ;
T_COLUMN : C O L U M N ;
T_COMMENT : C O M M E N T;
T_CONSTANT : C O N S T A N T ;
T_COMMIT : C O M M I T ;
T_COMPRESS : C O M P R E S S ;
T_CONCAT : C O N C A T;
T_CONDITION : C O N D I T I O N ;
T_CONSTRAINT : C O N S T R A I N T ;
T_CONTINUE : C O N T I N U E ;
T_COPY : C O P Y ;
T_COUNT : C O U N T ;
T_COUNT_BIG : C O U N T '_' B I G;
T_CREATE : C R E A T E ;
T_CREATION : C R E A T I O N ;
T_CREATOR : C R E A T O R ;
T_CS : C S;
T_CURRENT : C U R R E N T ;
T_CURRENT_SCHEMA : C U R R E N T '_' S C H E M A ;
T_CURSOR : C U R S O R ;
T_DATABASE : D A T A B A S E ;
T_DATA : D A T A ;
T_DATE : D A T E ;
T_DATETIME : D A T E T I M E ;
T_DAY : D A Y ;
T_DAYS : D A Y S ;
T_DEC : D E C ;
T_DECIMAL : D E C I M A L ;
T_DECLARE : D E C L A R E ;
T_DEFAULT : D E F A U L T ;
T_DEFERRED : D E F E R R E D ;
T_DEFINED : D E F I N E D ;
T_DEFINER : D E F I N E R ;
T_DEFINITION : D E F I N I T I O N ;
T_DELETE : D E L E T E ;
T_DELIMITED : D E L I M I T E D ;
T_DELIMITER : D E L I M I T E R ;
T_DESC : D E S C ;
T_DESCRIBE : D E S C R I B E ;
T_DIAGNOSTICS : D I A G N O S T I C S ;
T_DIR : D I R ;
T_DIRECTORY : D I R E C T O R Y ;
T_DISTINCT : D I S T I N C T ;
T_DISTRIBUTE : D I S T R I B U T E ;
T_DO : D O ;
T_DOUBLE : D O U B L E ;
T_DROP : D R O P ;
T_DYNAMIC : D Y N A M I C ;
T_ELSE : E L S E ;
T_ELSEIF : E L S E I F ;
T_ELSIF : E L S I F ;
T_ENABLE : E N A B L E ;
T_END : E N D ;
T_ENGINE : E N G I N E ;
T_ESCAPED : E S C A P E D ;
T_EXCEPT : E X C E P T ;
T_EXEC : E X E C ;
T_EXECUTE : E X E C U T E ;
T_EXCEPTION : E X C E P T I O N ;
T_EXCLUSIVE : E X C L U S I V E ;
T_EXISTS : E X I S T S ;
T_EXIT : E X I T ;
T_FALLBACK : F A L L B A C K ;
T_FALSE : F A L S E ;
T_FETCH : F E T C H ;
T_FIELDS : F I E L D S ;
T_FILE : F I L E ;
T_FILES : F I L E S ;
T_FLOAT : F L O A T ;
T_FOR : F O R ;
T_FOREIGN : F O R E I G N ;
T_FORMAT : F O R M A T ;
T_FOUND : F O U N D ;
T_FROM : F R O M ;
T_FULL : F U L L ;
T_FUNCTION : F U N C T I O N ;
T_GET : G E T ;
T_GLOBAL : G L O B A L ;
T_GO : G O ;
T_GRANT : G R A N T ;
T_GROUP : G R O U P ;
T_HANDLER : H A N D L E R ;
T_HASH : H A S H ;
T_HAVING : H A V I N G ;
T_HDFS : H D F S ;
T_HIVE : H I V E ;
T_HOST : H O S T ;
T_IDENTITY : I D E N T I T Y ;
T_IF : I F ;
T_IGNORE : I G N O R E ;
T_IMMEDIATE : I M M E D I A T E ;
T_IN : I N ;
T_INCLUDE : I N C L U D E ;
T_INDEX : I N D E X ;
T_INITRANS : I N I T R A N S ;
T_INNER : I N N E R ;
T_INOUT : I N O U T;
T_INSERT : I N S E R T ;
T_INT : I N T ;
T_INT2 : I N T '2';
T_INT4 : I N T '4';
T_INT8 : I N T '8';
T_INTEGER : I N T E G E R ;
T_INTERSECT : I N T E R S E C T ;
T_INTERVAL : I N T E R V A L ;
T_INTO : I N T O ;
T_INVOKER : I N V O K E R ;
T_IS : I S ;
T_ISOPEN : I S O P E N ;
T_ITEMS : I T E M S ;
T_JOIN : J O I N ;
T_KEEP : K E E P;
T_KEY : K E Y ;
T_KEYS : K E Y S ;
T_LANGUAGE : L A N G U A G E ;
T_LEAVE : L E A V E ;
T_LEFT : L E F T ;
T_LIKE : L I K E ;
T_LIMIT : L I M I T ;
T_LINES : L I N E S ;
T_LOCAL : L O C A L ;
T_LOCATION : L O C A T I O N ;
T_LOCATOR : L O C A T O R ;
T_LOCATORS : L O C A T O R S ;
T_LOCKS : L O C K S ;
T_LOG : L O G ;
T_LOGGED : L O G G E D ;
T_LOGGING : L O G G I N G ;
T_LOOP : L O O P ;
T_MAP : M A P ;
T_MATCHED : M A T C H E D ;
T_MAX : M A X ;
T_MAXTRANS : M A X T R A N S ;
T_MERGE : M E R G E ;
T_MESSAGE_TEXT : M E S S A G E '_' T E X T ;
T_MICROSECOND : M I C R O S E C O N D ;
T_MICROSECONDS : M I C R O S E C O N D S;
T_MIN : M I N ;
T_MULTISET : M U L T I S E T ;
T_NCHAR : N C H A R ;
T_NEW : N E W ;
T_NVARCHAR : N V A R C H A R ;
T_NO : N O ;
T_NOCOUNT : N O C O U N T ;
T_NOCOMPRESS : N O C O M P R E S S ;
T_NOLOGGING : N O L O G G I N G ;
T_NONE : N O N E ;
T_NOT : N O T ;
T_NOTFOUND : N O T F O U N D ;
T_NULL : N U L L ;
T_NUMERIC : N U M E R I C ;
T_NUMBER : N U M B E R ;
T_OBJECT : O B J E C T ;
T_OFF : O F F ;
T_ON : O N ;
T_ONLY : O N L Y ;
T_OPEN : O P E N ;
T_OR : O R ;
T_ORDER : O R D E R;
T_OUT : O U T ;
T_OUTER : O U T E R ;
T_OVER : O V E R ;
T_OVERWRITE : O V E R W R I T E ;
T_OWNER : O W N E R ;
T_PACKAGE : P A C K A G E ;
T_PARTITION : P A R T I T I O N ;
T_PCTFREE : P C T F R E E ;
T_PCTUSED : P C T U S E D ;
T_PLS_INTEGER : P L S '_' I N T E G E R ;
T_PRECISION : P R E C I S I O N ;
T_PRESERVE : P R E S E R V E ;
T_PRIMARY : P R I M A R Y ;
T_PRINT : P R I N T ;
T_PROC : P R O C ;
T_PROCEDURE : P R O C E D U R E ;
T_QUALIFY : Q U A L I F Y ;
T_QUERY_BAND : Q U E R Y '_' B A N D ;
T_QUIT : Q U I T ;
T_QUOTED_IDENTIFIER : Q U O T E D '_' I D E N T I F I E R ;
T_RAISE : R A I S E ;
T_REAL : R E A L ;
T_REFERENCES : R E F E R E N C E S ;
T_REGEXP : R E G E X P ;
T_REPLACE : R E P L A C E ;
T_RESIGNAL : R E S I G N A L ;
T_RESTRICT : R E S T R I C T ;
T_RESULT : R E S U L T ;
T_RESULT_SET_LOCATOR : R E S U L T '_' S E T '_' L O C A T O R ;
T_RETURN : R E T U R N ;
T_RETURNS : R E T U R N S ;
T_REVERSE : R E V E R S E ;
T_RIGHT : R I G H T ;
T_RLIKE : R L I K E ;
T_ROLE : R O L E ;
T_ROLLBACK : R O L L B A C K ;
T_ROW : R O W ;
T_ROWS : R O W S ;
T_ROWTYPE : R O W T Y P E ;
T_ROW_COUNT : R O W '_' C O U N T ;
T_RR : R R;
T_RS : R S ;
T_PWD : P W D ;
T_TRIM : T R I M ;
T_SCHEMA : S C H E M A ;
T_SECOND : S E C O N D ;
T_SECONDS : S E C O N D S;
T_SECURITY : S E C U R I T Y ;
T_SEGMENT : S E G M E N T ;
T_SEL : S E L ;
T_SELECT : S E L E C T ;
T_SET : S E T ;
T_SESSION : S E S S I O N ;
T_SESSIONS : S E S S I O N S ;
T_SETS : S E T S;
T_SHARE : S H A R E ;
T_SIGNAL : S I G N A L ;
T_SIMPLE_DOUBLE : S I M P L E '_' D O U B L E ;
T_SIMPLE_FLOAT : S I M P L E '_' F L O A T ;
T_SIMPLE_INTEGER : S I M P L E '_' I N T E G E R ;
T_SMALLDATETIME : S M A L L D A T E T I M E ;
T_SMALLINT : S M A L L I N T ;
T_SQL : S Q L ;
T_SQLEXCEPTION : S Q L E X C E P T I O N ;
T_SQLINSERT : S Q L I N S E R T ;
T_SQLSTATE : S Q L S T A T E ;
T_SQLWARNING : S Q L W A R N I N G ;
T_STATS : S T A T S ;
T_STATISTICS : S T A T I S T I C S ;
T_STEP : S T E P ;
T_STORAGE : S T O R A G E ;
T_STORED : S T O R E D ;
T_STRING : S T R I N G ;
T_SUBDIR : S U B D I R ;
T_SUBSTRING : S U B S T R I N G ;
T_SUM : S U M ;
T_SUMMARY : S U M M A R Y ;
T_SYS_REFCURSOR : S Y S '_' R E F C U R S O R ;
T_TABLE : T A B L E ;
T_TABLESPACE : T A B L E S P A C E ;
T_TEMPORARY : T E M P O R A R Y ;
T_TERMINATED : T E R M I N A T E D ;
T_TEXTIMAGE_ON : T E X T I M A G E '_' O N ;
T_THEN : T H E N ;
T_TIMESTAMP : T I M E S T A M P ;
T_TINYINT : T I N Y I N T ;
T_TITLE : T I T L E ;
T_TO : T O ;
T_TOP : T O P ;
T_TRANSACTION : T R A N S A C T I O N ;
T_TRUE : T R U E ;
T_TRUNCATE : T R U N C A T E;
T_TYPE : T Y P E ;
T_UNION : U N I O N ;
T_UNIQUE : U N I Q U E ;
T_UPDATE : U P D A T E ;
T_UR : U R ;
T_USE : U S E ;
T_USING : U S I N G ;
T_VALUE : V A L U E ;
T_VALUES : V A L U E S ;
T_VAR : V A R ;
T_VARCHAR : V A R C H A R ;
T_VARCHAR2 : V A R C H A R '2' ;
T_VARYING : V A R Y I N G ;
T_VOLATILE : V O L A T I L E ;
T_WHEN : W H E N ;
T_WHERE : W H E R E ;
T_WHILE : W H I L E ;
T_WITH : W I T H ;
T_WITHOUT : W I T H O U T ;
T_WORK : W O R K ;
T_XACT_ABORT : X A C T '_' A B O R T ;
T_XML : X M L ;
T_YES : Y E S ;
// Functions with specific syntax
T_ACTIVITY_COUNT : A C T I V I T Y '_' C O U N T ;
T_CUME_DIST : C U M E '_' D I S T ;
T_CURRENT_DATE : C U R R E N T '_' D A T E ;
T_CURRENT_TIMESTAMP : C U R R E N T '_' T I M E S T A M P ;
T_CURRENT_USER : C U R R E N T '_' U S E R ;
T_DENSE_RANK : D E N S E '_' R A N K ;
T_FIRST_VALUE : F I R S T '_' V A L U E;
T_LAG : L A G ;
T_LAST_VALUE : L A S T '_' V A L U E;
T_LEAD : L E A D ;
T_MAX_PART_STRING : M A X '_' P A R T '_' S T R I N G ;
T_MIN_PART_STRING : M I N '_' P A R T '_' S T R I N G ;
T_MAX_PART_INT : M A X '_' P A R T '_' I N T ;
T_MIN_PART_INT : M I N '_' P A R T '_' I N T ;
T_MAX_PART_DATE : M A X '_' P A R T '_' D A T E ;
T_MIN_PART_DATE : M I N '_' P A R T '_' D A T E ;
T_PART_COUNT : P A R T '_' C O U N T ;
T_PART_LOC : P A R T '_' L O C ;
T_RANK : R A N K ;
T_ROW_NUMBER : R O W '_' N U M B E R;
T_STDEV : S T D E V ;
T_SYSDATE : S Y S D A T E ;
T_VARIANCE : V A R I A N C E ;
T_USER : U S E R;
T_ADD : '+' ;
T_COLON : ':' ;
T_COMMA : ',' ;
T_PIPE : '||' ;
T_DIV : '/' ;
T_DOT2 : '..' ;
T_EQUAL : '=' ;
T_EQUAL2 : '==' ;
T_NOTEQUAL : '<>' ;
T_NOTEQUAL2 : '!=' ;
T_GREATER : '>' ;
T_GREATEREQUAL : '>=' ;
T_LESS : '<' ;
T_LESSEQUAL : '<=' ;
T_MUL : '*' ;
T_OPEN_B : '{' ;
T_OPEN_P : '(' ;
T_OPEN_SB : '[' ;
T_CLOSE_B : '}' ;
T_CLOSE_P : ')' ;
T_CLOSE_SB : ']' ;
T_SEMICOLON : ';' ;
T_SUB : '-' ;
L_ID : L_ID_PART // Identifier
;
L_S_STRING : '\'' (('\'' '\'') | ('\\' '\'') | ~('\''))* '\'' // Single quoted string literal
;
L_D_STRING : '"' (L_STR_ESC_D | .)*? '"' // Double quoted string literal
;
L_INT : L_DIGIT+ ; // Integer
L_DEC : L_DIGIT+ '.' ~'.' L_DIGIT* // Decimal number
| '.' L_DIGIT+
;
L_WS : L_BLANK+ -> skip ; // Whitespace
L_M_COMMENT : '/*' .*? '*/' -> channel(HIDDEN) ; // Multiline comment
L_S_COMMENT : ('--' | '//') .*? '\r'? '\n' -> channel(HIDDEN) ; // Single line comment
L_FILE : ([a-zA-Z] ':' '\\'?)? L_ID ('\\' L_ID)* // File path (a/b/c Linux path causes conflicts with division operator and handled at parser level)
;
L_LABEL : ([a-zA-Z] | L_DIGIT | '_')* ':'
;
fragment
L_ID_PART :
[a-zA-Z] ([a-zA-Z] | L_DIGIT | '_')* // Identifier part
| '$' '{' .*? '}'
| ('_' | '@' | ':' | '#' | '$') ([a-zA-Z] | L_DIGIT | '_' | '@' | ':' | '#' | '$')+ // (at least one char must follow special char)
| '"' .*? '"' // Quoted identifiers
| '[' .*? ']'
| '`' .*? '`'
;
fragment
L_STR_ESC_D : // Double quoted string escape sequence
'""' | '\\"'
;
fragment
L_DIGIT : [0-9] // Digit
;
fragment
L_BLANK : (' ' | '\t' | '\r' | '\n')
;
// Support case-insensitive keywords and allowing case-sensitive identifiers
fragment A : ('a'|'A') ;
fragment B : ('b'|'B') ;
fragment C : ('c'|'C') ;
fragment D : ('d'|'D') ;
fragment E : ('e'|'E') ;
fragment F : ('f'|'F') ;
fragment G : ('g'|'G') ;
fragment H : ('h'|'H') ;
fragment I : ('i'|'I') ;
fragment J : ('j'|'J') ;
fragment K : ('k'|'K') ;
fragment L : ('l'|'L') ;
fragment M : ('m'|'M') ;
fragment N : ('n'|'N') ;
fragment O : ('o'|'O') ;
fragment P : ('p'|'P') ;
fragment Q : ('q'|'Q') ;
fragment R : ('r'|'R') ;
fragment S : ('s'|'S') ;
fragment T : ('t'|'T') ;
fragment U : ('u'|'U') ;
fragment V : ('v'|'V') ;
fragment W : ('w'|'W') ;
fragment X : ('x'|'X') ;
fragment Y : ('y'|'Y') ;
fragment Z : ('z'|'Z') ;

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,3 @@
# Spark SQL
Grammar file from: <https://github.com/apache/spark/blob/master/sql/catalyst/src/main/antlr4/org/apache/spark/sql/catalyst/parser/SqlBase.g4>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1,902 +0,0 @@
/*
T-SQL (Transact-SQL, MSSQL) grammar.
The MIT License (MIT).
Copyright (c) 2017, Mark Adams (madams51703@gmail.com)
Copyright (c) 2015-2017, Ivan Kochurkin (kvanttt@gmail.com), Positive Technologies.
Copyright (c) 2016, Scott Ure (scott@redstormsoftware.com).
Copyright (c) 2016, Rui Zhang (ruizhang.ccs@gmail.com).
Copyright (c) 2016, Marcus Henriksson (kuseman80@gmail.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 TSqlLexer;
// Basic keywords (from https://msdn.microsoft.com/en-us/library/ms189822.aspx)
ABSENT: 'ABSENT';
ADD: 'ADD';
AES: 'AES';
ALL: 'ALL';
ALLOW_CONNECTIONS: 'ALLOW_CONNECTIONS';
ALLOW_MULTIPLE_EVENT_LOSS: 'ALLOW_MULTIPLE_EVENT_LOSS';
ALLOW_SINGLE_EVENT_LOSS: 'ALLOW_SINGLE_EVENT_LOSS';
ALTER: 'ALTER';
AND: 'AND';
ANONYMOUS: 'ANONYMOUS';
ANY: 'ANY';
APPEND: 'APPEND';
APPLICATION: 'APPLICATION';
AS: 'AS';
ASC: 'ASC';
ASYMMETRIC: 'ASYMMETRIC';
ASYNCHRONOUS_COMMIT: 'ASYNCHRONOUS_COMMIT';
AUTHORIZATION: 'AUTHORIZATION';
AUTHENTICATION: 'AUTHENTICATION';
AUTOMATED_BACKUP_PREFERENCE: 'AUTOMATED_BACKUP_PREFERENCE';
AUTOMATIC: 'AUTOMATIC';
AVAILABILITY_MODE: 'AVAILABILITY_MODE';
BACKSLASH: '\\';
BACKUP: 'BACKUP';
BEFORE: 'BEFORE';
BEGIN: 'BEGIN';
BETWEEN: 'BETWEEN';
BLOCK: 'BLOCK';
BLOCKSIZE: 'BLOCKSIZE';
BLOCKING_HIERARCHY: 'BLOCKING_HIERARCHY';
BREAK: 'BREAK';
BROWSE: 'BROWSE';
BUFFER: 'BUFFER';
BUFFERCOUNT: 'BUFFERCOUNT';
BULK: 'BULK';
BY: 'BY';
CACHE: 'CACHE';
CALLED: 'CALLED';
CASCADE: 'CASCADE';
CASE: 'CASE';
CERTIFICATE: 'CERTIFICATE';
CHANGETABLE: 'CHANGETABLE';
CHANGES: 'CHANGES';
CHECK: 'CHECK';
CHECKPOINT: 'CHECKPOINT';
CHECK_POLICY: 'CHECK_POLICY';
CHECK_EXPIRATION: 'CHECK_EXPIRATION';
CLASSIFIER_FUNCTION: 'CLASSIFIER_FUNCTION';
CLOSE: 'CLOSE';
CLUSTER: 'CLUSTER';
CLUSTERED: 'CLUSTERED';
COALESCE: 'COALESCE';
COLLATE: 'COLLATE';
COLUMN: 'COLUMN';
COMPRESSION: 'COMPRESSION';
COMMIT: 'COMMIT';
COMPUTE: 'COMPUTE';
CONFIGURATION: 'CONFIGURATION';
CONSTRAINT: 'CONSTRAINT';
CONTAINMENT: 'CONTAINMENT';
CONTAINS: 'CONTAINS';
CONTAINSTABLE: 'CONTAINSTABLE';
CONTEXT: 'CONTEXT';
CONTINUE: 'CONTINUE';
CONTINUE_AFTER_ERROR: 'CONTINUE_AFTER_ERROR';
CONTRACT: 'CONTRACT';
CONTRACT_NAME: 'CONTRACT_NAME';
CONVERSATION: 'CONVERSATION';
CONVERT: 'TRY_'? 'CONVERT';
COPY_ONLY: 'COPY_ONLY';
CREATE: 'CREATE';
CROSS: 'CROSS';
CURRENT: 'CURRENT';
CURRENT_DATE: 'CURRENT_DATE';
CURRENT_TIME: 'CURRENT_TIME';
CURRENT_TIMESTAMP: 'CURRENT_TIMESTAMP';
CURRENT_USER: 'CURRENT_USER';
CURSOR: 'CURSOR';
CYCLE: 'CYCLE';
DATA_COMPRESSION: 'DATA_COMPRESSION';
DATA_SOURCE: 'DATA_SOURCE';
DATABASE: 'DATABASE';
DATABASE_MIRRORING: 'DATABASE_MIRRORING';
DBCC: 'DBCC';
DEALLOCATE: 'DEALLOCATE';
DECLARE: 'DECLARE';
DEFAULT: 'DEFAULT';
DEFAULT_DATABASE: 'DEFAULT_DATABASE';
DEFAULT_SCHEMA: 'DEFAULT_SCHEMA';
DELETE: 'DELETE';
DENY: 'DENY';
DESC: 'DESC';
DIAGNOSTICS: 'DIAGNOSTICS';
DIFFERENTIAL: 'DIFFERENTIAL';
DISK: 'DISK';
DISTINCT: 'DISTINCT';
DISTRIBUTED: 'DISTRIBUTED';
DOUBLE: 'DOUBLE';
DOUBLE_BACK_SLASH: '\\\\';
DOUBLE_FORWARD_SLASH: '//';
DROP: 'DROP';
DTC_SUPPORT: 'DTC_SUPPORT';
DUMP: 'DUMP';
ELSE: 'ELSE';
ENABLED: 'ENABLED';
END: 'END';
ENDPOINT: 'ENDPOINT';
ERRLVL: 'ERRLVL';
ESCAPE: 'ESCAPE';
ERROR: 'ERROR';
EVENT: 'EVENT';
EVENTDATA: 'EVENTDATA' '(' ')';
EVENT_RETENTION_MODE: 'EVENT_RETENTION_MODE';
EXCEPT: 'EXCEPT';
EXECUTABLE_FILE: 'EXECUTABLE_FILE';
EXECUTE: 'EXEC' 'UTE'?;
EXISTS: 'EXISTS';
EXPIREDATE: 'EXPIREDATE';
EXIT: 'EXIT';
EXTENSION: 'EXTENSION';
EXTERNAL: 'EXTERNAL';
EXTERNAL_ACCESS: 'EXTERNAL_ACCESS';
FAILOVER: 'FAILOVER';
FAILURECONDITIONLEVEL: 'FAILURECONDITIONLEVEL';
FAN_IN: 'FAN_IN';
FETCH: 'FETCH';
FILE: 'FILE';
FILENAME: 'FILENAME';
FILLFACTOR: 'FILLFACTOR';
FILE_SNAPSHOT: 'FILE_SNAPSHOT';
FOR: 'FOR';
FORCESEEK: 'FORCESEEK';
FORCE_SERVICE_ALLOW_DATA_LOSS: 'FORCE_SERVICE_ALLOW_DATA_LOSS';
FOREIGN: 'FOREIGN';
FREETEXT: 'FREETEXT';
FREETEXTTABLE: 'FREETEXTTABLE';
FROM: 'FROM';
FULL: 'FULL';
FUNCTION: 'FUNCTION';
GET: 'GET';
GOTO: 'GOTO';
GOVERNOR: 'GOVERNOR';
GRANT: 'GRANT';
GROUP: 'GROUP';
HAVING: 'HAVING';
HASHED: 'HASHED';
HEALTHCHECKTIMEOUT: 'HEALTHCHECKTIMEOUT';
IDENTITY: 'IDENTITY';
IDENTITYCOL: 'IDENTITYCOL';
IDENTITY_INSERT: 'IDENTITY_INSERT';
IF: 'IF';
IIF: 'IIF';
IN: 'IN';
INCLUDE: 'INCLUDE';
INCREMENT: 'INCREMENT';
INDEX: 'INDEX';
INFINITE: 'INFINITE';
INIT: 'INIT';
INNER: 'INNER';
INSERT: 'INSERT';
INSTEAD: 'INSTEAD';
INTERSECT: 'INTERSECT';
INTO: 'INTO';
IPV4_ADDR: [']? IPV4_OCTECT DOT IPV4_OCTECT DOT IPV4_OCTECT DOT IPV4_OCTECT [']?;
IPV6_ADDR: [']?[0-9A-F]?[0-9A-F]?[0-9A-F]?[0-9A-F]?[:][0-9A-F]?[0-9A-F]?[0-9A-F]?[0-9A-F]?[:][0-9A-F]?[0-9A-F]?[0-9A-F]?[0-9A-F]?[:][0-9A-F]?[0-9A-F]?[0-9A-F]?[0-9A-F]?[:][0-9A-F]?[0-9A-F]?[0-9A-F]?[0-9A-F]?[:][0-9A-F]?[0-9A-F]?[0-9A-F]?[0-9A-F]?[:][0-9A-F]?[0-9A-F]?[0-9A-F]?[0-9A-F]?[:][0-9A-F]?[0-9A-F]?[0-9A-F]?[0-9A-F]?[']?;
IS: 'IS';
ISNULL: 'ISNULL';
JOIN: 'JOIN';
KERBEROS: 'KERBEROS';
KEY: 'KEY';
KEY_PATH: 'KEY_PATH';
KEY_STORE_PROVIDER_NAME: 'KEY_STORE_PROVIDER_NAME';
KILL: 'KILL';
LANGUAGE: 'LANGUAGE';
LEFT: 'LEFT';
LIBRARY: 'LIBRARY';
LIFETIME: 'LIFETIME';
LIKE: 'LIKE';
LINENO: 'LINENO';
LINUX: 'LINUX';
LISTENER_IP: 'LISTENER_IP';
LISTENER_PORT: 'LISTENER_PORT';
LOAD: 'LOAD';
LOCAL_SERVICE_NAME: 'LOCAL_SERVICE_NAME';
LOG: 'LOG';
MATCHED: 'MATCHED';
MASTER: 'MASTER';
MAX_MEMORY: 'MAX_MEMORY';
MAXTRANSFER: 'MAXTRANSFER';
MAXVALUE: 'MAXVALUE';
MAX_DISPATCH_LATENCY: 'MAX_DISPATCH_LATENCY';
MAX_EVENT_SIZE: 'MAX_EVENT_SIZE';
MAX_SIZE: 'MAX_SIZE';
MAX_OUTSTANDING_IO_PER_VOLUME: 'MAX_OUTSTANDING_IO_PER_VOLUME';
MEDIADESCRIPTION: 'MEDIADESCRIPTION';
MEDIANAME: 'MEDIANAME';
MEMBER: 'MEMBER';
MEMORY_PARTITION_MODE: 'MEMORY_PARTITION_MODE';
MERGE: 'MERGE';
MESSAGE_FORWARDING: 'MESSAGE_FORWARDING';
MESSAGE_FORWARD_SIZE: 'MESSAGE_FORWARD_SIZE';
MINVALUE: 'MINVALUE';
MIRROR: 'MIRROR';
MUST_CHANGE: 'MUST_CHANGE';
NATIONAL: 'NATIONAL';
NEGOTIATE: 'NEGOTIATE';
NOCHECK: 'NOCHECK';
NOFORMAT: 'NOFORMAT';
NOINIT: 'NOINIT';
NONCLUSTERED: 'NONCLUSTERED';
NONE: 'NONE';
NOREWIND: 'NOREWIND';
NOSKIP: 'NOSKIP';
NOUNLOAD: 'NOUNLOAD';
NO_CHECKSUM: 'NO_CHECKSUM';
NO_COMPRESSION: 'NO_COMPRESSION';
NO_EVENT_LOSS: 'NO_EVENT_LOSS';
NOT: 'NOT';
NOTIFICATION: 'NOTIFICATION';
NTLM: 'NTLM';
NULL: 'NULL';
NULLIF: 'NULLIF';
OF: 'OF';
OFF: 'OFF';
OFFSETS: 'OFFSETS';
OLD_PASSWORD: 'OLD_PASSWORD';
ON: 'ON';
ON_FAILURE: 'ON_FAILURE';
OPEN: 'OPEN';
OPENDATASOURCE: 'OPENDATASOURCE';
OPENQUERY: 'OPENQUERY';
OPENROWSET: 'OPENROWSET';
OPENXML: 'OPENXML';
OPTION: 'OPTION';
OR: 'OR';
ORDER: 'ORDER';
OUTER: 'OUTER';
OVER: 'OVER';
PAGE: 'PAGE';
PARAM_NODE: 'PARAM_NODE';
PARTIAL: 'PARTIAL';
PASSWORD: 'PASSWORD';
PERCENT: 'PERCENT';
PERMISSION_SET: 'PERMISSION_SET';
PER_CPU: 'PER_CPU';
PER_DB: 'PER_DB';
PER_NODE: 'PER_NODE';
PIVOT: 'PIVOT';
PLAN: 'PLAN';
PLATFORM: 'PLATFORM';
POLICY: 'POLICY';
PRECISION: 'PRECISION';
PREDICATE: 'PREDICATE';
PRIMARY: 'PRIMARY';
PRINT: 'PRINT';
PROC: 'PROC';
PROCEDURE: 'PROCEDURE';
PROCESS: 'PROCESS';
PUBLIC: 'PUBLIC';
PYTHON: 'PYTHON';
R: 'R';
RAISERROR: 'RAISERROR';
RAW: 'RAW';
READ: 'READ';
READTEXT: 'READTEXT';
READ_WRITE_FILEGROUPS: 'READ_WRITE_FILEGROUPS';
RECONFIGURE: 'RECONFIGURE';
REFERENCES: 'REFERENCES';
REGENERATE: 'REGENERATE';
RELATED_CONVERSATION: 'RELATED_CONVERSATION';
RELATED_CONVERSATION_GROUP: 'RELATED_CONVERSATION_GROUP';
REPLICATION: 'REPLICATION';
REQUIRED: 'REQUIRED';
RESET: 'RESET';
RESTART: 'RESTART';
RESTORE: 'RESTORE';
RESTRICT: 'RESTRICT';
RESUME: 'RESUME';
RETAINDAYS: 'RETAINDAYS';
RETURN: 'RETURN';
RETURNS: 'RETURNS';
REVERT: 'REVERT';
REVOKE: 'REVOKE';
REWIND: 'REWIND';
RIGHT: 'RIGHT';
ROLLBACK: 'ROLLBACK';
ROLE: 'ROLE';
ROWCOUNT: 'ROWCOUNT';
ROWGUIDCOL: 'ROWGUIDCOL';
RSA_512: 'RSA_512';
RSA_1024: 'RSA_1024';
RSA_2048: 'RSA_2048';
RSA_3072: 'RSA_3072';
RSA_4096: 'RSA_4096';
SAFETY: 'SAFETY';
RULE: 'RULE';
SAFE: 'SAFE';
SAVE: 'SAVE';
SCHEDULER: 'SCHEDULER';
SCHEMA: 'SCHEMA';
SCHEME: 'SCHEME';
SECURITYAUDIT: 'SECURITYAUDIT';
SELECT: 'SELECT';
SEMANTICKEYPHRASETABLE: 'SEMANTICKEYPHRASETABLE';
SEMANTICSIMILARITYDETAILSTABLE: 'SEMANTICSIMILARITYDETAILSTABLE';
SEMANTICSIMILARITYTABLE: 'SEMANTICSIMILARITYTABLE';
SERVER: 'SERVER';
SERVICE: 'SERVICE';
SERVICE_BROKER: 'SERVICE_BROKER';
SERVICE_NAME: 'SERVICE_NAME';
SESSION: 'SESSION';
SESSION_USER: 'SESSION_USER';
SET: 'SET';
SETUSER: 'SETUSER';
SHUTDOWN: 'SHUTDOWN';
SID: 'SID';
SKIP_KEYWORD: 'SKIP';
SOFTNUMA: 'SOFTNUMA';
SOME: 'SOME';
SOURCE: 'SOURCE';
SPECIFICATION: 'SPECIFICATION';
SPLIT: 'SPLIT';
SQLDUMPERFLAGS: 'SQLDUMPERFLAGS';
SQLDUMPERPATH: 'SQLDUMPERPATH';
SQLDUMPERTIMEOUT: 'SQLDUMPERTIMEOUTS';
STATISTICS: 'STATISTICS';
STATE: 'STATE';
STATS: 'STATS';
START: 'START';
STARTED: 'STARTED';
STARTUP_STATE: 'STARTUP_STATE';
STOP: 'STOP';
STOPPED: 'STOPPED';
STOP_ON_ERROR: 'STOP_ON_ERROR';
SUPPORTED: 'SUPPORTED';
SYSTEM_USER: 'SYSTEM_USER';
TABLE: 'TABLE';
TABLESAMPLE: 'TABLESAMPLE';
TAPE: 'TAPE';
TARGET: 'TARGET';
TCP: 'TCP';
TEXTSIZE: 'TEXTSIZE';
THEN: 'THEN';
TO: 'TO';
TOP: 'TOP';
TRACK_CAUSALITY: 'TRACK_CAUSALITY';
TRAN: 'TRAN';
TRANSACTION: 'TRANSACTION';
TRANSFER: 'TRANSFER';
TRIGGER: 'TRIGGER';
TRUNCATE: 'TRUNCATE';
TSEQUAL: 'TSEQUAL';
UNCHECKED: 'UNCHECKED';
UNION: 'UNION';
UNIQUE: 'UNIQUE';
UNLOCK: 'UNLOCK';
UNPIVOT: 'UNPIVOT';
UNSAFE: 'UNSAFE';
UPDATE: 'UPDATE';
UPDATETEXT: 'UPDATETEXT';
URL: 'URL';
USE: 'USE';
USED: 'USED';
USER: 'USER';
VALUES: 'VALUES';
VARYING: 'VARYING';
VERBOSELOGGING: 'VERBOSELOGGING';
VIEW: 'VIEW';
VISIBILITY: 'VISIBILITY';
WAITFOR: 'WAITFOR';
WHEN: 'WHEN';
WHERE: 'WHERE';
WHILE: 'WHILE';
WINDOWS: 'WINDOWS';
WITH: 'WITH';
WITHIN: 'WITHIN';
WITHOUT: 'WITHOUT';
WITNESS: 'WITNESS';
WRITETEXT: 'WRITETEXT';
// Additional keywords. They can be id, please keep them in sync with the parser.
ABSOLUTE: 'ABSOLUTE';
ACCENT_SENSITIVITY: 'ACCENT_SENSITIVITY';
ACTION: 'ACTION';
ACTIVATION: 'ACTIVATION';
ACTIVE: 'ACTIVE';
ADDRESS: 'ADDRESS';
AES_128: 'AES_128';
AES_192: 'AES_192';
AES_256: 'AES_256';
AFFINITY: 'AFFINITY';
AFTER: 'AFTER';
AGGREGATE: 'AGGREGATE';
ALGORITHM: 'ALGORITHM';
ALLOW_ENCRYPTED_VALUE_MODIFICATIONS: 'ALLOW_ENCRYPTED_VALUE_MODIFICATIONS';
ALLOW_SNAPSHOT_ISOLATION: 'ALLOW_SNAPSHOT_ISOLATION';
ALLOWED: 'ALLOWED';
ANSI_NULL_DEFAULT: 'ANSI_NULL_DEFAULT';
ANSI_NULLS: 'ANSI_NULLS';
ANSI_PADDING: 'ANSI_PADDING';
ANSI_WARNINGS: 'ANSI_WARNINGS';
APPLICATION_LOG: 'APPLICATION_LOG';
APPLY: 'APPLY';
ARITHABORT: 'ARITHABORT';
ASSEMBLY: 'ASSEMBLY';
AUDIT: 'AUDIT';
AUDIT_GUID: 'AUDIT_GUID';
AUTO: 'AUTO';
AUTO_CLEANUP: 'AUTO_CLEANUP';
AUTO_CLOSE: 'AUTO_CLOSE';
AUTO_CREATE_STATISTICS: 'AUTO_CREATE_STATISTICS';
AUTO_SHRINK: 'AUTO_SHRINK';
AUTO_UPDATE_STATISTICS: 'AUTO_UPDATE_STATISTICS';
AUTO_UPDATE_STATISTICS_ASYNC: 'AUTO_UPDATE_STATISTICS_ASYNC';
AVAILABILITY: 'AVAILABILITY';
AVG: 'AVG';
BACKUP_PRIORITY: 'BACKUP_PRIORITY';
BEGIN_DIALOG: 'BEGIN_DIALOG';
BIGINT: 'BIGINT';
BINARY_BASE64: 'BINARY BASE64';
BINARY_CHECKSUM: 'BINARY_CHECKSUM';
BINDING: 'BINDING';
BLOB_STORAGE: 'BLOB_STORAGE';
BROKER: 'BROKER';
BROKER_INSTANCE: 'BROKER_INSTANCE';
BULK_LOGGED: 'BULK_LOGGED';
CALLER: 'CALLER';
CAP_CPU_PERCENT: 'CAP_CPU_PERCENT';
CAST: 'TRY_'? 'CAST';
CATALOG: 'CATALOG';
CATCH: 'CATCH';
CHANGE_RETENTION: 'CHANGE_RETENTION';
CHANGE_TRACKING: 'CHANGE_TRACKING';
CHECKSUM: 'CHECKSUM';
CHECKSUM_AGG: 'CHECKSUM_AGG';
CLEANUP: 'CLEANUP';
COLLECTION: 'COLLECTION';
COLUMN_MASTER_KEY: 'COLUMN_MASTER_KEY';
COMMITTED: 'COMMITTED';
COMPATIBILITY_LEVEL: 'COMPATIBILITY_LEVEL';
CONCAT: 'CONCAT';
CONCAT_NULL_YIELDS_NULL: 'CONCAT_NULL_YIELDS_NULL';
CONTENT: 'CONTENT';
CONTROL: 'CONTROL';
COOKIE: 'COOKIE';
COUNT: 'COUNT';
COUNT_BIG: 'COUNT_BIG';
COUNTER: 'COUNTER';
CPU: 'CPU';
CREATE_NEW: 'CREATE_NEW';
CREATION_DISPOSITION: 'CREATION_DISPOSITION';
CREDENTIAL: 'CREDENTIAL';
CRYPTOGRAPHIC: 'CRYPTOGRAPHIC';
CURSOR_CLOSE_ON_COMMIT: 'CURSOR_CLOSE_ON_COMMIT';
CURSOR_DEFAULT: 'CURSOR_DEFAULT';
DATA: 'DATA';
DATE_CORRELATION_OPTIMIZATION: 'DATE_CORRELATION_OPTIMIZATION';
DATEADD: 'DATEADD';
DATEDIFF: 'DATEDIFF';
DATENAME: 'DATENAME';
DATEPART: 'DATEPART';
DAYS: 'DAYS';
DB_CHAINING: 'DB_CHAINING';
DB_FAILOVER: 'DB_FAILOVER';
DECRYPTION: 'DECRYPTION';
DEFAULT_DOUBLE_QUOTE: ["]'DEFAULT'["];
DEFAULT_FULLTEXT_LANGUAGE: 'DEFAULT_FULLTEXT_LANGUAGE';
DEFAULT_LANGUAGE: 'DEFAULT_LANGUAGE';
DELAY: 'DELAY';
DELAYED_DURABILITY: 'DELAYED_DURABILITY';
DELETED: 'DELETED';
DENSE_RANK: 'DENSE_RANK';
DEPENDENTS: 'DEPENDENTS';
DES: 'DES';
DESCRIPTION: 'DESCRIPTION';
DESX: 'DESX';
DHCP: 'DHCP';
DIALOG: 'DIALOG';
DIRECTORY_NAME: 'DIRECTORY_NAME';
DISABLE: 'DISABLE';
DISABLE_BROKER: 'DISABLE_BROKER';
DISABLED: 'DISABLED';
DISK_DRIVE: [A-Z][:];
DOCUMENT: 'DOCUMENT';
DYNAMIC: 'DYNAMIC';
ELEMENTS: 'ELEMENTS';
EMERGENCY: 'EMERGENCY';
EMPTY: 'EMPTY';
ENABLE: 'ENABLE';
ENABLE_BROKER: 'ENABLE_BROKER';
ENCRYPTED_VALUE: 'ENCRYPTED_VALUE';
ENCRYPTION: 'ENCRYPTION';
ENDPOINT_URL: 'ENDPOINT_URL';
ERROR_BROKER_CONVERSATIONS: 'ERROR_BROKER_CONVERSATIONS';
EXCLUSIVE: 'EXCLUSIVE';
EXECUTABLE: 'EXECUTABLE';
EXIST: 'EXIST';
EXPAND: 'EXPAND';
EXPIRY_DATE: 'EXPIRY_DATE';
EXPLICIT: 'EXPLICIT';
FAIL_OPERATION: 'FAIL_OPERATION';
FAILOVER_MODE: 'FAILOVER_MODE';
FAILURE: 'FAILURE';
FAILURE_CONDITION_LEVEL: 'FAILURE_CONDITION_LEVEL';
FAST: 'FAST';
FAST_FORWARD: 'FAST_FORWARD';
FILEGROUP: 'FILEGROUP';
FILEGROWTH: 'FILEGROWTH';
FILEPATH: 'FILEPATH';
FILESTREAM: 'FILESTREAM';
FILTER: 'FILTER';
FIRST: 'FIRST';
FIRST_VALUE: 'FIRST_VALUE';
FOLLOWING: 'FOLLOWING';
FORCE: 'FORCE';
FORCE_FAILOVER_ALLOW_DATA_LOSS: 'FORCE_FAILOVER_ALLOW_DATA_LOSS';
FORCED: 'FORCED';
FORMAT: 'FORMAT';
FORWARD_ONLY: 'FORWARD_ONLY';
FULLSCAN: 'FULLSCAN';
FULLTEXT: 'FULLTEXT';
GB: 'GB';
GETDATE: 'GETDATE';
GETUTCDATE: 'GETUTCDATE';
GLOBAL: 'GLOBAL';
GO: 'GO';
GROUP_MAX_REQUESTS: 'GROUP_MAX_REQUESTS';
GROUPING: 'GROUPING';
GROUPING_ID: 'GROUPING_ID';
HADR: 'HADR';
HASH: 'HASH';
HEALTH_CHECK_TIMEOUT: 'HEALTH_CHECK_TIMEOUT';
HIGH: 'HIGH';
HONOR_BROKER_PRIORITY: 'HONOR_BROKER_PRIORITY';
HOURS: 'HOURS';
IDENTITY_VALUE: 'IDENTITY_VALUE';
IGNORE_NONCLUSTERED_COLUMNSTORE_INDEX: 'IGNORE_NONCLUSTERED_COLUMNSTORE_INDEX';
IMMEDIATE: 'IMMEDIATE';
IMPERSONATE: 'IMPERSONATE';
IMPORTANCE: 'IMPORTANCE';
INCLUDE_NULL_VALUES: 'INCLUDE_NULL_VALUES';
INCREMENTAL: 'INCREMENTAL';
INITIATOR: 'INITIATOR';
INPUT: 'INPUT';
INSENSITIVE: 'INSENSITIVE';
INSERTED: 'INSERTED';
INT: 'INT';
IP: 'IP';
ISOLATION: 'ISOLATION';
JOB: 'JOB';
JSON: 'JSON';
KB: 'KB';
KEEP: 'KEEP';
KEEPFIXED: 'KEEPFIXED';
KEY_SOURCE: 'KEY_SOURCE';
KEYS: 'KEYS';
KEYSET: 'KEYSET';
LAG: 'LAG';
LAST: 'LAST';
LAST_VALUE: 'LAST_VALUE';
LEAD: 'LEAD';
LEVEL: 'LEVEL';
LIST: 'LIST';
LISTENER: 'LISTENER';
LISTENER_URL: 'LISTENER_URL';
LOB_COMPACTION: 'LOB_COMPACTION';
LOCAL: 'LOCAL';
LOCATION: 'LOCATION';
LOCK: 'LOCK';
LOCK_ESCALATION: 'LOCK_ESCALATION';
LOGIN: 'LOGIN';
LOOP: 'LOOP';
LOW: 'LOW';
MANUAL: 'MANUAL';
MARK: 'MARK';
MATERIALIZED: 'MATERIALIZED';
MAX: 'MAX';
MAX_CPU_PERCENT: 'MAX_CPU_PERCENT';
MAX_DOP: 'MAX_DOP';
MAX_FILES: 'MAX_FILES';
MAX_IOPS_PER_VOLUME: 'MAX_IOPS_PER_VOLUME';
MAX_MEMORY_PERCENT: 'MAX_MEMORY_PERCENT';
MAX_PROCESSES: 'MAX_PROCESSES';
MAX_QUEUE_READERS: 'MAX_QUEUE_READERS';
MAX_ROLLOVER_FILES: 'MAX_ROLLOVER_FILES';
MAXDOP: 'MAXDOP';
MAXRECURSION: 'MAXRECURSION';
MAXSIZE: 'MAXSIZE';
MB: 'MB';
MEDIUM: 'MEDIUM';
MEMORY_OPTIMIZED_DATA: 'MEMORY_OPTIMIZED_DATA';
MESSAGE: 'MESSAGE';
MIN: 'MIN';
MIN_ACTIVE_ROWVERSION: 'MIN_ACTIVE_ROWVERSION';
MIN_CPU_PERCENT: 'MIN_CPU_PERCENT';
MIN_IOPS_PER_VOLUME: 'MIN_IOPS_PER_VOLUME';
MIN_MEMORY_PERCENT: 'MIN_MEMORY_PERCENT';
MINUTES: 'MINUTES';
MIRROR_ADDRESS: 'MIRROR_ADDRESS';
MIXED_PAGE_ALLOCATION: 'MIXED_PAGE_ALLOCATION';
MODE: 'MODE';
MODIFY: 'MODIFY';
MOVE: 'MOVE';
MULTI_USER: 'MULTI_USER';
NAME: 'NAME';
NESTED_TRIGGERS: 'NESTED_TRIGGERS';
NEW_ACCOUNT: 'NEW_ACCOUNT';
NEW_BROKER: 'NEW_BROKER';
NEW_PASSWORD: 'NEW_PASSWORD';
NEXT: 'NEXT';
NO: 'NO';
NO_TRUNCATE: 'NO_TRUNCATE';
NO_WAIT: 'NO_WAIT';
NOCOUNT: 'NOCOUNT';
NODES: 'NODES';
NOEXPAND: 'NOEXPAND';
NON_TRANSACTED_ACCESS: 'NON_TRANSACTED_ACCESS';
NORECOMPUTE: 'NORECOMPUTE';
NORECOVERY: 'NORECOVERY';
NOWAIT: 'NOWAIT';
NTILE: 'NTILE';
NUMANODE: 'NUMANODE';
NUMBER: 'NUMBER';
NUMERIC_ROUNDABORT: 'NUMERIC_ROUNDABORT';
OBJECT: 'OBJECT';
OFFLINE: 'OFFLINE';
OFFSET: 'OFFSET';
OLD_ACCOUNT: 'OLD_ACCOUNT';
ONLINE: 'ONLINE';
ONLY: 'ONLY';
OPEN_EXISTING: 'OPEN_EXISTING';
OPTIMISTIC: 'OPTIMISTIC';
OPTIMIZE: 'OPTIMIZE';
OUT: 'OUT';
OUTPUT: 'OUTPUT';
OVERRIDE: 'OVERRIDE';
OWNER: 'OWNER';
PAGE_VERIFY: 'PAGE_VERIFY';
PARAMETERIZATION: 'PARAMETERIZATION';
PARTITION: 'PARTITION';
PARTITIONS: 'PARTITIONS';
PARTNER: 'PARTNER';
PATH: 'PATH';
POISON_MESSAGE_HANDLING: 'POISON_MESSAGE_HANDLING';
POOL: 'POOL';
PORT: 'PORT';
PRECEDING: 'PRECEDING';
PRIMARY_ROLE: 'PRIMARY_ROLE';
PRIOR: 'PRIOR';
PRIORITY: 'PRIORITY';
PRIORITY_LEVEL: 'PRIORITY_LEVEL';
PRIVATE: 'PRIVATE';
PRIVATE_KEY: 'PRIVATE_KEY';
PRIVILEGES: 'PRIVILEGES';
PROCEDURE_NAME: 'PROCEDURE_NAME';
PROPERTY: 'PROPERTY';
PROVIDER: 'PROVIDER';
PROVIDER_KEY_NAME: 'PROVIDER_KEY_NAME';
QUERY: 'QUERY';
QUEUE: 'QUEUE';
QUEUE_DELAY: 'QUEUE_DELAY';
QUOTED_IDENTIFIER: 'QUOTED_IDENTIFIER';
RANGE: 'RANGE';
RANK: 'RANK';
RC2: 'RC2';
RC4: 'RC4';
RC4_128: 'RC4_128';
READ_COMMITTED_SNAPSHOT: 'READ_COMMITTED_SNAPSHOT';
READ_ONLY: 'READ_ONLY';
READ_ONLY_ROUTING_LIST: 'READ_ONLY_ROUTING_LIST';
READ_WRITE: 'READ_WRITE';
READONLY: 'READONLY';
REBUILD: 'REBUILD';
RECEIVE: 'RECEIVE';
RECOMPILE: 'RECOMPILE';
RECOVERY: 'RECOVERY';
RECURSIVE_TRIGGERS: 'RECURSIVE_TRIGGERS';
RELATIVE: 'RELATIVE';
REMOTE: 'REMOTE';
REMOTE_SERVICE_NAME: 'REMOTE_SERVICE_NAME';
REMOVE: 'REMOVE';
REORGANIZE: 'REORGANIZE';
REPEATABLE: 'REPEATABLE';
REPLICA: 'REPLICA';
REQUEST_MAX_CPU_TIME_SEC: 'REQUEST_MAX_CPU_TIME_SEC';
REQUEST_MAX_MEMORY_GRANT_PERCENT: 'REQUEST_MAX_MEMORY_GRANT_PERCENT';
REQUEST_MEMORY_GRANT_TIMEOUT_SEC: 'REQUEST_MEMORY_GRANT_TIMEOUT_SEC';
REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT: 'REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT';
RESERVE_DISK_SPACE: 'RESERVE_DISK_SPACE';
RESOURCE: 'RESOURCE';
RESOURCE_MANAGER_LOCATION: 'RESOURCE_MANAGER_LOCATION';
RESTRICTED_USER: 'RESTRICTED_USER';
RETENTION: 'RETENTION';
ROBUST: 'ROBUST';
ROOT: 'ROOT';
ROUTE: 'ROUTE';
ROW: 'ROW';
ROW_NUMBER: 'ROW_NUMBER';
ROWGUID: 'ROWGUID';
ROWS: 'ROWS';
SAMPLE: 'SAMPLE';
SCHEMABINDING: 'SCHEMABINDING';
SCOPED: 'SCOPED';
SCROLL: 'SCROLL';
SCROLL_LOCKS: 'SCROLL_LOCKS';
SEARCH: 'SEARCH';
SECONDARY: 'SECONDARY';
SECONDARY_ONLY: 'SECONDARY_ONLY';
SECONDARY_ROLE: 'SECONDARY_ROLE';
SECONDS: 'SECONDS';
SECRET: 'SECRET';
SECURITY: 'SECURITY';
SECURITY_LOG: 'SECURITY_LOG';
SEEDING_MODE: 'SEEDING_MODE';
SELF: 'SELF';
SEMI_SENSITIVE: 'SEMI_SENSITIVE';
SEND: 'SEND';
SENT: 'SENT';
SEQUENCE: 'SEQUENCE';
SERIALIZABLE: 'SERIALIZABLE';
SESSION_TIMEOUT: 'SESSION_TIMEOUT';
SETERROR: 'SETERROR';
SHARE: 'SHARE';
SHOWPLAN: 'SHOWPLAN';
SIGNATURE: 'SIGNATURE';
SIMPLE: 'SIMPLE';
SINGLE_USER: 'SINGLE_USER';
SIZE: 'SIZE';
SMALLINT: 'SMALLINT';
SNAPSHOT: 'SNAPSHOT';
SPATIAL_WINDOW_MAX_CELLS: 'SPATIAL_WINDOW_MAX_CELLS';
STANDBY: 'STANDBY';
START_DATE: 'START_DATE';
STATIC: 'STATIC';
STATS_STREAM: 'STATS_STREAM';
STATUS: 'STATUS';
STATUSONLY: 'STATUSONLY';
STDEV: 'STDEV';
STDEVP: 'STDEVP';
STOPLIST: 'STOPLIST';
STRING_AGG: 'STRING_AGG';
STUFF: 'STUFF';
SUBJECT: 'SUBJECT';
SUBSCRIPTION: 'SUBSCRIPTION';
SUM: 'SUM';
SUSPEND: 'SUSPEND';
SYMMETRIC: 'SYMMETRIC';
SYNCHRONOUS_COMMIT: 'SYNCHRONOUS_COMMIT';
SYNONYM: 'SYNONYM';
SYSTEM: 'SYSTEM';
TAKE: 'TAKE';
TARGET_RECOVERY_TIME: 'TARGET_RECOVERY_TIME';
TB: 'TB';
TEXTIMAGE_ON: 'TEXTIMAGE_ON';
THROW: 'THROW';
TIES: 'TIES';
TIME: 'TIME';
TIMEOUT: 'TIMEOUT';
TIMER: 'TIMER';
TINYINT: 'TINYINT';
TORN_PAGE_DETECTION: 'TORN_PAGE_DETECTION';
TRANSFORM_NOISE_WORDS: 'TRANSFORM_NOISE_WORDS';
TRIPLE_DES: 'TRIPLE_DES';
TRIPLE_DES_3KEY: 'TRIPLE_DES_3KEY';
TRUSTWORTHY: 'TRUSTWORTHY';
TRY: 'TRY';
TSQL: 'TSQL';
TWO_DIGIT_YEAR_CUTOFF: 'TWO_DIGIT_YEAR_CUTOFF';
TYPE: 'TYPE';
TYPE_WARNING: 'TYPE_WARNING';
UNBOUNDED: 'UNBOUNDED';
UNCOMMITTED: 'UNCOMMITTED';
UNKNOWN: 'UNKNOWN';
UNLIMITED: 'UNLIMITED';
UOW: 'UOW';
USING: 'USING';
VALID_XML: 'VALID_XML';
VALIDATION: 'VALIDATION';
VALUE: 'VALUE';
VAR: 'VAR';
VARP: 'VARP';
VIEW_METADATA: 'VIEW_METADATA';
VIEWS: 'VIEWS';
WAIT: 'WAIT';
WELL_FORMED_XML: 'WELL_FORMED_XML';
WITHOUT_ARRAY_WRAPPER: 'WITHOUT_ARRAY_WRAPPER';
WORK: 'WORK';
WORKLOAD: 'WORKLOAD';
XML: 'XML';
XMLDATA: 'XMLDATA';
XMLNAMESPACES: 'XMLNAMESPACES';
XMLSCHEMA: 'XMLSCHEMA';
XSINIL: 'XSINIL';
DOLLAR_ACTION: '$ACTION';
SPACE: [ \t\r\n]+ -> skip;
// https://docs.microsoft.com/en-us/sql/t-sql/language-elements/slash-star-comment-transact-sql
COMMENT: '/*' (COMMENT | .)*? '*/' -> channel(HIDDEN);
LINE_COMMENT: '--' ~[\r\n]* -> channel(HIDDEN);
// TODO: ID can be not only Latin.
DOUBLE_QUOTE_ID: '"' ~'"'+ '"';
SINGLE_QUOTE: '\'';
SQUARE_BRACKET_ID: '[' ~']'+ ']';
LOCAL_ID: '@' ([A-Z_$@#0-9] | FullWidthLetter)+;
DECIMAL: DEC_DIGIT+;
ID: ( [A-Z_#] | FullWidthLetter) ( [A-Z_#$@0-9] | FullWidthLetter )*;
QUOTED_URL: '\''([A-Z][A-Z]+[:]) '//'(([A-Z]+[.]|[A-Z]+)|IPV4_ADDR) [:] DECIMAL '\'';
QUOTED_HOST_AND_PORT:'\''(([A-Z]+[.]|[A-Z]+)|IPV4_ADDR) ([:] DECIMAL) '\'';
STRING: 'N'? '\'' (~'\'' | '\'\'')* '\'';
BINARY: '0' 'X' HEX_DIGIT*;
FLOAT: DEC_DOT_DEC;
REAL: (DECIMAL | DEC_DOT_DEC) ('E' [+-]? DEC_DIGIT+);
EQUAL: '=';
GREATER: '>';
LESS: '<';
EXCLAMATION: '!';
PLUS_ASSIGN: '+=';
MINUS_ASSIGN: '-=';
MULT_ASSIGN: '*=';
DIV_ASSIGN: '/=';
MOD_ASSIGN: '%=';
AND_ASSIGN: '&=';
XOR_ASSIGN: '^=';
OR_ASSIGN: '|=';
DOUBLE_BAR: '||';
DOT: '.';
UNDERLINE: '_';
AT: '@';
SHARP: '#';
DOLLAR: '$';
LR_BRACKET: '(';
RR_BRACKET: ')';
COMMA: ',';
SEMI: ';';
COLON: ':';
STAR: '*';
DIVIDE: '/';
MODULE: '%';
PLUS: '+';
MINUS: '-';
BIT_NOT: '~';
BIT_OR: '|';
BIT_AND: '&';
BIT_XOR: '^';
fragment LETTER: [A-Z_];
fragment IPV6_OCTECT: [0-9A-F][0-9A-F][0-9A-F][0-9A-F];
IPV4_OCTECT: [0-9]?[0-9]?[0-9];
fragment DEC_DOT_DEC: (DEC_DIGIT+ '.' DEC_DIGIT+ | DEC_DIGIT+ '.' | '.' DEC_DIGIT+);
fragment HEX_DIGIT: [0-9A-F];
fragment DEC_DIGIT: [0-9];
fragment FullWidthLetter
: '\u00c0'..'\u00d6'
| '\u00d8'..'\u00f6'
| '\u00f8'..'\u00ff'
| '\u0100'..'\u1fff'
| '\u2c00'..'\u2fff'
| '\u3040'..'\u318f'
| '\u3300'..'\u337f'
| '\u3400'..'\u3fff'
| '\u4e00'..'\u9fff'
| '\ua000'..'\ud7ff'
| '\uf900'..'\ufaff'
| '\uff00'..'\ufff0'
// | '\u10000'..'\u1F9FF' //not support four bytes chars
// | '\u20000'..'\u2FA1F'
;

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff