refactor: migrate antlr4 v4.12.0 to antlr4ts(4.9.0) (#106)

* build: ignore gen folder

* refactor: remove useless code

* fix: correct the Javascript usage in grammar

* refactor: move to antlr4ts

* fix: remove useless

* fix: update grammars for javascript target

* refactor: migrate to antlr4ts

* refactor: migrate to antlr4ts

* refactor: implements ParserErrorListener

* fix: rename the  start reserved word

* refactor: remove unused import

* refactor: migrate to antlr4ts

* test: update the expects of test cases

* refactor: migrate hive to antlr4ts

* refactor: update the incompatible syntax for antlr4ts

* refactor: migrate pgsql grammar to antlr4ts, increasing tests

* refactor: migrate the plsql to antlr4ts

* build: remove unused config

* build: migrate to antlr4ts

* build: migrate ts-jest to @swc/jest

* refactor: migrate to anltr4ts

* build: migrate ts-jest to @swc/jest
This commit is contained in:
Ziv
2023-05-30 14:44:03 +08:00
committed by GitHub
parent 793ff6ef0e
commit 34f64e6bea
104 changed files with 436945 additions and 419757 deletions

File diff suppressed because it is too large Load Diff

View File

@ -1,441 +1,553 @@
/**
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file distributed with
this work for additional information regarding copyright ownership.
The ASF licenses this file to You under the Apache License, Version 2.0
(the "License"); you may not use this file except in compliance with
the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
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 ;
options { caseInsensitive = true; }
// 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;
// Keywords
KW_ABORT : 'ABORT';
KW_ACTIVATE : 'ACTIVATE';
KW_ACTIVE : 'ACTIVE';
KW_ADD : 'ADD';
KW_ADMIN : 'ADMIN';
KW_AFTER : 'AFTER';
KW_ALL : 'ALL';
KW_ALLOC_FRACTION : 'ALLOC_FRACTION';
KW_ALTER : 'ALTER';
KW_ANALYZE : 'ANALYZE';
KW_AND : 'AND';
KW_ANTI : 'ANTI';
KW_ANY : 'ANY';
KW_APPLICATION : 'APPLICATION';
KW_ARCHIVE : 'ARCHIVE';
KW_ARRAY : 'ARRAY';
KW_AS : 'AS';
KW_ASC : 'ASC';
KW_AST : 'AST';
KW_AT : 'AT';
KW_AUTHORIZATION : 'AUTHORIZATION';
KW_AUTOCOMMIT : 'AUTOCOMMIT';
KW_BATCH : 'KW_BATCH';
KW_BEFORE : 'BEFORE';
KW_BETWEEN : 'BETWEEN';
KW_BIGINT : 'BIGINT';
KW_BINARY : 'BINARY';
KW_BOOLEAN : 'BOOLEAN';
KW_BOTH : 'BOTH';
KW_BUCKET : 'BUCKET';
KW_BUCKETS : 'BUCKETS';
KW_BY : 'BY';
KW_CACHE : 'CACHE';
KW_CASCADE : 'CASCADE';
KW_CASE : 'CASE';
KW_CAST : 'CAST';
KW_CBO : 'CBO';
KW_CHANGE : 'CHANGE';
KW_CHAR : 'CHAR';
KW_CHECK : 'CHECK';
KW_CLUSTER : 'CLUSTER';
KW_CLUSTERED : 'CLUSTERED';
KW_CLUSTERSTATUS : 'CLUSTERSTATUS';
KW_COLLECTION : 'COLLECTION';
KW_COLUMN : 'COLUMN';
KW_COLUMNS : 'COLUMNS';
KW_COMMENT : 'COMMENT';
KW_COMMIT : 'COMMIT';
KW_COMPACT : 'COMPACT';
KW_COMPACTIONS : 'COMPACTIONS';
KW_COMPACT_ID : 'COMPACTIONID';
KW_COMPUTE : 'COMPUTE';
KW_CONCATENATE : 'CONCATENATE';
KW_CONF : 'CONF';
KW_CONSTRAINT : 'CONSTRAINT';
KW_CONTINUE : 'CONTINUE';
KW_COST : 'COST';
KW_CREATE : 'CREATE';
KW_CRON : 'CRON';
KW_CROSS : 'CROSS';
KW_CUBE : 'CUBE';
KW_CURRENT : 'CURRENT';
KW_CURRENT_DATE : 'CURRENT_DATE';
KW_CURRENT_TIMESTAMP : 'CURRENT_TIMESTAMP';
KW_CURSOR : 'CURSOR';
KW_DATA : 'DATA';
KW_DATABASE : 'DATABASE';
KW_DATABASES : 'DATABASES';
KW_DATACONNECTOR : 'CONNECTOR';
KW_DATACONNECTORS : 'CONNECTORS';
KW_DATE : 'DATE';
KW_DATETIME : 'DATETIME';
KW_DAY : 'DAY' 'S'?;
KW_DAYOFWEEK : 'KW_DAYOFWEEK';
KW_DBPROPERTIES : 'DBPROPERTIES';
KW_DCPROPERTIES : 'DCPROPERTIES';
KW_DDL : 'DDL';
KW_DEBUG : 'DEBUG';
KW_DECIMAL : 'DEC' 'IMAL'? | 'NUMERIC';
KW_DEFAULT : 'DEFAULT';
KW_DEFERRED : 'DEFERRED';
KW_DEFINED : 'DEFINED';
KW_DELETE : 'DELETE';
KW_DELIMITED : 'DELIMITED';
KW_DEPENDENCY : 'DEPENDENCY';
KW_DESC : 'DESC';
KW_DESCRIBE : 'DESCRIBE';
KW_DETAIL : 'DETAIL';
KW_DIRECTORIES : 'DIRECTORIES';
KW_DIRECTORY : 'DIRECTORY';
KW_DISABLE : 'DISABLE' 'D'?;
KW_DISTINCT : 'DISTINCT';
KW_DISTRIBUTE : 'DISTRIBUTE';
KW_DISTRIBUTED : 'DISTRIBUTED';
KW_DO : 'DO';
KW_DOUBLE : 'DOUBLE';
KW_DOW : 'DAYOFWEEK';
KW_DROP : 'DROP';
KW_DUMP : 'DUMP';
KW_ELEM_TYPE : '$ELEM$';
KW_ELSE : 'ELSE';
KW_ENABLE : 'ENABLE' 'D'?;
KW_END : 'END';
KW_ENFORCED : 'ENFORCED';
KW_ESCAPED : 'ESCAPED';
KW_EVERY : 'EVERY';
KW_EXCEPT : 'EXCEPT';
KW_EXCHANGE : 'EXCHANGE';
KW_EXCLUSIVE : 'EXCLUSIVE';
KW_EXECUTE : 'EXECUTE';
KW_EXECUTED : 'EXECUTED';
KW_EXISTS : 'EXISTS';
KW_EXPIRE_SNAPSHOTS : 'EXPIRE_SNAPSHOTS';
KW_EXPLAIN : 'EXPLAIN';
KW_EXPORT : 'EXPORT';
KW_EXPRESSION : 'EXPRESSION';
KW_EXTENDED : 'EXTENDED';
KW_EXTERNAL : 'EXTERNAL';
KW_EXTRACT : 'EXTRACT';
KW_FALSE : 'FALSE';
KW_FETCH : 'FETCH';
KW_FIELDS : 'FIELDS';
KW_FILE : 'FILE';
KW_FILEFORMAT : 'FILEFORMAT';
KW_FIRST : 'FIRST';
KW_FLOAT : 'FLOAT';
KW_FLOOR : 'FLOOR';
KW_FOLLOWING : 'FOLLOWING';
KW_FOR : 'FOR';
KW_FORCE : 'FORCE';
KW_FOREIGN : 'FOREIGN';
KW_FORMAT : 'FORMAT';
KW_FORMATTED : 'FORMATTED';
KW_FROM : 'FROM';
KW_FULL : 'FULL';
KW_FUNCTION : 'FUNCTION';
KW_FUNCTIONS : 'FUNCTIONS';
KW_GRANT : 'GRANT';
KW_GROUP : 'GROUP';
KW_GROUPING : 'GROUPING';
KW_HAVING : 'HAVING';
KW_HOLD_DDLTIME : 'KW_HOLD_DDLTIME';
KW_HOUR : 'HOUR' 'S'?;
KW_IDXPROPERTIES : 'IDXPROPERTIES';
KW_IF : 'IF';
KW_IGNORE : 'IGNORE';
KW_IMPORT : 'IMPORT';
KW_IN : 'IN';
KW_INDEX : 'INDEX';
KW_INDEXES : 'INDEXES';
KW_INNER : 'INNER';
KW_INPATH : 'INPATH';
KW_INPUTDRIVER : 'INPUTDRIVER';
KW_INPUTFORMAT : 'INPUTFORMAT';
KW_INSERT : 'INSERT';
KW_INT : 'INT' 'EGER'?;
KW_INTERSECT : 'INTERSECT';
KW_INTERVAL : 'INTERVAL';
KW_INTO : 'INTO';
KW_IS : 'IS';
KW_ISOLATION : 'ISOLATION';
KW_ITEMS : 'ITEMS';
KW_JAR : 'JAR';
KW_JOIN : 'JOIN';
KW_JOINCOST : 'JOINCOST';
KW_KEY : 'KEY';
KW_KEYS : 'KEYS';
KW_KEY_TYPE : '$KEY$';
KW_KILL : 'KILL';
KW_LAST : 'LAST';
KW_LATERAL : 'LATERAL';
KW_LEADING : 'LEADING';
KW_LEFT : 'LEFT';
KW_LESS : 'LESS';
KW_LEVEL : 'LEVEL';
KW_LIKE : 'LIKE';
KW_LIMIT : 'LIMIT';
KW_LINES : 'LINES';
KW_LOAD : 'LOAD';
KW_LOCAL : 'LOCAL';
KW_LOCATION : 'LOCATION';
KW_LOCK : 'LOCK';
KW_LOCKS : 'LOCKS';
KW_LOGICAL : 'LOGICAL';
KW_LONG : 'LONG';
KW_MACRO : 'MACRO';
KW_MANAGED : 'MANAGED';
KW_MANAGEDLOCATION : 'MANAGEDLOCATION';
KW_MANAGEMENT : 'MANAGEMENT';
KW_MAP : 'MAP';
KW_MAPJOIN : 'MAPJOIN';
KW_MAPPING : 'MAPPING';
KW_MATCHED : 'MATCHED';
KW_MATERIALIZED : 'MATERIALIZED';
KW_MERGE : 'MERGE';
KW_METADATA : 'METADATA';
KW_MINUS : 'MINUS';
KW_MINUTE : 'MINUTE' 'S'?;
KW_MONTH : 'MONTH' 'S'?;
KW_MORE : 'MORE';
KW_MOVE : 'MOVE';
KW_MSCK : 'MSCK';
KW_NONE : 'NONE';
KW_NORELY : 'NORELY';
KW_NOSCAN : 'NOSCAN';
KW_NOT : 'NOT' | '!';
KW_NOVALIDATE : 'NOVALIDATE';
KW_NO_DROP : 'KW_NO_DROP';
KW_NULL : 'NULL';
KW_NULLS : 'NULLS';
KW_OF : 'OF';
KW_OFFLINE : 'KW_OFFLINE';
KW_OFFSET : 'OFFSET';
KW_ON : 'ON';
KW_ONLY : 'ONLY';
KW_OPERATOR : 'OPERATOR';
KW_OPTION : 'OPTION';
KW_OR : 'OR';
KW_ORDER : 'ORDER';
KW_OUT : 'OUT';
KW_OUTER : 'OUTER';
KW_OUTPUTDRIVER : 'OUTPUTDRIVER';
KW_OUTPUTFORMAT : 'OUTPUTFORMAT';
KW_OVER : 'OVER';
KW_OVERWRITE : 'OVERWRITE';
KW_OWNER : 'OWNER';
KW_PARTITION : 'PARTITION';
KW_PARTITIONED : 'PARTITIONED';
KW_PARTITIONS : 'PARTITIONS';
KW_PATH : 'PATH';
KW_PERCENT : 'PERCENT';
KW_PKFK_JOIN : 'PKFK_JOIN';
KW_PLAN : 'PLAN';
KW_PLANS : 'PLANS';
KW_PLUS : 'PLUS';
KW_POOL : 'POOL';
KW_PRECEDING : 'PRECEDING';
KW_PRECISION : 'PRECISION';
KW_PREPARE : 'PREPARE';
KW_PRESERVE : 'PRESERVE';
KW_PRIMARY : 'PRIMARY';
KW_PRINCIPALS : 'PRINCIPALS';
KW_PROCEDURE : 'PROCEDURE';
KW_PROTECTION : 'KW_PROTECTION';
KW_PURGE : 'PURGE';
KW_QUALIFY : 'QUALIFY';
KW_QUARTER : 'QUARTER';
KW_QUERY : 'QUERY';
KW_QUERY_PARALLELISM : 'QUERY_PARALLELISM';
KW_RANGE : 'RANGE';
KW_READ : 'READ';
KW_READONLY : 'KW_READONLY';
KW_READS : 'READS';
KW_REAL : 'REAL';
KW_REBUILD : 'REBUILD';
KW_RECORDREADER : 'RECORDREADER';
KW_RECORDWRITER : 'RECORDWRITER';
KW_REDUCE : 'REDUCE';
KW_REFERENCES : 'REFERENCES';
KW_REGEXP : 'REGEXP';
KW_RELOAD : 'RELOAD';
KW_RELY : 'RELY';
KW_REMOTE : 'REMOTE';
KW_RENAME : 'RENAME';
KW_REOPTIMIZATION : 'REOPTIMIZATION';
KW_REPAIR : 'REPAIR';
KW_REPL : 'REPL';
KW_REPLACE : 'REPLACE';
KW_REPLICATION : 'REPLICATION';
KW_RESOURCE : 'RESOURCE';
KW_RESPECT : 'RESPECT';
KW_RESTRICT : 'RESTRICT';
KW_REVOKE : 'REVOKE';
KW_REWRITE : 'REWRITE';
KW_RIGHT : 'RIGHT';
KW_RLIKE : 'RLIKE';
KW_ROLE : 'ROLE';
KW_ROLES : 'ROLES';
KW_ROLLBACK : 'ROLLBACK';
KW_ROLLUP : 'ROLLUP';
KW_ROW : 'ROW';
KW_ROWS : 'ROWS';
KW_SCHEDULED : 'SCHEDULED';
KW_SCHEDULING_POLICY : 'SCHEDULING_POLICY';
KW_SCHEMA : 'SCHEMA';
KW_SCHEMAS : 'SCHEMAS';
KW_SECOND : 'SECOND' 'S'?;
KW_SELECT : 'SELECT';
KW_SEMI : 'SEMI';
KW_SERDE : 'SERDE';
KW_SERDEPROPERTIES : 'SERDEPROPERTIES';
KW_SERVER : 'SERVER';
KW_SET : 'SET';
KW_SETS : 'SETS';
KW_SET_CURRENT_SNAPSHOT : 'SET_CURRENT_SNAPSHOT';
KW_SHARED : 'SHARED';
KW_SHOW : 'SHOW';
KW_SHOW_DATABASE : 'SHOW_DATABASE';
KW_SKEWED : 'SKEWED';
KW_SMALLINT : 'SMALLINT';
KW_SNAPSHOT : 'SNAPSHOT';
KW_SOME : 'SOME';
KW_SORT : 'SORT';
KW_SORTED : 'SORTED';
KW_SPEC : 'SPEC';
KW_SSL : 'SSL';
KW_START : 'START';
KW_STATISTICS : 'STATISTICS';
KW_STATUS : 'STATUS';
KW_STORED : 'STORED';
KW_STREAMTABLE : 'STREAMTABLE';
KW_STRING : 'STRING';
KW_STRUCT : 'STRUCT';
KW_SUMMARY : 'SUMMARY';
KW_SYNC : 'SYNC';
KW_SYSTEM_TIME : 'SYSTEM_TIME';
KW_SYSTEM_VERSION : 'SYSTEM_VERSION';
KW_TABLE : 'TABLE';
KW_TABLES : 'TABLES';
KW_TABLESAMPLE : 'TABLESAMPLE';
KW_TBLPROPERTIES : 'TBLPROPERTIES';
KW_TEMPORARY : 'TEMPORARY';
KW_TERMINATED : 'TERMINATED';
KW_THEN : 'THEN';
KW_TIME : 'TIME';
KW_TIMESTAMP : 'TIMESTAMP';
KW_TIMESTAMPLOCALTZ : 'TIMESTAMPLOCALTZ';
KW_TIMESTAMPTZ : 'KW_TIMESTAMPTZ';
KW_TINYINT : 'TINYINT';
KW_TO : 'TO';
KW_TOUCH : 'TOUCH';
KW_TRAILING : 'TRAILING';
KW_TRANSACTION : 'TRANSACTION';
KW_TRANSACTIONAL : 'TRANSACTIONAL';
KW_TRANSACTIONS : 'TRANSACTIONS';
KW_TRANSFORM : 'TRANSFORM';
KW_TRIGGER : 'TRIGGER';
KW_TRIM : 'TRIM';
KW_TRUE : 'TRUE';
KW_TRUNCATE : 'TRUNCATE';
KW_TYPE : 'TYPE';
KW_UNARCHIVE : 'UNARCHIVE';
KW_UNBOUNDED : 'UNBOUNDED';
KW_UNDO : 'UNDO';
KW_UNION : 'UNION';
KW_UNIONTYPE : 'UNIONTYPE';
KW_UNIQUE : 'UNIQUE';
KW_UNIQUEJOIN : 'UNIQUEJOIN';
KW_UNKNOWN : 'UNKNOWN';
KW_UNLOCK : 'UNLOCK';
KW_UNMANAGED : 'UNMANAGED';
KW_UNSET : 'UNSET';
KW_UNSIGNED : 'UNSIGNED';
KW_UPDATE : 'UPDATE';
KW_URI : 'URI';
KW_URL : 'URL';
KW_USE : 'USE';
KW_USER : 'USER';
KW_USING : 'USING';
KW_UTC : 'UTC';
KW_UTCTIMESTAMP : 'UTC_TMESTAMP';
KW_VALIDATE : 'VALIDATE';
KW_VALUES : 'VALUES';
KW_VALUE_TYPE : '$VALUE$';
KW_VARCHAR : 'VARCHAR';
KW_VECTORIZATION : 'VECTORIZATION';
KW_VIEW : 'VIEW';
KW_VIEWS : 'VIEWS';
KW_WAIT : 'WAIT';
KW_WEEK : 'WEEK' 'S'?;
KW_WHEN : 'WHEN';
KW_WHERE : 'WHERE';
KW_WHILE : 'WHILE';
KW_WINDOW : 'WINDOW';
KW_WITH : 'WITH';
KW_WITHIN : 'WITHIN';
KW_WORK : 'WORK';
KW_WORKLOAD : 'WORKLOAD';
KW_WRITE : 'WRITE';
KW_YEAR : 'YEAR' 'S'?;
KW_ZONE : 'ZONE';
T_ADD : '+' ;
T_COLON : ':' ;
T_COMMA : ',' ;
T_PIPE : '||' ;
T_DIV : '/' ;
T_DOT : '.' ;
T_DOT2 : '..' ;
T_EQUAL : '=' ;
T_EQUAL2 : '==' ;
T_SHARP : '#' ;
T_NOTE : '!' ;
T_NOTEQUAL : '<>' ;
T_NOTEQUAL2 : '!=' ;
T_GREATER : '>' ;
T_GREATEREQUAL : '>=' ;
T_LESS : '<' ;
T_LESSEQUAL : '<=' ;
T_MUL : '*' ;
T_PRECENT : '%' ;
T_CALLS : '@' ;
T_OPEN_B : '{' ;
T_OPEN_P : '(' ;
T_OPEN_SB : '[' ;
T_CLOSE_B : '}' ;
T_CLOSE_P : ')' ;
T_CLOSE_SB : ']' ;
T_SEMICOLON : ';' ;
T_SUB : '-' ;
// Operators
// NOTE: if you add a new function/operator, add it to sysFuncNames so that describe function _FUNC_ will work.
DOT : '.'; // generated as a part of Number rule
COLON : ':' ;
COMMA : ',' ;
SEMICOLON : ';' ;
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
LPAREN : '(' ;
RPAREN : ')' ;
LSQUARE : '[' ;
RSQUARE : ']' ;
LCURLY : '{';
RCURLY : '}';
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)
;
EQUAL : '=' | '==';
EQUAL_NS : '<=>';
NOTEQUAL : '<>' | '!=';
LESSTHANOREQUALTO : '<=';
LESSTHAN : '<';
GREATERTHANOREQUALTO : '>=';
GREATERTHAN : '>';
L_LABEL : ([a-zA-Z] | L_DIGIT | '_')* ':'
;
DIVIDE : '/';
PLUS : '+';
MINUS : '-';
STAR : '*';
MOD : '%';
DIV : 'DIV';
AMPERSAND : '&';
TILDE : '~';
BITWISEOR : '|';
CONCATENATE : '||';
BITWISEXOR : '^';
QUESTION : '?';
DOLLAR : '$';
// LITERALS
StringLiteral
: ( '\'' ( ~('\''|'\\') | ('\\' .) )* '\''
| '"' ( ~('"'|'\\') | ('\\' .) )* '"'
)+
;
CharSetLiteral
: StringLiteral
| '0' 'X' (HexDigit | Digit)+
;
IntegralLiteral
: Digit+ ('L' | 'S' | 'Y')
;
NumberLiteral
: Number ('B'? 'D')
;
ByteLengthLiteral
: Digit+ [BKMG]
;
Number
: Digit+ (DOT Digit* Exponent? | Exponent)?
;
/*
An Identifier can be:
- tableName
- columnName
- select expr alias
- lateral view aliases
- database name
- view name
- subquery alias
- function name
- ptf argument identifier
- index name
- property name for: db,tbl,partition...
- fileFormat
- role name
- privilege name
- principal name
- macro name
- hint name
- window name
*/
Identifier
: (Letter | Digit) (Letter | Digit | '_')*
| QuotedIdentifier
| '`' RegexComponent+ '`'
;
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')
;
QuotedIdentifier
: '`' ('``' | ~'`')* '`'
;
// 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') ;
fragment
Letter
: 'A'..'Z'
;
fragment
HexDigit
: 'A'..'F'
;
fragment
Digit
: '0'..'9'
;
fragment
Exponent
: ('E') ( PLUS|MINUS )? (Digit)+
;
fragment
RegexComponent
: 'A'..'Z' | '0'..'9' | '_'
| PLUS | STAR | QUESTION | MINUS | DOT
| LPAREN | RPAREN | LSQUARE | RSQUARE | LCURLY | RCURLY
| BITWISEXOR | BITWISEOR | DOLLAR | '!'
;
CharSetName
: '_' (Letter | Digit | '_' | '-' | '.' | ':')+
;
WHITE_SPACE
: (' '|'\r'|'\t'|'\n') -> channel(HIDDEN)
;
LINE_COMMENT
: '--' ~('\n' | '\r')* -> channel(HIDDEN)
;
QUERY_HINT
: SHOW_HINT
| HIDDEN_HINT
;
SHOW_HINT
: '/*+' (QUERY_HINT | .)*? '*/' ->channel(HIDDEN)
;
HIDDEN_HINT
: '/*' (QUERY_HINT | .)*? '*/' -> channel(HIDDEN)
;

View File

@ -0,0 +1,6 @@
# HiveSQL (V4)
## Sources
<https://github.com/antlr/grammars-v4/blob/master/sql/hive/v4/README.md>
<https://github.com/apache/hive/tree/master/parser/src/java/org/apache/hadoop/hive/ql/parse>