1+ lexer grammar FlinkSqlLexer;
2+
3+ // SKIP
4+
5+ SPACE : [ \t\r\n]+ -> channel(HIDDEN );
6+ COMMENT_INPUT : ' /*' .*? ' */' -> channel(HIDDEN );
7+ LINE_COMMENT : (
8+ (' -- ' | ' #' ) ~[\r\n]* (' \r ' ? ' \n ' | EOF )
9+ | ' --' (' \r ' ? ' \n ' | EOF )
10+ ) -> channel(HIDDEN );
11+
12+
13+ // Common Keywords
14+
15+ SELECT : ' SELECT' ;
16+ FROM : ' FROM' ;
17+ ADD : ' ADD' ;
18+ AS : ' AS' ;
19+ ALL : ' ALL' ;
20+ ANY : ' ANY' ;
21+ DISTINCT : ' DISTINCT' ;
22+ WHERE : ' WHERE' ;
23+ GROUP : ' GROUP' ;
24+ BY : ' BY' ;
25+ GROUPING : ' GROUPING' ;
26+ SETS : ' SETS' ;
27+ CUBE : ' CUBE' ;
28+ ROLLUP : ' ROLLUP' ;
29+ ORDER : ' ORDER' ;
30+ HAVING : ' HAVING' ;
31+ LIMIT : ' LIMIT' ;
32+ AT : ' AT' ;
33+ OR : ' OR' ;
34+ AND : ' AND' ;
35+ IN : ' IN' ;
36+ NOT : ' NOT' ;
37+ NO : ' NO' ;
38+ EXISTS : ' EXISTS' ;
39+ BETWEEN : ' BETWEEN' ;
40+ LIKE : ' LIKE' ;
41+ RLIKE : ' RLIKE' ;
42+ IS : ' IS' ;
43+ TRUE : ' TRUE' ;
44+ FALSE : ' FALSE' ;
45+ NULLS : ' NULLS' ;
46+ ASC : ' ASC' ;
47+ DESC : ' DESC' ;
48+ FOR : ' FOR' ;
49+ INTERVAL : ' INTERVAL' ;
50+ CASE : ' CASE' ;
51+ WHEN : ' WHEN' ;
52+ THEN : ' THEN' ;
53+ ELSE : ' ELSE' ;
54+ END : ' END' ;
55+ JOIN : ' JOIN' ;
56+ CROSS : ' CROSS' ;
57+ OUTER : ' OUTER' ;
58+ INNER : ' INNER' ;
59+ LEFT : ' LEFT' ;
60+ SEMI : ' SEMI' ;
61+ RIGHT : ' RIGHT' ;
62+ FULL : ' FULL' ;
63+ NATURAL : ' NATURAL' ;
64+ ON : ' ON' ;
65+ PIVOT : ' PIVOT' ;
66+ LATERAL : ' LATERAL' ;
67+ WINDOW : ' WINDOW' ;
68+ OVER : ' OVER' ;
69+ PARTITION : ' PARTITION' ;
70+ RANGE : ' RANGE' ;
71+ ROWS : ' ROWS' ;
72+ UNBOUNDED : ' UNBOUNDED' ;
73+ PRECEDING : ' PRECEDING' ;
74+ FOLLOWING : ' FOLLOWING' ;
75+ CURRENT : ' CURRENT' ;
76+ FIRST : ' FIRST' ;
77+ AFTER : ' AFTER' ;
78+ LAST : ' LAST' ;
79+ WITH : ' WITH' ;
80+ VALUES : ' VALUES' ;
81+ CREATE : ' CREATE' ;
82+ TABLE : ' TABLE' ;
83+ DIRECTORY : ' DIRECTORY' ;
84+ VIEW : ' VIEW' ;
85+ REPLACE : ' REPLACE' ;
86+ INSERT : ' INSERT' ;
87+ DELETE : ' DELETE' ;
88+ INTO : ' INTO' ;
89+ DESCRIBE : ' DESCRIBE' ;
90+ EXPLAIN : ' EXPLAIN' ;
91+ FORMAT : ' FORMAT' ;
92+ LOGICAL : ' LOGICAL' ;
93+ CODEGEN : ' CODEGEN' ;
94+ COST : ' COST' ;
95+ CAST : ' CAST' ;
96+ SHOW : ' SHOW' ;
97+ TABLES : ' TABLES' ;
98+ COLUMNS : ' COLUMNS' ;
99+ COLUMN : ' COLUMN' ;
100+ USE : ' USE' ;
101+ PARTITIONS : ' PARTITIONS' ;
102+ FUNCTIONS : ' FUNCTIONS' ;
103+ DROP : ' DROP' ;
104+ UNION : ' UNION' ;
105+ EXCEPT : ' EXCEPT' ;
106+ SETMINUS : ' SETMINUS' ;
107+ INTERSECT : ' INTERSECT' ;
108+ TO : ' TO' ;
109+ TABLESAMPLE : ' TABLESAMPLE' ;
110+ STRATIFY : ' STRATIFY' ;
111+ ALTER : ' ALTER' ;
112+ RENAME : ' RENAME' ;
113+ STRUCT : ' STRUCT' ;
114+ COMMENT : ' COMMENT' ;
115+ SET : ' SET' ;
116+ RESET : ' RESET' ;
117+ DATA : ' DATA' ;
118+ START : ' START' ;
119+ TRANSACTION : ' TRANSACTION' ;
120+ COMMIT : ' COMMIT' ;
121+ ROLLBACK : ' ROLLBACK' ;
122+ MACRO : ' MACRO' ;
123+ IGNORE : ' IGNORE' ;
124+ BOTH : ' BOTH' ;
125+ LEADING : ' LEADING' ;
126+ TRAILING : ' TRAILING' ;
127+ IF : ' IF' ;
128+ POSITION : ' POSITION' ;
129+ EXTRACT : ' EXTRACT' ;
130+ EQ : ' EQ' ;
131+ NSEQ : ' NSEQ' ;
132+ NEQ : ' NEQ' ;
133+ NEQJ : ' NEQJ' ;
134+ LT : ' LT' ;
135+ LTE : ' LTE' ;
136+ GT : ' GT' ;
137+ GTE : ' GTE' ;
138+ PLUS : ' PLUS' ;
139+ MINUS : ' MINUS' ;
140+ ASTERISK : ' ASTERISK' ;
141+ SLASH : ' SLASH' ;
142+ PERCENT : ' PERCENT' ;
143+ DIV : ' DIV' ;
144+ TILDE : ' TILDE' ;
145+ AMPERSAND : ' AMPERSAND' ;
146+ PIPE : ' PIPE' ;
147+ CONCAT_PIPE : ' CONCAT_PIPE' ;
148+ HAT : ' HAT' ;
149+ PERCENTLIT : ' PERCENTLIT' ;
150+ BUCKET : ' BUCKET' ;
151+ OUT : ' OUT' ;
152+ OF : ' OF' ;
153+ SORT : ' SORT' ;
154+ CLUSTER : ' CLUSTER' ;
155+ DISTRIBUTE : ' DISTRIBUTE' ;
156+ OVERWRITE : ' OVERWRITE' ;
157+ TRANSFORM : ' TRANSFORM' ;
158+ REDUCE : ' REDUCE' ;
159+ USING : ' USING' ;
160+ SERDE : ' SERDE' ;
161+ SERDEPROPERTIES : ' SERDEPROPERTIES' ;
162+ RECORDREADER : ' RECORDREADER' ;
163+ RECORDWRITER : ' RECORDWRITER' ;
164+ DELIMITED : ' DELIMITED' ;
165+ FIELDS : ' FIELDS' ;
166+ TERMINATED : ' TERMINATED' ;
167+ COLLECTION : ' COLLECTION' ;
168+ ITEMS : ' ITEMS' ;
169+ KEYS : ' KEYS' ;
170+ ESCAPED : ' ESCAPED' ;
171+ LINES : ' LINES' ;
172+ SEPARATED : ' SEPARATED' ;
173+ FUNCTION : ' FUNCTION' ;
174+ EXTENDED : ' EXTENDED' ;
175+ REFRESH : ' REFRESH' ;
176+ CLEAR : ' CLEAR' ;
177+ CACHE : ' CACHE' ;
178+ UNCACHE : ' UNCACHE' ;
179+ LAZY : ' LAZY' ;
180+ FORMATTED : ' FORMATTED' ;
181+ GLOBAL : ' GLOBAL' ;
182+ TEMPORARY : ' TEMPORARY' ;
183+ OPTIONS : ' OPTIONS' ;
184+ UNSET : ' UNSET' ;
185+ TBLPROPERTIES : ' TBLPROPERTIES' ;
186+ DBPROPERTIES : ' DBPROPERTIES' ;
187+ BUCKETS : ' BUCKETS' ;
188+ SKEWED : ' SKEWED' ;
189+ STORED : ' STORED' ;
190+ DIRECTORIES : ' DIRECTORIES' ;
191+ LOCATION : ' LOCATION' ;
192+ EXCHANGE : ' EXCHANGE' ;
193+ ARCHIVE : ' ARCHIVE' ;
194+ UNARCHIVE : ' UNARCHIVE' ;
195+ FILEFORMAT : ' FILEFORMAT' ;
196+ TOUCH : ' TOUCH' ;
197+ COMPACT : ' COMPACT' ;
198+ CONCATENATE : ' CONCATENATE' ;
199+ CHANGE : ' CHANGE' ;
200+ CASCADE : ' CASCADE' ;
201+ RESTRICT : ' RESTRICT' ;
202+ CLUSTERED : ' CLUSTERED' ;
203+ SORTED : ' SORTED' ;
204+ PURGE : ' PURGE' ;
205+ INPUTFORMAT : ' INPUTFORMAT' ;
206+ OUTPUTFORMAT : ' OUTPUTFORMAT' ;
207+ DATABASE : ' DATABASE' ;
208+ DATABASES : ' DATABASES' ;
209+ DFS : ' DFS' ;
210+ TRUNCATE : ' TRUNCATE' ;
211+ ANALYZE : ' ANALYZE' ;
212+ COMPUTE : ' COMPUTE' ;
213+ LIST : ' LIST' ;
214+ STATISTICS : ' STATISTICS' ;
215+ PARTITIONED : ' PARTITIONED' ;
216+ EXTERNAL : ' EXTERNAL' ;
217+ DEFINED : ' DEFINED' ;
218+ REVOKE : ' REVOKE' ;
219+ GRANT : ' GRANT' ;
220+ LOCK : ' LOCK' ;
221+ UNLOCK : ' UNLOCK' ;
222+ MSCK : ' MSCK' ;
223+ REPAIR : ' REPAIR' ;
224+ RECOVER : ' RECOVER' ;
225+ EXPORT : ' EXPORT' ;
226+ IMPORT : ' IMPORT' ;
227+ LOAD : ' LOAD' ;
228+ ROLE : ' ROLE' ;
229+ ROLES : ' ROLES' ;
230+ COMPACTIONS : ' COMPACTIONS' ;
231+ PRINCIPALS : ' PRINCIPALS' ;
232+ TRANSACTIONS : ' TRANSACTIONS' ;
233+ INDEX : ' INDEX' ;
234+ INDEXES : ' INDEXES' ;
235+ LOCKS : ' LOCKS' ;
236+ OPTION : ' OPTION' ;
237+ ANTI : ' ANTI' ;
238+ LOCAL : ' LOCAL' ;
239+ INPATH : ' INPATH' ;
240+ WATERMARK : ' WATERMARK' ;
241+ UNNEST : ' UNNEST' ;
242+ MATCH_RECOGNIZE : ' MATCH_RECOGNIZE' ;
243+ MEASURES : ' MEASURES' ;
244+ ONE : ' ONE' ;
245+ PER : ' PER' ;
246+ MATCH : ' MATCH' ;
247+ SKIP1 : ' SKIP1' ;
248+ NEXT : ' NEXT' ;
249+ PAST : ' PAST' ;
250+ PATTERN : ' PATTERN' ;
251+ WITHIN : ' WITHIN' ;
252+ DEFINE : ' DEFINE' ;
253+ WS : ' WS' ;
254+ SYSTEM : ' SYSTEM' ;
255+ INCLUDING : ' INCLUDING' ;
256+ EXCLUDING : ' EXCLUDING' ;
257+ CONSTRAINTS : ' CONSTRAINTS' ;
258+ OVERWRITING : ' OVERWRITING' ;
259+ GENERATED : ' GENERATED' ;
260+ CATALOG : ' CATALOG' ;
261+ LANGUAGE : ' LANGUAGE' ;
262+ CATALOGS : ' CATALOGS' ;
263+ VIEWS : ' VIEWS' ;
264+
265+
266+ // DATA TYPE Keywords
267+
268+ STRING : ' STRING' ;
269+ ARRAY : ' ARRAY' ;
270+ MAP : ' MAP' ;
271+ CHAR : ' CHAR' ;
272+ VARCHAR : ' VARCHAR' ;
273+ BINARY : ' BINARY' ;
274+ VARBINARY : ' VARBINARY' ;
275+ BYTES : ' BYTES' ;
276+ DECIMAL : ' DECIMAL' ;
277+ TINYINT : ' TINYINT' ;
278+ SMALLINT : ' SMALLINT' ;
279+ INT : ' INT' ;
280+ BIGINT : ' BIGINT' ;
281+ FLOAT : ' FLOAT' ;
282+ DOUBLE : ' DOUBLE' ;
283+ DATE : ' DATE' ;
284+ TIME : ' TIME' ;
285+ TIMESTAMP : ' TIMESTAMP' ;
286+ MULTISET : ' MULTISET' ;
287+ BOOLEAN : ' BOOLEAN' ;
288+ RAW : ' RAW' ;
289+ ROW : ' ROW' ;
290+ NULL : ' NULL' ;
291+
292+
293+ // Operators. Comparation
294+
295+ EQUAL_SYMBOL : ' =' ;
296+ GREATER_SYMBOL : ' >' ;
297+ LESS_SYMBOL : ' <' ;
298+ EXCLAMATION_SYMBOL : ' !' ;
299+
300+
301+ // Operators. Bit
302+
303+ BIT_NOT_OP : ' ~' ;
304+ BIT_OR_OP : ' |' ;
305+ BIT_AND_OP : ' &' ;
306+ BIT_XOR_OP : ' ^' ;
307+
308+
309+ // Constructors symbols
310+
311+ DOT : ' .' ;
312+ LS_BRACKET : ' [' ;
313+ RS_BRACKET : ' ]' ;
314+ LR_BRACKET : ' (' ;
315+ RR_BRACKET : ' )' ;
316+ COMMA : ' ,' ;
317+ SEMICOLON : ' ;' ;
318+ AT_SIGN : ' @' ;
319+ SINGLE_QUOTE_SYMB : ' \' ' ;
320+ DOUBLE_QUOTE_SYMB : ' "' ;
321+ REVERSE_QUOTE_SYMB : ' `' ;
322+ COLON_SYMB : ' :' ;
323+ ASTERISK_SIGN : ' *' ;
324+ UNDERLINE_SIGN : ' _' ;
325+ HYPNEN_SIGN : ' -' ;
326+ ADD_SIGN : ' +' ;
327+ PENCENT_SIGN : ' %' ;
328+ DOUBLE_VERTICAL_SIGN : ' ||' ;
329+ DOUBLE_HYPNEN_SIGN : ' --' ;
330+ SLASH_SIGN : ' /' ;
331+ DOT_ID : ' .' ID_LITERAL ;
332+ STRING_LITERAL : DQUOTA_STRING | SQUOTA_STRING | BQUOTA_STRING ;
333+ DIG_LITERAL : DEC_DIGIT +;
334+ REAL_LITERAL : (DEC_DIGIT +)? ' .' DEC_DIGIT +
335+ | DEC_DIGIT + ' .' EXPONENT_NUM_PART
336+ | (DEC_DIGIT +)? ' .' (DEC_DIGIT + EXPONENT_NUM_PART )
337+ | DEC_DIGIT + EXPONENT_NUM_PART ;
338+ BIT_STRING : BIT_STRING_L ;
339+ ID : ID_LITERAL ;
340+
341+ fragment EXPONENT_NUM_PART : ' E' [-+]? DEC_DIGIT +;
342+ fragment ID_LITERAL : [A -Z_0 -9a-z]*?[A -Z_a-z]+?[A -Z_0 -9a-z]*;
343+ fragment DEC_DIGIT : [0-9];
344+ fragment DEC_LETTER : [A -Za-z];
345+ fragment DQUOTA_STRING : ' "' ( ' \\ ' . | ' ""' | ~(' "' | ' \\ ' ) )* ' "' ;
346+ fragment SQUOTA_STRING : ' \' ' (' \\ ' . | ' \'\' ' | ~(' \' ' | ' \\ ' ))* ' \' ' ;
347+ fragment BIT_STRING_L : ' B' ' \' ' [01]+ ' \' ' ;
348+ fragment BQUOTA_STRING : ' `' ( ' \\ ' . | ' ``' | ~(' `' |' \\ ' ))* ' `' ;
0 commit comments