2 * Copyright 2008 Search Solution Corporation
3 * Copyright 2016 CUBRID Corporation
5 * Licensed under the Apache License, Version 2.0 (the "License");
6 * you may not use this file except in compliance with the License.
7 * You may obtain a copy of the License at
9 * http://www.apache.org/licenses/LICENSE-2.0
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
20 * csql_lexer.l - SQL lexer file
28 #include "csql_grammar.h"
29 #include "csql_grammar_scan.h"
30 #include "parse_tree.h"
31 #include "parser_message.h"
32 #include "system_parameter.h"
33 #include "message_catalog.h"
35 #if defined (SUPPRESS_STRLEN_WARNING)
36 #define strlen(s1) ((int) strlen(s1))
37 #endif /* defined (SUPPRESS_STRLEN_WARNING) */
39 #define CSQL_MAXNAME 256
41 static int parser_yyinput_single_line (char *buff, int max_size);
42 static int parser_yyinput_multi_line (char *buff, int max_size);
43 static int parser_yyinput (char *buff, int max_size);
44 static char *parser_c_hint (void);
45 static char *parser_line_hint (void);
46 static void begin_token (char *token);
49 extern int yycolumn_end;
52 int str_identifier = '\0';
58 #define YY_INPUT(buffer, result, max_size) { result = parser_yyinput(buffer, max_size); result == 0 ? result = YY_NULL : result; }
61 * This action is executed each time a token is matched. Its position in the
62 * buffer is saved as part of the location information.
64 #define YY_USER_ACTION {yybuffer_pos += csql_yyget_leng (); csql_yylloc.buffer_pos = yybuffer_pos;}
66 #define IS_BLANK_CHAR(c) \
67 ((c) == ' ' || (c) == '\t' || (c) == '\r' || (c) == '\n')
77 %x QUOTED_NCHAR_STRING
81 %x DOUBLY_QUOTED_CHAR_STRING
85 %x QUOTED_EUCKR_STRING
87 %x QUOTED_BINARY_STRING
95 [ \t\r]+ { begin_token(yytext); }
98 this_parser->line = yylineno;
99 this_parser->column = yycolumn = yycolumn_end = 1;
104 [aA][bB][sS][oO][lL][uU][tT][eE] { begin_token(yytext); return ABSOLUTE_; }
105 [aA][cC][cC][eE][sS][sS] { begin_token(yytext); return ACCESS; }
106 [aA][cC][tT][iI][oO][nN] { begin_token(yytext); return ACTION; }
107 [aA][cC][tT][iI][vV][eE] { begin_token(yytext);
108 csql_yylval.cptr = pt_makename(yytext);
110 [aA][dD][dD] { begin_token(yytext); return ADD; }
111 [aA][dD][dD][dD][aA][tT][eE] { begin_token(yytext);
112 csql_yylval.cptr = pt_makename(yytext);
114 [aA][dD][dD]_[mM][oO][nN][tT][hH][sS] { begin_token(yytext); return ADD_MONTHS; }
115 [aA][eE][sS] { begin_token(yytext); return AES; }
116 [aA][fF][tT][eE][rR] { begin_token(yytext); return AFTER; }
117 [aA][lL][lL] { begin_token(yytext); return ALL; }
118 [aA][lL][lL][oO][cC][aA][tT][eE] { begin_token(yytext); return ALLOCATE; }
119 [aA][lL][tT][eE][rR] { begin_token(yytext); return ALTER; }
120 [aA][nN][aA][lL][yY][zZ][eE] { begin_token(yytext);
121 csql_yylval.cptr = pt_makename(yytext);
123 [aA][nN][dD] { begin_token(yytext); return AND; }
124 [aA][nN][yY] { begin_token(yytext); return ANY; }
125 [aA][rR][cC][hH][iI][vV][eE] { begin_token(yytext);
126 csql_yylval.cptr = pt_makename(yytext);
128 [aA][rR][eE] { begin_token(yytext); return ARE; }
129 [aA][rR][iI][aA] { begin_token(yytext); return ARIA; }
130 [aA][sS] { begin_token(yytext); return AS; }
131 [aA][sS][cC] { begin_token(yytext); return ASC; }
132 [aA][sS][sS][eE][rR][tT][iI][oO][nN] { begin_token(yytext); return ASSERTION; }
133 [aA][sS][yY][nN][cC] { begin_token(yytext); return ASYNC; }
134 [aA][tT] { begin_token(yytext); return AT; }
135 [aA][tT][tT][aA][cC][hH] { begin_token(yytext); return ATTACH; }
136 [aA][tT][tT][rR][iI][bB][uU][tT][eE] { begin_token(yytext); return ATTRIBUTE; }
137 [aA][uU][tT][oO]_[iI][nN][cC][rR][eE][mM][eE][nN][tT] { begin_token(yytext);
138 csql_yylval.cptr = pt_makename(yytext);
139 return AUTO_INCREMENT; }
140 [aA][vV][gG] { begin_token(yytext); return AVG; }
141 [bB][eE][fF][oO][rR][eE] { begin_token(yytext); return BEFORE; }
142 [bB][eE][nN][cC][hH][mM][aA][rR][kK] { begin_token(yytext); return BENCHMARK; }
143 [bB][eE][tT][wW][eE][eE][nN] { begin_token(yytext); return BETWEEN; }
144 [bB][iI][gG][iI][nN][tT] { begin_token(yytext); return BIGINT;}
145 [bB][iI][nN][aA][rR][yY] { begin_token(yytext); return BINARY;}
146 [bB][iI][tT] { begin_token(yytext); return BIT; }
147 [bB][iI][tT]_[lL][eE][nN][gG][tT][hH] { begin_token(yytext); return BIT_LENGTH; }
148 [bB][iI][tT]_[aA][nN][dD] { begin_token(yytext);
149 csql_yylval.cptr = pt_makename(yytext);
151 [bB][iI][tT]_[oO][rR] { begin_token(yytext);
152 csql_yylval.cptr = pt_makename(yytext);
154 [bB][iI][tT]_[xX][oO][rR] { begin_token(yytext);
155 csql_yylval.cptr = pt_makename(yytext);
157 [bB][lL][oO][bB] { begin_token(yytext); return BLOB_; }
158 [bB][oO][oO][lL][eE][aA][nN] { begin_token(yytext); return BOOLEAN_; }
159 [bB][oO][tT][hH] { begin_token(yytext); return BOTH_; }
160 [bB][rR][eE][aA][dD][tT][hH] { begin_token(yytext); return BREADTH; }
161 [bB][yY] { begin_token(yytext); return BY; }
162 [bB][uU][fF][fF][eE][rR] { begin_token(yytext);
163 csql_yylval.cptr = pt_makename(yytext);
165 [cC][aA][lL][lL] { begin_token(yytext); return CALL; }
166 [cC][aA][cC][hH][eE] { begin_token(yytext);
167 csql_yylval.cptr = pt_makename(yytext);
169 [cC][aA][pP][aA][cC][iI][tT][yY] { begin_token(yytext);
170 csql_yylval.cptr = pt_makename(yytext);
172 [cC][aA][sS][cC][aA][dD][eE] { begin_token(yytext); return CASCADE; }
173 [cC][aA][sS][cC][aA][dD][eE][dD] { begin_token(yytext); return CASCADED; }
174 [cC][aA][sS][eE] { begin_token(yytext); return CASE; }
175 [cC][aA][sS][tT] { begin_token(yytext); return CAST; }
176 [cC][aA][tT][aA][lL][oO][gG] { begin_token(yytext); return CATALOG; }
177 [cC][hH][aA][nN][gG][eE] { begin_token(yytext); return CHANGE; }
178 [cC][hH][aA][rR][aA][cC][tT][eE][rR] { begin_token(yytext); return CHAR_; }
179 [cC][hH][aA][rR][aA][cC][tT][eE][rR]_[sS][eE][tT] { begin_token(yytext);
180 csql_yylval.cptr = pt_makename(yytext);
181 return CHARACTER_SET_; }
182 [cC][hH][aA][rR][sS][eE][tT] { begin_token(yytext);
183 csql_yylval.cptr = pt_makename(yytext);
185 [cC][hH][eE][cC][kK] { begin_token(yytext); return CHECK; }
186 [cC][hH][rR] { begin_token(yytext);
187 csql_yylval.cptr = pt_makename(yytext);
189 [cC][lL][aA][sS][sS] { begin_token(yytext); return CLASS; }
190 [cC][lL][aA][sS][sS][eE][sS] { begin_token(yytext); return CLASSES; }
191 [cC][lL][oO][bB] { begin_token(yytext); return CLOB_; }
192 [cC][lL][oO][bB]_[tT][oO]_[cC][hH][aA][rR] { begin_token(yytext);
193 csql_yylval.cptr = pt_makename(yytext);
194 return CLOB_TO_CHAR; }
195 [cC][lL][oO][sS][eE] { begin_token(yytext);
196 csql_yylval.cptr = pt_makename(yytext);
198 [cC][oO][aA][lL][eE][sS][cC][eE] { begin_token(yytext); return COALESCE; }
199 [cC][oO][lL][lL][aA][tT][eE] { begin_token(yytext); return COLLATE; }
200 [cC][oO][lL][lL][aA][tT][iI][oO][nN] { begin_token(yytext);
201 csql_yylval.cptr = pt_makename(yytext);
203 [cC][oO][lL][uU][mM][nN] { begin_token(yytext); return COLUMN; }
204 [cC][oO][lL][uU][mM][nN][sS] { begin_token(yytext);
205 csql_yylval.cptr = pt_makename(yytext);
207 [cC][oO][mM][mM][eE][nN][tT] { begin_token(yytext);
208 csql_yylval.cptr = pt_makename(yytext);
210 [cC][oO][mM][mM][iI][tT] { begin_token(yytext); return COMMIT; }
211 [cC][oO][mM][mM][iI][tT][tT][eE][dD] { begin_token(yytext);
212 csql_yylval.cptr = pt_makename(yytext);
214 [cC][oO][nN][nN][eE][cC][tT] { begin_token(yytext); return CONNECT; }
215 [cC][oO][nN][nN][eE][cC][tT][_][bB][yY][_][iI][sS][cC][yY][cC][lL][eE] { begin_token(yytext); return CONNECT_BY_ISCYCLE; }
216 [cC][oO][nN][nN][eE][cC][tT][_][bB][yY][_][iI][sS][lL][eE][aA][fF] { begin_token(yytext); return CONNECT_BY_ISLEAF; }
217 [cC][oO][nN][nN][eE][cC][tT][_][bB][yY][_][rR][oO][oO][tT] { begin_token(yytext); return CONNECT_BY_ROOT; }
218 [cC][oO][nN][nN][eE][cC][tT][iI][oO][nN] { begin_token(yytext); return CONNECTION; }
219 [cC][oO][nN][sS][tT][rR][aA][iI][nN][tT] { begin_token(yytext); return CONSTRAINT; }
220 [cC][oO][nN][sS][tT][rR][aA][iI][nN][tT][sS] { begin_token(yytext); return CONSTRAINTS; }
221 [cC][oO][nN][tT][iI][nN][uU][eE] { begin_token(yytext); return CONTINUE; }
222 [cC][oO][nN][vV][eE][rR][tT] { begin_token(yytext); return CONVERT; }
223 [cC][oO][rR][rR][eE][sS][pP][oO][nN][dD][iI][nN][gG] { begin_token(yytext); return CORRESPONDING; }
224 [cC][oO][sS][tT] { begin_token(yytext);
225 csql_yylval.cptr = pt_makename(yytext);
228 [cC][oO][uU][nN][tT] { begin_token(yytext); return COUNT; }
229 [cC][rR][eE][aA][tT][eE] { begin_token(yytext); return CREATE; }
230 [cC][rR][oO][sS][sS] { begin_token(yytext); return CROSS; }
231 [cC][rR][iI][tT][iI][cC][aA][lL] { begin_token(yytext);
232 csql_yylval.cptr = pt_makename(yytext);
234 [cC][uU][mM][eE][_][dD][iI][sS][tT] { begin_token(yytext);
235 csql_yylval.cptr = pt_makename(yytext);
237 [cC][uU][rR][rR][eE][nN][tT] { begin_token(yytext); return CURRENT; }
238 [cC][uU][rR][rR][eE][nN][tT]_[dD][aA][tT][eE] { begin_token(yytext); return CURRENT_DATE; }
239 [cC][uU][rR][rR][eE][nN][tT]_[tT][iI][mM][eE] { begin_token(yytext); return CURRENT_TIME; }
240 [cC][uU][rR][rR][eE][nN][tT]_[tT][iI][mM][eE][sS][tT][aA][mM][pP] { begin_token(yytext); return CURRENT_TIMESTAMP; }
241 [cC][uU][rR][rR][eE][nN][tT]_[dD][aA][tT][eE][tT][iI][mM][eE] { begin_token(yytext); return CURRENT_DATETIME; }
242 [cC][uU][rR][rR][eE][nN][tT]_[uU][sS][eE][rR] { begin_token(yytext); return CURRENT_USER; }
243 [cC][uU][rR][sS][oO][rR] { begin_token(yytext); return CURSOR; }
244 [cC][yY][cC][lL][eE] { begin_token(yytext); return CYCLE; }
245 [cC][hH][aA][rR] { begin_token(yytext); return CHAR_; }
246 [dD][aA][tT][aA] { begin_token(yytext); return DATA; }
247 [dD][aA][tT][aA][bB][aA][sS][eE] { begin_token(yytext); return DATABASE; }
248 [dD][aA][tT][aA]_[tT][yY][pP][eE]___ { begin_token(yytext); return DATA_TYPE___; }
249 [dD][aA][tT][eE]_[aA][dD][dD] { begin_token(yytext);
250 csql_yylval.cptr = pt_makename(yytext);
252 [dD][aA][tT][eE]_[sS][uU][bB] { begin_token(yytext);
253 csql_yylval.cptr = pt_makename(yytext);
255 [dD][aA][tT][eE][tT][iI][mM][eE] { begin_token(yytext); return DATETIME; }
256 [dD][aA][tT][eE][tT][iI][mM][eE][tT][zZ] { begin_token(yytext); return DATETIMETZ; }
257 [dD][aA][tT][eE][tT][iI][mM][eE][lL][tT][zZ] { begin_token(yytext); return DATETIMELTZ; }
258 [dD][aA][yY] { begin_token(yytext); return DAY_; }
259 [dD][aA][yY]_[mM][iI][lL][lL][iI][sS][eE][cC][oO][nN][dD] { begin_token(yytext); return DAY_MILLISECOND; }
260 [dD][aA][yY]_[sS][eE][cC][oO][nN][dD] { begin_token(yytext); return DAY_SECOND; }
261 [dD][aA][yY]_[mM][iI][nN][uU][tT][eE] { begin_token(yytext); return DAY_MINUTE; }
262 [dD][aA][yY]_[hH][oO][uU][rR] { begin_token(yytext); return DAY_HOUR; }
263 [dD][bB][tT][iI][mM][eE][zZ][oO][nN][eE] { begin_token(yytext); return DB_TIMEZONE; }
264 [dD][eE][aA][lL][lL][oO][cC][aA][tT][eE] { begin_token(yytext); return DEALLOCATE; }
265 [dD][eE][cC] { begin_token(yytext); return NUMERIC; }
266 [dD][eE][cC][iI][mM][aA][lL] { begin_token(yytext); return NUMERIC; }
267 [dD][eE][cC][lL][aA][rR][eE] { begin_token(yytext); return DECLARE; }
268 [dD][eE][cC][rR][eE][mM][eE][nN][tT] { begin_token(yytext);
269 csql_yylval.cptr = pt_makename(yytext);
271 [dD][eE][fF][aA][uU][lL][tT] { begin_token(yytext); return DEFAULT; }
272 [dD][eE][fF][eE][rR][rR][aA][bB][lL][eE] { begin_token(yytext); return DEFERRABLE; }
273 [dD][eE][fF][eE][rR][rR][eE][dD] { begin_token(yytext); return DEFERRED; }
274 [dD][eE][lL][eE][tT][eE] { begin_token(yytext); return DELETE_; }
275 [dD][eE][nN][sS][eE]_[rR][aA][nN][kK] { begin_token(yytext);
276 csql_yylval.cptr = pt_makename(yytext);
278 [dD][eE][pP][tT][hH] { begin_token(yytext); return DEPTH; }
279 [dD][eE][sS][cC] { begin_token(yytext); return DESC; }
280 [dD][eE][sS][cC][rR][iI][bB][eE] { begin_token(yytext); return DESCRIBE; }
281 [dD][eE][sS][cC][rR][iI][pP][tT][oO][rR] { begin_token(yytext); return DESCRIPTOR; }
282 [dD][iI][aA][gG][nN][oO][sS][tT][iI][cC][sS] { begin_token(yytext); return DIAGNOSTICS; }
283 [dD][iI][fF][fF][eE][rR][eE][nN][cC][eE] { begin_token(yytext); return DIFFERENCE_; }
284 [dD][iI][sS][cC][oO][nN][nN][eE][cC][tT] { begin_token(yytext); return DISCONNECT; }
285 [dD][iI][sS][tT][iI][nN][cC][tT] { begin_token(yytext); return DISTINCT; }
286 [dD][iI][sS][tT][iI][nN][cC][tT][rR][oO][wW] { begin_token(yytext); return DISTINCT; }
287 [dD][iI][vV] { begin_token(yytext); return DIV; }
288 [dD][oO] { begin_token(yytext); return DO; }
289 [dD][oO][mM][aA][iI][nN] { begin_token(yytext); return Domain; }
290 [dD][rR][oO][pP] { begin_token(yytext); return DROP; }
291 [dD][uU][pP][lL][iI][cC][aA][tT][eE] { begin_token(yytext); return DUPLICATE_; }
292 [dD][aA][tT][eE] { begin_token(yytext); return Date; }
293 [dD][oO][uU][bB][lL][eE] { begin_token(yytext); return Double; }
294 [dD][oO][nN][tT]_[Rr][Ee][uU][sS][eE]_[oO][iI][dD] { begin_token(yytext);
295 csql_yylval.cptr = pt_makename(yytext);
296 return DONT_REUSE_OID; }
297 [eE][aA][cC][hH] { begin_token(yytext); return EACH; }
298 [eE][lL][sS][eE] { begin_token(yytext); return ELSE; }
299 [eE][lL][sS][eE][iI][fF] { begin_token(yytext); return ELSEIF; }
300 [eE][lL][tT] { begin_token(yytext);
301 csql_yylval.cptr = pt_makename(yytext);
303 [eE][mM][pP][tT][yY] { begin_token(yytext); return EMPTY; }
304 [eE][nN][cC][rR][yY][pP][tT] { begin_token(yytext); return ENCRYPT; }
305 [eE][nN][dD] { begin_token(yytext); return END; }
306 [eE][nN][uU][mM] { begin_token(yytext); return ENUM; }
307 [eE][qQ][uU][aA][lL][sS] { begin_token(yytext); return EQUALS; }
308 [eE][rR][rR][oO][rR] { begin_token(yytext); return ERROR_; }
309 [eE][sS][cC][aA][pP][eE] { begin_token(yytext); return ESCAPE; }
310 [eE][vV][aA][lL][uU][aA][tT][eE] { begin_token(yytext); return EVALUATE; }
311 [eE][xX][cC][eE][pP][tT] { begin_token(yytext); return EXCEPT; }
312 [eE][xX][cC][eE][pP][tT][iI][oO][nN] { begin_token(yytext); return EXCEPTION; }
313 [eE][xX][eE][cC] { begin_token(yytext); return EXEC; }
314 [eE][xX][eE][cC][uU][tT][eE] { begin_token(yytext); return EXECUTE; }
315 [eE][xX][iI][sS][tT][sS] { begin_token(yytext); return EXISTS; }
316 [eE][xX][pP][lL][aA][iI][nN] { begin_token(yytext);
317 csql_yylval.cptr = pt_makename(yytext);
319 [eE][xX][tT][eE][rR][nN][aA][lL] { begin_token(yytext); return EXTERNAL; }
320 [eE][xX][tT][rR][aA][cC][tT] { begin_token(yytext); return EXTRACT; }
321 [fF][eE][tT][cC][hH] { begin_token(yytext); return FETCH; }
322 [fF][iI][rR][sS][tT] { begin_token(yytext); return FIRST; }
323 [fF][iI][rR][sS][tT]_[vV][aA][lL][uU][eE] { begin_token(yytext);
324 csql_yylval.cptr = pt_makename(yytext);
325 return FIRST_VALUE; }
326 [fF][oO][rR][cC][eE] { begin_token(yytext); return FORCE; }
327 [fF][oO][rR][eE][iI][gG][nN] { begin_token(yytext); return FOREIGN; }
328 [fF][oO][uU][nN][dD] { begin_token(yytext); return FOUND; }
329 [fF][rR][oO][mM] { begin_token(yytext); return FROM; }
330 [fF][uU][lL][lL] { begin_token(yytext); return FULL; }
331 [fF][uU][lL][lL][sS][cC][aA][nN] { begin_token(yytext);
332 csql_yylval.cptr = pt_makename(yytext);
334 [fF][uU][nN][cC][tT][iI][oO][nN] { begin_token(yytext); return FUNCTION; }
335 [fF][aA][lL][sS][eE] { begin_token(yytext); return False; }
336 [fF][iI][lL][eE] { begin_token(yytext); return File; }
337 [fF][lL][oO][aA][tT] { begin_token(yytext); return FLOAT_; }
338 [fF][oO][rR] { begin_token(yytext); return For; }
339 [gG][eE][nN][eE][rR][aA][lL] { begin_token(yytext); return GENERAL; }
340 [gG][eE][tT] { begin_token(yytext); return GET; }
341 [gG][eE]_[iI][nN][fF] { begin_token(yytext);
342 csql_yylval.cptr = pt_makename(yytext);
344 [gG][eE]_[lL][eE] { begin_token(yytext);
345 csql_yylval.cptr = pt_makename(yytext);
347 [gG][eE]_[lL][tT] { begin_token(yytext);
348 csql_yylval.cptr = pt_makename(yytext);
350 [gG][lL][oO][bB][aA][lL] { begin_token(yytext); return GLOBAL; }
351 [gG][oO] { begin_token(yytext); return GO; }
352 [gG][oO][tT][oO] { begin_token(yytext); return GOTO; }
353 [gG][rR][aA][nN][tT] { begin_token(yytext); return GRANT; }
354 [gG][rR][aA][nN][tT][sS] { begin_token(yytext);
355 csql_yylval.cptr = pt_makename(yytext);
357 [gG][rR][oO][uU][pP] { begin_token(yytext); return GROUP_; }
358 [gG][rR][oO][uU][pP][_][cC][oO][nN][cC][aA][tT] { begin_token(yytext);
359 csql_yylval.cptr = pt_makename(yytext);
360 return GROUP_CONCAT; }
361 [gG][rR][oO][uU][pP][sS] { begin_token(yytext);
362 csql_yylval.cptr = pt_makename(yytext);
364 [gG][tT]_[iI][nN][fF] { begin_token(yytext);
365 csql_yylval.cptr = pt_makename(yytext);
367 [gG][tT]_[lL][eE] { begin_token(yytext);
368 csql_yylval.cptr = pt_makename(yytext);
370 [gG][tT]_[lL][tT] { begin_token(yytext);
371 csql_yylval.cptr = pt_makename(yytext);
373 [hH][aA][sS][hH] { begin_token(yytext);
374 csql_yylval.cptr = pt_makename(yytext);
376 [hH][aA][vV][iI][nN][gG] { begin_token(yytext); return HAVING; }
377 [hH][eE][aA][dD][eE][rR] { begin_token(yytext);
378 csql_yylval.cptr = pt_makename(yytext);
380 [hH][eE][aA][pP] { begin_token(yytext);
381 csql_yylval.cptr = pt_makename(yytext);
383 [hH][oO][uU][rR] { begin_token(yytext); return HOUR_; }
384 [hH][oO][uU][rR]_[mM][iI][lL][lL][iI][sS][eE][cC][oO][nN][dD] { begin_token(yytext); return HOUR_MILLISECOND; }
385 [hH][oO][uU][rR]_[sS][eE][cC][oO][nN][dD] { begin_token(yytext); return HOUR_SECOND; }
386 [hH][oO][uU][rR]_[mM][iI][nN][uU][tT][eE] { begin_token(yytext); return HOUR_MINUTE; }
387 [iI][dD][eE][nN][tT][iI][tT][yY] { begin_token(yytext); return IDENTITY; }
388 [iI][fF] { begin_token(yytext); return IF; }
389 [iI][fF][nN][uU][lL][lL] { begin_token(yytext);
390 csql_yylval.cptr = pt_makename(yytext);
392 [iI][sS][nN][uU][lL][lL] { begin_token(yytext);
393 csql_yylval.cptr = pt_makename(yytext);
395 [iI][gG][nN][oO][rR][eE] { begin_token(yytext); return IGNORE_; }
396 [iI][mM][mM][eE][dD][iI][aA][tT][eE] { begin_token(yytext); return IMMEDIATE; }
397 [iI][nN] { begin_token(yytext); return IN_; }
398 [iI][nN][aA][cC][tT][iI][vV][eE] { begin_token(yytext);
399 csql_yylval.cptr = pt_makename(yytext);
401 [iI][nN][cC][rR][eE][mM][eE][nN][tT] { begin_token(yytext);
402 csql_yylval.cptr = pt_makename(yytext);
404 [iI][nN][dD][eE][xX] { begin_token(yytext); return INDEX; }
405 [iI][nN][dD][eE][xX][_][pP][rR][eE][fF][iI][xX] { begin_token(yytext); return INDEX_PREFIX; }
406 [iI][nN][dD][eE][xX][eE][sS] { begin_token(yytext);
407 csql_yylval.cptr = pt_makename(yytext);
409 [iI][nN][dD][iI][cC][aA][tT][oO][rR] { begin_token(yytext); return INDICATOR; }
410 [iI][nN][fF][iI][nN][iI][tT][eE] { begin_token(yytext);
411 csql_yylval.cptr = pt_makename(yytext);
413 [iI][nN][fF]_[lL][eE] { begin_token(yytext);
414 csql_yylval.cptr = pt_makename(yytext);
416 [iI][nN][fF]_[lL][tT] { begin_token(yytext);
417 csql_yylval.cptr = pt_makename(yytext);
419 [iI][nN][hH][eE][rR][iI][tT] { begin_token(yytext); return INHERIT; }
420 [iI][nN][iI][tT][iI][aA][lL][lL][yY] { begin_token(yytext); return INITIALLY; }
421 [iI][nN][nN][eE][rR] { begin_token(yytext); return INNER; }
422 [iI][nN][oO][uU][tT] { begin_token(yytext); return INOUT; }
423 [iI][nN][pP][uU][tT] { begin_token(yytext); return INPUT_; }
424 [iI][nN][sS][eE][rR][tT] { begin_token(yytext); return INSERT; }
425 [iI][nN][sS][tT][aA][nN][cC][eE][sS] { begin_token(yytext);
426 csql_yylval.cptr = pt_makename(yytext);
428 [iI][nN][tT][eE][rR][sS][eE][cC][tT] { begin_token(yytext); return INTERSECT; }
429 [iI][nN][tT][eE][rR][sS][eE][cC][tT][iI][oO][nN] { begin_token(yytext); return INTERSECTION; }
430 [iI][nN][tT][eE][rR][vV][aA][lL] { begin_token(yytext); return INTERVAL; }
431 [iI][nN][tT][oO] { begin_token(yytext); return INTO; }
432 [iI][nN][vV][aA][lL][iI][dD][aA][tT][eE] { begin_token(yytext);
433 csql_yylval.cptr = pt_makename(yytext);
435 [iI][nN][vV][iI][sS][iI][bB][lL][eE] { begin_token(yytext);
436 csql_yylval.cptr = pt_makename(yytext);
438 [iI][sS] { begin_token(yytext); return IS; }
439 [iI][sS][oO][lL][aA][tT][iI][oO][nN] { begin_token(yytext); return ISOLATION; }
440 [iI][nN][tT] { begin_token(yytext); return INTEGER; }
441 [iI][nN][tT][eE][gG][eE][rR] { begin_token(yytext); return INTEGER; }
442 [jJ][aA][vV][aA] { begin_token(yytext);
443 csql_yylval.cptr = pt_makename(yytext);
445 [jJ][oO][iI][nN] { begin_token(yytext); return JOIN; }
446 [jJ][oO][bB] { begin_token(yytext);
447 csql_yylval.cptr = pt_makename(yytext);
449 [jJ][sS][oO][nN] { begin_token(yytext); return JSON; }
450 [jJ][sS][oO][nN][_][aA][rR][rR][aA][yY] { begin_token(yytext);
451 // JSON_ARRAY conflicts with jansson.h
452 csql_yylval.cptr = pt_makename(yytext);
453 return JSON_ARRAY_LEX; }
454 [jJ][sS][oO][nN][_][aA][rR][rR][aA][yY][_][aA][pP][pP][eE][nN][dD] { begin_token(yytext);
455 csql_yylval.cptr = pt_makename(yytext);
456 return JSON_ARRAY_APPEND; }
457 [jJ][sS][oO][nN][_][aA][rR][rR][aA][yY][aA][gG][gG] { begin_token(yytext);
458 csql_yylval.cptr = pt_makename(yytext);
459 return JSON_ARRAYAGG; }
460 [jJ][sS][oO][nN][_][aA][rR][rR][aA][yY][_][iI][nN][sS][eE][rR][tT] { begin_token(yytext);
461 csql_yylval.cptr = pt_makename(yytext);
462 return JSON_ARRAY_INSERT; }
463 [jJ][sS][oO][nN][_][cC][oO][nN][tT][aA][iI][nN][sS] { begin_token(yytext);
464 csql_yylval.cptr = pt_makename(yytext);
465 return JSON_CONTAINS; }
466 [jJ][sS][oO][nN][_][cC][oO][nN][tT][aA][iI][nN][sS][_][pP][aA][tT][hH] { begin_token(yytext);
467 csql_yylval.cptr = pt_makename(yytext);
468 return JSON_CONTAINS_PATH; }
469 [jJ][sS][oO][nN][_][dD][eE][pP][tT][hH] { begin_token(yytext);
470 csql_yylval.cptr = pt_makename(yytext);
472 [jJ][sS][oO][nN][_][eE][xX][tT][rR][aA][cC][tT] { begin_token(yytext);
473 csql_yylval.cptr = pt_makename(yytext);
474 return JSON_EXTRACT; }
475 [jJ][sS][oO][nN][_][gG][eE][tT][_][aA][lL][lL][_][pP][aA][tT][hH][sS] { begin_token(yytext);
476 csql_yylval.cptr = pt_makename(yytext);
477 return JSON_GET_ALL_PATHS; }
478 [jJ][sS][oO][nN][_][iI][nN][sS][eE][rR][tT] { begin_token(yytext);
479 csql_yylval.cptr = pt_makename(yytext);
480 return JSON_INSERT; }
481 [jJ][sS][oO][nN][_][kK][eE][yY][sS] { begin_token(yytext);
482 csql_yylval.cptr = pt_makename(yytext);
484 [jJ][sS][oO][nN][_][lL][eE][nN][gG][tT][hH] { begin_token(yytext);
485 csql_yylval.cptr = pt_makename(yytext);
486 return JSON_LENGTH; }
487 [jJ][sS][oO][nN][_][mM][eE][rR][gG][eE] { begin_token(yytext);
488 csql_yylval.cptr = pt_makename(yytext);
490 [jJ][sS][oO][nN][_][mM][eE][rR][gG][eE][_][pP][aA][tT][cC][hH] { begin_token(yytext);
491 csql_yylval.cptr = pt_makename(yytext);
492 return JSON_MERGE_PATCH; }
493 [jJ][sS][oO][nN][_][mM][eE][rR][gG][eE][_][pP][rR][eE][sS][eE][rR][vV][eE] { begin_token(yytext);
494 csql_yylval.cptr = pt_makename(yytext);
495 return JSON_MERGE_PRESERVE; }
496 [jJ][sS][oO][nN][_][oO][bB][jJ][eE][cC][tT] { begin_token(yytext);
497 csql_yylval.cptr = pt_makename(yytext);
498 // JSON_OBJECT conflicts with jansson.h
499 return JSON_OBJECT_LEX; }
500 [jJ][sS][oO][nN][_][oO][bB][jJ][eE][cC][tT][aA][gG][gG] { begin_token(yytext);
501 csql_yylval.cptr = pt_makename(yytext);
502 return JSON_OBJECTAGG; }
503 [jJ][sS][oO][nN][_][pP][rR][eE][tT][tT][yY] { begin_token(yytext);
504 csql_yylval.cptr = pt_makename(yytext);
505 return JSON_PRETTY; }
506 [jJ][sS][oO][nN][_][qQ][uU][oO][tT][eE] { begin_token(yytext);
507 csql_yylval.cptr = pt_makename(yytext);
509 [jJ][sS][oO][nN][_][rR][eE][mM][oO][vV][eE] { begin_token(yytext);
510 csql_yylval.cptr = pt_makename(yytext);
511 return JSON_REMOVE; }
512 [jJ][sS][oO][nN][_][rR][eE][pP][lL][aA][cC][eE] { begin_token(yytext);
513 csql_yylval.cptr = pt_makename(yytext);
514 return JSON_REPLACE; }
515 [jJ][sS][oO][nN][_][sS][eE][tT] { begin_token(yytext);
516 csql_yylval.cptr = pt_makename(yytext);
518 [jJ][sS][oO][nN][_][sS][eE][aA][rR][cC][hH] { begin_token(yytext);
519 csql_yylval.cptr = pt_makename(yytext);
520 return JSON_SEARCH; }
521 [jJ][sS][oO][nN][_][tT][aA][bB][lL][eE] { begin_token(yytext);
522 csql_yylval.cptr = pt_makename(yytext);
524 [jJ][sS][oO][nN][_][tT][yY][pP][eE] { begin_token(yytext);
525 csql_yylval.cptr = pt_makename(yytext);
527 [jJ][sS][oO][nN][_][uU][nN][qQ][uU][oO][tT][eE] { begin_token(yytext);
528 csql_yylval.cptr = pt_makename(yytext);
529 return JSON_UNQUOTE; }
530 [jJ][sS][oO][nN][_][vV][aA][lL][iI][dD] { begin_token(yytext);
531 csql_yylval.cptr = pt_makename(yytext);
533 [kK][eE][yY] { begin_token(yytext); return KEY; }
534 [kK][eE][yY][sS] { begin_token(yytext);
535 csql_yylval.cptr = pt_makename(yytext);
537 [kK][iI][lL][lL] { begin_token(yytext); return KILL; }
538 [lL][aA][nN][gG][uU][aA][gG][eE] { begin_token(yytext); return LANGUAGE; }
539 [kK][eE][yY][lL][iI][mM][iI][tT] { begin_token(yytext); return KEYLIMIT; }
540 [lL][aA][gG] { begin_token(yytext);
541 csql_yylval.cptr = pt_makename(yytext);
543 [lL][aA][sS][tT] { begin_token(yytext); return LAST; }
544 [lL][aA][sS][tT]_[vV][aA][lL][uU][eE] { begin_token(yytext);
545 csql_yylval.cptr = pt_makename(yytext);
547 [lL][cC][aA][sS][eE] { begin_token(yytext);
548 csql_yylval.cptr = pt_makename(yytext);
550 [lL][eE][aA][dD] { begin_token(yytext);
551 csql_yylval.cptr = pt_makename(yytext);
553 [lL][eE][aA][dD][iI][nN][gG] { begin_token(yytext); return LEADING_; }
554 [lL][eE][aA][vV][eE] { begin_token(yytext); return LEAVE; }
555 [lL][eE][fF][tT] { begin_token(yytext); return LEFT; }
556 [lL][eE][sS][sS] { begin_token(yytext); return LESS; }
557 [lL][eE][vV][eE][lL] { begin_token(yytext); return LEVEL; }
558 [lL][iI][kK][eE] { begin_token(yytext); return LIKE; }
559 [lL][iI][mM][iI][tT] { begin_token(yytext); return LIMIT; }
560 [lL][iI][sS][tT] { begin_token(yytext); return LIST; }
561 [lL][oO][cC][aA][lL] { begin_token(yytext); return LOCAL; }
562 [lL][oO][cC][aA][lL]_[tT][rR][aA][nN][sS][aA][cC][tT][iI][oO][nN]_[iI][dD] { begin_token(yytext); return LOCAL_TRANSACTION_ID; }
563 [lL][oO][cC][aA][lL][tT][iI][mM][eE] { begin_token(yytext); return LOCALTIME; }
564 [lL][oO][cC][aA][lL][tT][iI][mM][eE][sS][tT][aA][mM][pP] { begin_token(yytext); return LOCALTIMESTAMP; }
565 [lL][oO][cC][kK] { begin_token(yytext);
566 csql_yylval.cptr = pt_makename(yytext);
568 [lL][oO][gG] { begin_token(yytext);
569 csql_yylval.cptr = pt_makename(yytext);
571 [lL][oO][oO][pP] { begin_token(yytext); return LOOP; }
572 [lL][oO][wW][eE][rR] { begin_token(yytext); return LOWER; }
573 [mM][aA][tT][cC][hH] { begin_token(yytext); return MATCH; }
574 [mM][aA][tT][cC][hH][eE][dD] { begin_token(yytext); return MATCHED; }
575 [mM][aA][xX][iI][mM][uU][mM] { begin_token(yytext);
576 csql_yylval.cptr = pt_makename(yytext);
578 [mM][aA][xX][vV][aA][lL][uU][eE] { begin_token(yytext);
579 csql_yylval.cptr = pt_makename(yytext);
581 [mM][eE][dD][iI][uU][mM][iI][nN][tT] { begin_token(yytext); return INTEGER; }
582 [mM][eE][dD][iI][aA][nN] { begin_token(yytext);
583 csql_yylval.cptr = pt_makename(yytext);
585 [mM][eE][mM][bB][eE][rR][sS] { begin_token(yytext);
586 csql_yylval.cptr = pt_makename(yytext);
588 [mM][eE][rR][gG][eE] { begin_token(yytext); return MERGE; }
589 [mM][eE][tT][hH][oO][dD] { begin_token(yytext); return METHOD; }
590 [mM][iI][lL][lL][iI][sS][eE][cC][oO][nN][dD] { begin_token(yytext); return MILLISECOND_; }
591 [mM][iI][nN][uU][tT][eE] { begin_token(yytext); return MINUTE_; }
592 [mM][iI][nN][uU][tT][eE]_[mM][iI][lL][lL][iI][sS][eE][cC][oO][nN][dD] { begin_token(yytext); return MINUTE_MILLISECOND; }
593 [mM][iI][nN][uU][tT][eE]_[sS][eE][cC][oO][nN][dD] { begin_token(yytext); return MINUTE_SECOND; }
594 [mM][iI][nN][vV][aA][lL][uU][eE] { begin_token(yytext);
595 csql_yylval.cptr = pt_makename(yytext);
597 [mM][oO][dD] { begin_token(yytext); return MOD; }
598 [mM][oO][dD][iI][fF][yY] { begin_token(yytext); return MODIFY; }
599 [mM][oO][dD][uU][lL][eE] { begin_token(yytext); return MODULE; }
600 [mM][oO][nN][tT][hH] { begin_token(yytext); return MONTH_; }
601 [mM][uU][lL][tT][iI][sS][eE][tT] { begin_token(yytext); return MULTISET; }
602 [mM][uU][lL][tT][iI][sS][eE][tT]_[oO][fF] { begin_token(yytext); return MULTISET_OF; }
603 [mM][aA][xX] { begin_token(yytext); return Max; }
604 [mM][iI][nN] { begin_token(yytext); return Min; }
605 [mM][oO][nN][eE][tT][aA][rR][yY] { begin_token(yytext); return Monetary; }
606 [nN][aA] { begin_token(yytext); return NA; }
607 [nN][aA][mM][eE] { begin_token(yytext);
608 csql_yylval.cptr = pt_makename(yytext);
610 [nN][aA][mM][eE][sS] { begin_token(yytext); return NAMES; }
611 [nN][aA][tT][iI][oO][nN][aA][lL] { begin_token(yytext); return NATIONAL; }
612 [nN][aA][tT][uU][rR][aA][lL] { begin_token(yytext); return NATURAL; }
613 [nN][cC][hH][aA][rR] { begin_token(yytext); return NCHAR; }
614 [nN][eE][sS][tT][eE][dD] { begin_token(yytext); return NESTED; }
615 [nN][eE][xX][tT] { begin_token(yytext); return NEXT; }
616 [nN][oO] { begin_token(yytext); return NO; }
617 [nN][oO][cC][aA][cC][hH][eE] { begin_token(yytext);
618 csql_yylval.cptr = pt_makename(yytext);
620 [nN][oO][cC][yY][cC][lL][eE] { begin_token(yytext);
621 csql_yylval.cptr = pt_makename(yytext);
623 [nN][oO][mM][aA][xX][vV][aA][lL][uU][eE] { begin_token(yytext);
624 csql_yylval.cptr = pt_makename(yytext);
626 [nN][oO][mM][iI][nN][vV][aA][lL][uU][eE] { begin_token(yytext);
627 csql_yylval.cptr = pt_makename(yytext);
629 [nN][oO][nN][eE] { begin_token(yytext); return NONE; }
630 [nN][oO][tT] { begin_token(yytext); return NOT; }
631 [nN][tT][hH]_[vV][aA][lL][uU][eE] { begin_token(yytext);
632 csql_yylval.cptr = pt_makename(yytext);
634 [nN][tT][iI][lL][eE] { begin_token(yytext);
635 csql_yylval.cptr = pt_makename(yytext);
637 [nN][uU][lL][lL][iI][fF] { begin_token(yytext); return NULLIF; }
638 [nN][uU][mM][eE][rR][iI][cC] { begin_token(yytext); return NUMERIC; }
639 [nN][uU][lL][lL] { begin_token(yytext); return Null; }
640 [nN][uU][lL][lL][sS] { begin_token(yytext);
641 csql_yylval.cptr = pt_makename(yytext);
643 [oO][bB][jJ][eE][cC][tT] { begin_token(yytext); return OBJECT; }
644 [oO][cC][tT][eE][tT]_[lL][eE][nN][gG][tT][hH] { begin_token(yytext); return OCTET_LENGTH; }
645 [oO][fF] { begin_token(yytext); return OF; }
646 [oO][fF][fF] { begin_token(yytext); return OFF_; }
647 [oO][fF][fF][sS][eE][tT] { begin_token(yytext);
648 csql_yylval.cptr = pt_makename(yytext);
650 [oO][nN] { begin_token(yytext); return ON_; }
651 [oO][nN][lL][iI][nN][eE] { begin_token(yytext); return ONLINE; }
652 [oO][nN][lL][yY] { begin_token(yytext); return ONLY; }
653 [oO][pP][eE][nN] { begin_token(yytext);
654 csql_yylval.cptr = pt_makename(yytext);
656 [oO][pP][tT][iI][mM][iI][zZ][aA][tT][iI][oO][nN] { begin_token(yytext); return OPTIMIZATION; }
657 [oO][pP][tT][iI][oO][nN] { begin_token(yytext); return OPTION; }
658 [oO][rR] { begin_token(yytext); return OR; }
659 [oO][rR][dD][eE][rR] { begin_token(yytext); return ORDER; }
660 [oO][rR][dD][iI][nN][aA][lL][iI][tT][yY] { begin_token(yytext); return ORDINALITY; }
661 [oO][uU][tT] { begin_token(yytext); return OUT_; }
662 [oO][uU][tT][eE][rR] { begin_token(yytext); return OUTER; }
663 [oO][uU][tT][pP][uU][tT] { begin_token(yytext); return OUTPUT; }
664 [oO][vV][eE][rR] { begin_token(yytext); return OVER; }
665 [oO][vV][eE][rR][lL][aA][pP][sS] { begin_token(yytext); return OVERLAPS; }
666 [oO][wW][nN][eE][rR] { begin_token(yytext);
667 csql_yylval.cptr = pt_makename(yytext);
669 [pP][aA][gG][eE] { begin_token(yytext);
670 csql_yylval.cptr = pt_makename(yytext);
672 [pP][aA][rR][aA][lL][lL][eE][lL] { begin_token(yytext); return PARALLEL; }
673 [pP][aA][rR][aA][mM][eE][tT][eE][rR][sS] { begin_token(yytext); return PARAMETERS; }
674 [pP][aA][rR][tT][iI][aA][lL] { begin_token(yytext); return PARTIAL; }
675 [pP][aA][rR][tT][iI][tT][iI][oO][nN] { begin_token(yytext);
676 csql_yylval.cptr = pt_makename(yytext);
678 [pP][aA][rR][tT][iI][tT][iI][oO][nN][iI][nN][gG] { begin_token(yytext);
679 csql_yylval.cptr = pt_makename(yytext);
680 return PARTITIONING; }
681 [pP][aA][rR][tT][iI][tT][iI][oO][nN][sS] { begin_token(yytext);
682 csql_yylval.cptr = pt_makename(yytext);
684 [pP][aA][sS][sS][wW][oO][rR][dD] { begin_token(yytext);
685 csql_yylval.cptr = pt_makename(yytext);
687 [pP][aA][tT][hH] { begin_token(yytext);
688 csql_yylval.cptr = pt_makename(yytext);
690 [pP][eE][rR][cC][eE][nN][tT][_][rR][aA][nN][kK] { begin_token(yytext);
691 csql_yylval.cptr = pt_makename(yytext);
692 return PERCENT_RANK; }
693 [pP][eE][rR][cC][eE][nN][tT][iI][lL][eE]_[cC][oO][nN][tT] { begin_token(yytext);
694 csql_yylval.cptr = pt_makename(yytext);
695 return PERCENTILE_CONT; }
696 [pP][eE][rR][cC][eE][nN][tT][iI][lL][eE]_[dD][iI][sS][cC] { begin_token(yytext);
697 csql_yylval.cptr = pt_makename(yytext);
698 return PERCENTILE_DISC; }
699 [pP][oO][sS][iI][tT][iI][oO][nN] { begin_token(yytext); return POSITION; }
700 [pP][rR][eE][cC][iI][sS][iI][oO][nN] { begin_token(yytext); return PRECISION; }
701 [pP][rR][eE][pP][aA][rR][eE] { begin_token(yytext); return PREPARE; }
702 [pP][rR][eE][sS][eE][rR][vV][eE] { begin_token(yytext); return PRESERVE; }
703 [pP][rR][iI][mM][aA][rR][yY] { begin_token(yytext); return PRIMARY; }
704 [pP][rR][iI][nN][tT] { begin_token(yytext);
705 csql_yylval.cptr = pt_makename(yytext);
707 [pP][rR][iI][oO][rR] { begin_token(yytext); return PRIOR; }
708 [pP][rR][iI][oO][rR][iI][tT][yY] { begin_token(yytext);
709 csql_yylval.cptr = pt_makename(yytext);
711 [pP][rR][iI][vV][iI][lL][eE][gG][eE][sS] { begin_token(yytext); return PRIVILEGES; }
712 [pP][rR][oO][cC][eE][dD][uU][rR][eE] { begin_token(yytext); return PROCEDURE; }
713 [pP][rR][oO][mM][oO][tT][eE] { begin_token(yytext); return PROMOTE; }
714 [qQ][uU][aA][rR][tT][eE][rR] { begin_token(yytext);
715 csql_yylval.cptr = pt_makename(yytext);
717 [qQ][uU][eE][rR][yY] { begin_token(yytext); return QUERY; }
718 [qQ][uU][eE][uU][eE][sS] { begin_token(yytext);
719 csql_yylval.cptr = pt_makename(yytext);
721 [rR][aA][nN][kK] { begin_token(yytext);
722 csql_yylval.cptr = pt_makename(yytext);
724 [rR][aA][nN][gG][eE] { begin_token(yytext);
725 csql_yylval.cptr = pt_makename(yytext);
727 [rR][eE][aA][dD] { begin_token(yytext); return READ; }
728 [rR][eE][aA][lL] { begin_token(yytext); return FLOAT_; }
729 [rR][eE][bB][uU][iI][lL][dD] { begin_token(yytext); return REBUILD; }
730 [rR][eE][cC][uU][rR][sS][iI][vV][eE] { begin_token(yytext); return RECURSIVE; }
731 [rR][eE][fF] { begin_token(yytext); return REF; }
732 [rR][eE][fF][eE][rR][eE][nN][cC][eE][sS] { begin_token(yytext); return REFERENCES; }
733 [rR][eE][fF][eE][rR][eE][nN][cC][iI][nN][gG] { begin_token(yytext); return REFERENCING; }
734 [rR][eE][gG][eE][xX][pP] { begin_token(yytext); return REGEXP; }
735 [rR][eE][gG][eE][xX][pP][_][cC][oO][uU][nN][tT] { begin_token(yytext); return REGEXP_COUNT; }
736 [rR][eE][gG][eE][xX][pP][_][iI][nN][sS][tT][rR] { begin_token(yytext); return REGEXP_INSTR; }
737 [rR][eE][gG][eE][xX][pP][_][lL][iI][kK][eE] { begin_token(yytext); return REGEXP_LIKE; }
738 [rR][eE][gG][eE][xX][pP][_][rR][eE][pP][lL][aA][cC][eE] { begin_token(yytext); return REGEXP_REPLACE; }
739 [rR][eE][gG][eE][xX][pP][_][sS][uU][bB][sS][tT][rR] { begin_token(yytext); return REGEXP_SUBSTR; }
740 [rR][eE][jJ][eE][cC][tT] { begin_token(yytext);
741 csql_yylval.cptr = pt_makename(yytext);
743 [rR][eE][lL][aA][tT][iI][vV][eE] { begin_token(yytext); return RELATIVE_; }
744 [rR][eE][mM][oO][vV][eE] { begin_token(yytext);
745 csql_yylval.cptr = pt_makename(yytext);
747 [rR][eE][nN][aA][mM][eE] { begin_token(yytext); return RENAME; }
748 [rR][eE][oO][rR][gG][aA][nN][iI][zZ][eE] { begin_token(yytext);
749 csql_yylval.cptr = pt_makename(yytext);
751 [rR][eE][pP][eE][aA][tT][aA][bB][lL][eE] { begin_token(yytext);
752 csql_yylval.cptr = pt_makename(yytext);
754 [rR][eE][pP][lL][aA][cC][eE] { begin_token(yytext); return REPLACE; }
755 [rR][eE][sS][iI][gG][nN][aA][lL] { begin_token(yytext); return RESIGNAL; }
756 [rR][eE][sS][pP][eE][cC][tT] { begin_token(yytext);
757 csql_yylval.cptr = pt_makename(yytext);
759 [rR][eE][sS][tT][rR][iI][cC][tT] { begin_token(yytext); return RESTRICT; }
760 [rR][eE][tT][aA][iI][nN] { begin_token(yytext);
761 csql_yylval.cptr = pt_makename(yytext);
763 [rR][eE][tT][uU][rR][nN] { begin_token(yytext); return RETURN; }
764 [rR][eE][tT][uU][rR][nN][sS] { begin_token(yytext); return RETURNS; }
765 [rR][eE][uU][sS][eE]_[oO][iI][dD] { begin_token(yytext);
766 csql_yylval.cptr = pt_makename(yytext);
768 [rR][eE][vV][eE][rR][sS][eE] { begin_token(yytext);
769 csql_yylval.cptr = pt_makename(yytext);
771 [dD][iI][sS][kK][_][sS][iI][zZ][Ee] { begin_token(yytext);
772 csql_yylval.cptr = pt_makename(yytext);
774 [rR][eE][vV][oO][kK][eE] { begin_token(yytext); return REVOKE; }
775 [rR][iI][gG][hH][tT] { begin_token(yytext); return RIGHT; }
776 [rR][lL][iI][kK][eE] { begin_token(yytext); return RLIKE; }
777 [rR][oO][lL][eE] { begin_token(yytext); return ROLE; }
778 [rR][oO][lL][lL][bB][aA][cC][kK] { begin_token(yytext); return ROLLBACK; }
779 [rR][oO][lL][lL][uU][pP] { begin_token(yytext); return ROLLUP; }
780 [rR][oO][uU][tT][iI][nN][eE] { begin_token(yytext); return ROUTINE; }
781 [rR][oO][wW] { begin_token(yytext); return ROW; }
782 [rR][oO][wW]_[nN][uU][mM][bB][eE][rR] { begin_token(yytext);
783 csql_yylval.cptr = pt_makename(yytext);
785 [rR][oO][wW][nN][uU][mM] { begin_token(yytext); return ROWNUM; }
786 [rR][oO][wW][sS] { begin_token(yytext); return ROWS; }
787 [sS][aA][vV][eE][pP][oO][iI][nN][tT] { begin_token(yytext); return SAVEPOINT; }
788 [sS][cC][hH][eE][mM][aA] { begin_token(yytext); return SCHEMA; }
789 [sS][cC][oO][pP][eE]___ { begin_token(yytext); return SCOPE; }
790 [sS][cC][rR][oO][lL][lL] { begin_token(yytext); return SCROLL; }
791 [sS][eE][aA][rR][cC][hH] { begin_token(yytext); return SEARCH; }
792 [sS][eE][cC][oO][nN][dD] { begin_token(yytext); return SECOND_; }
793 [sS][eE][cC][oO][nN][dD]_[mM][iI][lL][lL][iI][sS][eE][cC][oO][nN][dD] { begin_token(yytext); return SECOND_MILLISECOND; }
794 [sS][eE][cC][tT][iI][oO][nN] { begin_token(yytext); return SECTION; }
795 [sS][eE][cC][tT][iI][oO][nN][sS] { begin_token(yytext);
796 csql_yylval.cptr = pt_makename(yytext);
798 [sS][eE][lL][eE][cC][tT] { begin_token(yytext); return SELECT; }
799 [sS][eE][nN][sS][iI][tT][iI][vV][eE] { begin_token(yytext); return SENSITIVE; }
800 [sS][eE][pP][aA][rR][aA][tT][oO][rR] { begin_token(yytext);
801 csql_yylval.cptr = pt_makename(yytext);
803 [sS][eE][qQ][uU][eE][nN][cC][eE] { begin_token(yytext); return SEQUENCE; }
804 [sS][eE][qQ][uU][eE][nN][cC][eE]_[oO][fF] { begin_token(yytext); return SEQUENCE_OF; }
805 [sS][eE][rR][iI][aA][lL] { begin_token(yytext);
806 csql_yylval.cptr = pt_makename(yytext);
808 [sS][eE][rR][iI][aA][lL][iI][zZ][aA][bB][lL][eE] { begin_token(yytext); return SERIALIZABLE; }
809 [sS][eE][sS][sS][iI][oO][nN] { begin_token(yytext); return SESSION; }
810 [sS][eE][sS][sS][iI][oO][nN][tT][iI][mM][eE][zZ][oO][nN][eE] { begin_token(yytext); return SESSION_TIMEZONE; }
811 [sS][eE][sS][sS][iI][oO][nN]_[uU][sS][eE][rR] { begin_token(yytext); return SESSION_USER; }
812 [sS][eE][tT] { begin_token(yytext); return SET; }
813 [sS][eE][tT][eE][qQ] { begin_token(yytext); return SETEQ; }
814 [sS][eE][tT][nN][eE][qQ] { begin_token(yytext); return SETNEQ; }
815 [sS][eE][tT]_[oO][fF] { begin_token(yytext); return SET_OF; }
816 [sS][hH][aA][rR][eE][dD] { begin_token(yytext); return SHARED; }
817 [sS][hH][oO][wW] { begin_token(yytext);
818 csql_yylval.cptr = pt_makename(yytext);
820 [sS][iI][bB][lL][iI][nN][gG][sS] { begin_token(yytext); return SIBLINGS; }
821 [sS][hH][oO][rR][tT] { begin_token(yytext); return SmallInt; }
822 [sS][iI][mM][iI][lL][aA][rR] { begin_token(yytext); return SIMILAR; }
823 [sS][iI][zZ][eE] { begin_token(yytext); return SIZE_; }
824 [sS][lL][oO][tT][sS] { begin_token(yytext);
825 csql_yylval.cptr = pt_makename(yytext);
827 [sS][lL][oO][tT][tT][eE][dD] { begin_token(yytext);
828 csql_yylval.cptr = pt_makename(yytext);
831 [sS][oO][mM][eE] { begin_token(yytext); return SOME; }
832 [sS][qQ][lL] { begin_token(yytext); return SQL; }
833 [sS][qQ][lL][cC][oO][dD][eE] { begin_token(yytext); return SQLCODE; }
834 [sS][qQ][lL][eE][rR][rR][oO][rR] { begin_token(yytext); return SQLERROR; }
835 [sS][qQ][lL][eE][xX][cC][eE][pP][tT][iI][oO][nN] { begin_token(yytext); return SQLEXCEPTION; }
836 [sS][qQ][lL][sS][tT][aA][tT][eE] { begin_token(yytext); return SQLSTATE; }
837 [sS][qQ][lL][wW][aA][rR][nN][iI][nN][gG] { begin_token(yytext); return SQLWARNING; }
838 [sS][tT][aA][bB][iI][lL][iI][tT][yY] { begin_token(yytext);
839 csql_yylval.cptr = pt_makename(yytext);
841 [sS][tT][aA][rR][tT] { begin_token(yytext);
842 csql_yylval.cptr = pt_makename(yytext);
844 [sS][tT][aA][tT][eE][mM][eE][nN][tT] { begin_token(yytext);
845 csql_yylval.cptr = pt_makename(yytext);
847 [sS][tT][aA][tT][iI][sS][tT][iI][cC][sS] { begin_token(yytext); return STATISTICS; }
848 [sS][tT][aA][tT][uU][sS] { begin_token(yytext);
849 csql_yylval.cptr = pt_makename(yytext);
851 [sS][tT][dD][dD][eE][vV] { begin_token(yytext);
852 csql_yylval.cptr = pt_makename(yytext);
854 [sS][tT][dD][dD][eE][vV][_][pP][oO][pP] { begin_token(yytext);
855 csql_yylval.cptr = pt_makename(yytext);
857 [sS][tT][dD][dD][eE][vV][_][sS][aA][mM][pP] { begin_token(yytext);
858 csql_yylval.cptr = pt_makename(yytext);
859 return STDDEV_SAMP; }
860 [sS][tT][rR][_][tT][oO][_][dD][aA][tT][eE] { begin_token(yytext);
861 csql_yylval.cptr = pt_makename(yytext);
862 return STR_TO_DATE; }
863 [sS][uU][bB][cC][lL][aA][sS][sS] { begin_token(yytext); return SUBCLASS; }
864 [sS][uU][bB][dD][aA][tT][eE] { begin_token(yytext);
865 csql_yylval.cptr = pt_makename(yytext);
867 [sS][uU][bB][sS][eE][tT] { begin_token(yytext); return SUBSET; }
868 [sS][uU][bB][sS][eE][tT][eE][qQ] { begin_token(yytext); return SUBSETEQ; }
869 [sS][uU][bB][sS][tT][rR][iI][nN][gG] { begin_token(yytext); return SUBSTRING_; }
870 [sS][uU][mM] { begin_token(yytext); return SUM; }
871 [sS][uU][pP][eE][rR][cC][lL][aA][sS][sS] { begin_token(yytext); return SUPERCLASS; }
872 [sS][uU][pP][eE][rR][sS][eE][tT] { begin_token(yytext); return SUPERSET; }
873 [sS][uU][pP][eE][rR][sS][eE][tT][eE][qQ] { begin_token(yytext); return SUPERSETEQ; }
874 [sS][yY][sS][_][cC][oO][nN][nN][eE][cC][tT][_][bB][yY][_][pP][aA][tT][hH] { begin_token(yytext); return SYS_CONNECT_BY_PATH; }
875 [sS][yY][sS]_[dD][aA][tT][eE] { begin_token(yytext); return SYS_DATE; }
876 [sS][yY][sS][dD][aA][tT][eE] { begin_token(yytext); return SYS_DATE; }
877 [sS][yY][sS]_[tT][iI][mM][eE] { begin_token(yytext); return SYS_TIME_; }
878 [sS][yY][sS][tT][iI][mM][eE] { begin_token(yytext); return SYS_TIME_; }
879 [sS][yY][sS]_[tT][iI][mM][eE][sS][tT][aA][mM][pP] { begin_token(yytext); return SYS_TIMESTAMP; }
880 [sS][yY][sS][tT][iI][mM][eE][sS][tT][aA][mM][pP] { begin_token(yytext); return SYS_TIMESTAMP; }
881 [sS][yY][sS]_[dD][aA][tT][eE][tT][iI][mM][eE] { begin_token(yytext); return SYS_DATETIME; }
882 [sS][yY][sS][dD][aA][tT][eE][tT][iI][mM][eE] { begin_token(yytext); return SYS_DATETIME; }
883 [sS][yY][sS][tT][eE][mM] { begin_token(yytext);
884 csql_yylval.cptr = pt_makename(yytext);
886 [sS][yY][sS][tT][eE][mM]_[uU][sS][eE][rR] { begin_token(yytext); return SYSTEM_USER; }
887 [sS][mM][aA][lL][lL][iI][nN][tT] { begin_token(yytext); return SmallInt; }
888 [sS][tT][rR][iI][nN][gG] { begin_token(yytext); return String; }
889 [tT][aA][bB][lL][eE] { begin_token(yytext); return TABLE; }
890 [tT][aA][bB][lL][eE][sS] { begin_token(yytext);
891 csql_yylval.cptr = pt_makename(yytext);
893 [tT][eE][mM][pP][oO][rR][aA][rR][yY] { begin_token(yytext); return TEMPORARY; }
894 [tT][eE][xX][tT] { begin_token(yytext);
895 csql_yylval.cptr = pt_makename(yytext);
897 [tT][hH][eE][nN] { begin_token(yytext); return THEN; }
898 [tT][hH][rR][eE][aA][dD][sS] { begin_token(yytext);
899 csql_yylval.cptr = pt_makename(yytext);
901 [tT][iI][mM][eE][oO][uU][tT] { begin_token(yytext);
902 csql_yylval.cptr = pt_makename(yytext);
904 [tT][iI][mM][eE][sS][tT][aA][mM][pP] { begin_token(yytext); return TIMESTAMP; }
905 [tT][iI][mM][eE][sS][tT][aA][mM][pP][tT][zZ] { begin_token(yytext); return TIMESTAMPTZ; }
906 [tT][iI][mM][eE][sS][tT][aA][mM][pP][lL][tT][zZ] { begin_token(yytext); return TIMESTAMPLTZ; }
907 [tT][iI][mM][eE][zZ][oO][nN][eE] { begin_token(yytext); return TIMEZONE; }
908 [tT][iI][mM][eE][zZ][oO][nN][eE][sS] { begin_token(yytext); return TIMEZONES; }
909 [tT][iI][mM][eE][zZ][oO][nN][eE]_[hH][oO][uU][rR] { begin_token(yytext); return TIMEZONE_HOUR; }
910 [tT][iI][mM][eE][zZ][oO][nN][eE]_[mM][iI][nN][uU][tT][eE] { begin_token(yytext); return TIMEZONE_MINUTE; }
911 [tT][oO] { begin_token(yytext); return TO; }
912 [tT][rR][aA][cC][eE] { begin_token(yytext);
913 csql_yylval.cptr = pt_makename(yytext);
915 [tT][rR][aA][iI][lL][iI][nN][gG] { begin_token(yytext); return TRAILING_; }
916 [tT][rR][aA][nN] { begin_token(yytext);
917 csql_yylval.cptr = pt_makename(yytext);
919 [tT][rR][aA][nN][sS][aA][cC][tT][iI][oO][nN] { begin_token(yytext); return TRANSACTION; }
920 [tT][rR][aA][nN][sS][lL][aA][tT][eE] { begin_token(yytext); return TRANSLATE; }
921 [tT][rR][aA][nN][sS][lL][aA][tT][iI][oO][nN] { begin_token(yytext); return TRANSLATION; }
922 [tT][rR][iI][gG][gG][eE][rR] { begin_token(yytext); return TRIGGER; }
923 [tT][rR][iI][gG][gG][eE][rR][sS] { begin_token(yytext);
924 csql_yylval.cptr = pt_makename(yytext);
926 [tT][rR][iI][mM] { begin_token(yytext); return TRIM; }
927 [tT][hH][aA][nN] { begin_token(yytext);
928 csql_yylval.cptr = pt_makename(yytext);
930 [tT][iI][mM][eE] { begin_token(yytext); return Time; }
931 [tT][iI][nN][yY][iI][nN][tT] { begin_token(yytext); return SmallInt; }
932 [tT][rR][uU][eE] { begin_token(yytext); return True; }
933 [tT][rR][uU][nN][cC][aA][tT][eE] { begin_token(yytext); return TRUNCATE; }
934 [uU][cC][aA][sS][eE] { begin_token(yytext);
935 csql_yylval.cptr = pt_makename(yytext);
937 [uU][nN][cC][oO][mM][mM][iI][tT][tT][eE][dD] { begin_token(yytext);
938 csql_yylval.cptr = pt_makename(yytext);
939 return UNCOMMITTED; }
940 [uU][nN][dD][eE][rR] { begin_token(yytext); return UNDER; }
941 [uU][nN][iI][qQ][uU][eE] { begin_token(yytext); return UNIQUE; }
942 [uU][nN][kK][nN][oO][wW][nN] { begin_token(yytext); return UNKNOWN; }
943 [uU][pP][dD][aA][tT][eE] { begin_token(yytext); return UPDATE; }
944 [uU][pP][pP][eE][rR] { begin_token(yytext); return UPPER; }
945 [uU][sS][aA][gG][eE] { begin_token(yytext); return USAGE; }
946 [uU][sS][eE] { begin_token(yytext); return USE; }
947 [uU][sS][eE][rR] { begin_token(yytext); return USER; }
948 [uU][sS][iI][nN][gG] { begin_token(yytext); return USING; }
949 [uU][nN][iI][oO][nN] { begin_token(yytext); return Union; }
950 [uU][tT][iI][mM][eE] { begin_token(yytext); return Utime; }
951 [vV][aA][cC][uU][uU][mM] { begin_token(yytext); return VACUUM; }
952 [vV][aA][lL][uU][eE] { begin_token(yytext); return VALUE; }
953 [vV][aA][lL][uU][eE][sS] { begin_token(yytext); return VALUES; }
954 [vV][aA][rR][_][pP][oO][pP] { begin_token(yytext);
955 csql_yylval.cptr = pt_makename(yytext);
957 [vV][aA][rR][_][sS][aA][mM][pP] { begin_token(yytext);
958 csql_yylval.cptr = pt_makename(yytext);
960 [vV][aA][rR][cC][hH][aA][rR] { begin_token(yytext); return VARCHAR; }
961 [vV][aA][rR][iI][aA][bB][lL][eE] { begin_token(yytext); return VARIABLE_; }
962 [vV][aA][rR][iI][aA][nN][cC][eE] { begin_token(yytext);
963 csql_yylval.cptr = pt_makename(yytext);
965 [vV][aA][rR][yY][iI][nN][gG] { begin_token(yytext); return VARYING; }
966 [vV][cC][lL][aA][sS][sS] { begin_token(yytext); return VCLASS; }
967 [vV][iI][eE][wW] { begin_token(yytext); return VIEW; }
968 [vV][iI][sS][iI][bB][lL][eE] { begin_token(yytext);
969 csql_yylval.cptr = pt_makename(yytext);
971 [vV][oO][lL][uU][mM][eE] { begin_token(yytext);
972 csql_yylval.cptr = pt_makename(yytext);
974 [wW][eE][eE][kK] { begin_token(yytext);
975 csql_yylval.cptr = pt_makename(yytext);
977 [wW][hH][eE][nN] { begin_token(yytext); return WHEN; }
978 [wW][hH][eE][nN][eE][vV][eE][rR] { begin_token(yytext); return WHENEVER; }
979 [wW][hH][eE][rR][eE] { begin_token(yytext); return WHERE; }
980 [wW][hH][iI][lL][eE] { begin_token(yytext); return WHILE; }
981 [wW][iI][tT][hH] { begin_token(yytext); return WITH; }
982 [wW][iI][tT][hH][iI][nN] { begin_token(yytext);
983 csql_yylval.cptr = pt_makename(yytext);
985 [wW][iI][tT][hH][oO][uU][tT] { begin_token(yytext); return WITHOUT; }
986 [wW][oO][rR][kK] { begin_token(yytext); return WORK; }
987 [wW][oO][rR][kK][sS][pP][aA][cC][eE] { begin_token(yytext);
988 csql_yylval.cptr = pt_makename(yytext);
990 [wW][rR][iI][tT][eE] { begin_token(yytext); return WRITE; }
991 [xX][oO][rR] { begin_token(yytext); return XOR; }
992 [yY][eE][aA][rR] { begin_token(yytext); return YEAR_; }
993 [yY][eE][aA][rR]_[mM][oO][nN][tT][hH] { begin_token(yytext); return YEAR_MONTH; }
994 [zZ][oO][nN][eE] { begin_token(yytext); return ZONE; }
997 \\N { begin_token(yytext); return Null; }
999 "->" { begin_token(yytext); return RIGHT_ARROW; }
1000 "." { begin_token(yytext); return DOT; }
1001 "->>" { begin_token(yytext); return DOUBLE_RIGHT_ARROW; }
1003 begin_token(yytext);
1004 if (!prm_get_bool_value (PRM_ID_PIPES_AS_CONCAT))
1010 "<>" { begin_token(yytext); return COMP_NOT_EQ; }
1011 ">=" { begin_token(yytext); return COMP_GE; }
1012 "<=" { begin_token(yytext); return COMP_LE; }
1013 "?:" { begin_token(yytext); return PARAM_HEADER; }
1014 "!=" { begin_token(yytext); return COMP_NOT_EQ; }
1015 "<<" { begin_token(yytext); return BITSHIFT_LEFT; }
1016 ">>" { begin_token(yytext); return BITSHIFT_RIGHT; }
1017 "%" { begin_token(yytext); return MOD; }
1018 "<=>" { begin_token(yytext); return COMP_NULLSAFE_EQ; }
1019 "&&" { begin_token(yytext); return AND; }
1020 ":=" { begin_token(yytext); return VAR_ASSIGN; }
1027 begin_token(yytext);
1028 len = strlen(yytext);
1032 /* loop until len - 1, in case of 0000000000000000000000 */
1033 for (i = 0; i < len - 1 && yytext[i] == '0'; i++)
1036 csql_yylval.cptr = pt_makename(&yytext[i]);
1037 return UNSIGNED_INTEGER;
1042 ([0-9]+[Ee][\+\-]?[0-9]+[fF]?)|([0-9]*\.[0-9]+([Ee][\+\-]?[0-9]+)?[fF]?)|([0-9]+\.[0-9]*([Ee][\+\-]?[0-9]+)?[fF]?) {
1046 begin_token(yytext);
1047 len = strlen(yytext);
1051 if (len < 253 && yytext[len-1] == '.')
1053 strncpy(buff, yytext, sizeof(buff));
1056 csql_yylval.cptr = pt_makename(buff);
1060 csql_yylval.cptr = pt_makename(yytext);
1062 return UNSIGNED_REAL;
1065 _[eE][uU][cC][kK][rR]['] {
1066 BEGIN (QUOTED_EUCKR_STRING);
1067 csql_yylval.cptr = pt_append_string(this_parser, NULL, "");
1070 _[iI][sS][oO]88591['] {
1071 BEGIN (QUOTED_ISO_STRING);
1072 csql_yylval.cptr = pt_append_string(this_parser, NULL, "");
1075 _[bB][iI][nN][aA][rR][yY]['] {
1076 BEGIN (QUOTED_BINARY_STRING);
1077 csql_yylval.cptr = pt_append_string(this_parser, NULL, "");
1081 BEGIN (QUOTED_UTF8_STRING);
1082 csql_yylval.cptr = pt_append_string(this_parser, NULL, "");
1085 ([a-zA-Z_#]|([\xc0-\xfe]))([a-zA-Z_#0-9]|([\x80-\xfe]))* { begin_token(yytext);
1086 if (strlen(yytext) >= 254)
1088 csql_yylval.cptr = pt_makename(yytext);
1092 "."[ \t\r\n]*([a-zA-Z_#]|([\xc0-\xfe]))([a-zA-Z_#0-9]|([\x80-\xfe]))* {
1097 yybuffer_pos -= csql_yyleng;
1104 begin_token(yytext);
1106 len = strlen(yytext);
1112 for (i = 1; i < len - 1 && IS_BLANK_CHAR (yytext[i]); i++)
1115 csql_yylval.cptr = pt_makename(&yytext[i]);
1117 /* Distinguish some special words/tokens from normal identifiers (IdName).
1118 * Because these special words (companioned with DOT/RIGHT_ARROW) are
1119 * reserved for special use purpose in some clauses' context.
1121 if (strcasecmp (csql_yylval.cptr, "NONE") == 0)
1125 else if (strcasecmp (csql_yylval.cptr, "IDENTITY") == 0)
1129 else if (strcasecmp (csql_yylval.cptr, "OBJECT") == 0)
1138 "->"[ \t\r\n]*([a-zA-Z_#]|([\xc0-\xfe]))([a-zA-Z_#0-9]|([\x80-\xfe]))* {
1143 yybuffer_pos -= csql_yyleng;
1150 begin_token(yytext);
1152 len = strlen(yytext);
1158 for (i = 2; i < len - 1 && IS_BLANK_CHAR (yytext[i]); i++)
1161 csql_yylval.cptr = pt_makename(&yytext[i]);
1163 /* Distinguish some special words/tokens from normal identifiers (IdName).
1164 * Because these special words (companioned with DOT/RIGHT_ARROW) are
1165 * reserved for special use purpose in some clauses' context.
1167 if (strcasecmp (csql_yylval.cptr, "NONE") == 0)
1171 else if (strcasecmp (csql_yylval.cptr, "IDENTITY") == 0)
1175 else if (strcasecmp (csql_yylval.cptr, "OBJECT") == 0)
1185 csql_yylval.cptr = pt_append_string(this_parser, NULL, yytext + 2);
1190 csql_yylval.cptr = pt_append_string(this_parser, NULL, yytext + 2);
1195 BEGIN (QUOTED_NCHAR_STRING);
1196 csql_yylval.cptr = pt_append_string(this_parser, NULL, "");
1200 BEGIN (QUOTED_BIT_STRING);
1201 csql_yylval.cptr = pt_append_string(this_parser, NULL, "");
1205 BEGIN (QUOTED_HEX_STRING);
1206 csql_yylval.cptr = pt_append_string(this_parser, NULL, "");
1210 BEGIN (QUOTED_CHAR_STRING);
1211 csql_yylval.cptr = pt_append_string(this_parser, NULL, "");
1215 if (prm_get_bool_value (PRM_ID_ANSI_QUOTES))
1217 BEGIN(DELIMITED_ID_NAME);
1221 BEGIN(DOUBLY_QUOTED_CHAR_STRING);
1223 csql_yylval.cptr = pt_append_string(this_parser, NULL, "");
1227 BEGIN(BRACKET_ID_NAME);
1228 csql_yylval.cptr = pt_append_string(this_parser, NULL, "");
1232 BEGIN(BACKTICK_ID_NAME);
1233 csql_yylval.cptr = pt_append_string(this_parser, NULL, "");
1236 <QUOTED_EUCKR_STRING>['] {
1238 return EUCKR_STRING;
1241 <QUOTED_ISO_STRING>['] {
1246 <QUOTED_BINARY_STRING>['] {
1248 return BINARY_STRING;
1251 <QUOTED_UTF8_STRING>['] {
1256 <QUOTED_NCHAR_STRING>['] {
1258 return NCHAR_STRING;
1261 <QUOTED_BIT_STRING>['] {
1266 <QUOTED_HEX_STRING>['] {
1271 <QUOTED_CHAR_STRING>['] {
1276 <DOUBLY_QUOTED_CHAR_STRING>["] {
1281 <DELIMITED_ID_NAME>["] {
1283 if (strlen(csql_yylval.cptr) >= 254)
1285 csql_yylval.cptr[254] = 0;
1287 return DelimitedIdName;
1290 <BRACKET_ID_NAME>"]" {
1292 if (strlen(csql_yylval.cptr) >= 254)
1294 csql_yylval.cptr[254] = 0;
1296 return BracketDelimitedIdName;
1299 <BACKTICK_ID_NAME>"`" {
1301 if (strlen(csql_yylval.cptr) >= 254)
1303 csql_yylval.cptr[254] = 0;
1305 return BacktickDelimitedIdName;
1308 <QUOTED_NCHAR_STRING,QUOTED_BIT_STRING,QUOTED_HEX_STRING,QUOTED_CHAR_STRING,DOUBLY_QUOTED_CHAR_STRING,DELIMITED_ID_NAME,BRACKET_ID_NAME,BACKTICK_ID_NAME,QUOTED_EUCKR_STRING,QUOTED_ISO_STRING,QUOTED_BINARY_STRING,QUOTED_UTF8_STRING>\n {
1309 this_parser->line = yylineno;
1310 this_parser->column = yycolumn = yycolumn_end = 0;
1311 csql_yylval.cptr = pt_append_string(this_parser, csql_yylval.cptr, "\n");
1314 <QUOTED_NCHAR_STRING,QUOTED_BIT_STRING,QUOTED_HEX_STRING,QUOTED_CHAR_STRING,DOUBLY_QUOTED_CHAR_STRING,QUOTED_EUCKR_STRING,QUOTED_ISO_STRING,QUOTED_BINARY_STRING,QUOTED_UTF8_STRING><<EOF>> {
1316 csql_yyerror("unterminated string");
1317 return UNTERMINATED_STRING;
1320 <DELIMITED_ID_NAME,BRACKET_ID_NAME,BACKTICK_ID_NAME><<EOF>> {
1322 csql_yyerror("unterminated identifier");
1323 return UNTERMINATED_IDENTIFIER;
1326 <QUOTED_NCHAR_STRING,QUOTED_CHAR_STRING,QUOTED_EUCKR_STRING,QUOTED_ISO_STRING,QUOTED_BINARY_STRING,QUOTED_UTF8_STRING>[^'\n\\]+ {
1327 csql_yylval.cptr = pt_append_string(this_parser, csql_yylval.cptr, yytext);
1330 <QUOTED_BIT_STRING,QUOTED_HEX_STRING>[^'\n]+ {
1331 csql_yylval.cptr = pt_append_string(this_parser, csql_yylval.cptr, yytext);
1334 <DOUBLY_QUOTED_CHAR_STRING>[^"\n\\]+ {
1335 csql_yylval.cptr = pt_append_string(this_parser, csql_yylval.cptr, yytext);
1338 <DELIMITED_ID_NAME>[^"\n]+ {
1339 csql_yylval.cptr = pt_append_string(this_parser, csql_yylval.cptr, yytext);
1342 <BRACKET_ID_NAME>[^\]\n]+ {
1343 csql_yylval.cptr = pt_append_string(this_parser, csql_yylval.cptr, yytext);
1346 <BACKTICK_ID_NAME>[^\`\n]+ {
1347 csql_yylval.cptr = pt_append_string(this_parser, csql_yylval.cptr, yytext);
1350 <QUOTED_NCHAR_STRING,QUOTED_CHAR_STRING,QUOTED_EUCKR_STRING,QUOTED_ISO_STRING,QUOTED_BINARY_STRING,QUOTED_UTF8_STRING>[']['] {
1351 csql_yylval.cptr = pt_append_string(this_parser, csql_yylval.cptr, "'");
1354 <DOUBLY_QUOTED_CHAR_STRING,DELIMITED_ID_NAME>["]["] {
1355 csql_yylval.cptr = pt_append_string(this_parser, csql_yylval.cptr, "\"");
1358 <BACKTICK_ID_NAME>[`][`] {
1359 csql_yylval.cptr = pt_append_string(this_parser, csql_yylval.cptr, "`");
1362 <QUOTED_NCHAR_STRING,QUOTED_CHAR_STRING,DOUBLY_QUOTED_CHAR_STRING,QUOTED_EUCKR_STRING,QUOTED_ISO_STRING,QUOTED_BINARY_STRING,QUOTED_UTF8_STRING>{
1365 csql_yylval.cptr = pt_append_string(this_parser, csql_yylval.cptr,
1366 (prm_get_bool_value (PRM_ID_NO_BACKSLASH_ESCAPES) || this_parser->flag.strings_have_no_escapes) ? "\\n" : "\n");
1370 csql_yylval.cptr = pt_append_string(this_parser, csql_yylval.cptr,
1371 (prm_get_bool_value (PRM_ID_NO_BACKSLASH_ESCAPES) || this_parser->flag.strings_have_no_escapes) ? "\\r" : "\r");
1375 csql_yylval.cptr = pt_append_string(this_parser, csql_yylval.cptr,
1376 (prm_get_bool_value (PRM_ID_NO_BACKSLASH_ESCAPES) || this_parser->flag.strings_have_no_escapes) ? "\\t" : "\t");
1380 csql_yylval.cptr = pt_append_string(this_parser, csql_yylval.cptr, "\\%");
1384 csql_yylval.cptr = pt_append_string(this_parser, csql_yylval.cptr, "\\_");
1388 if (prm_get_bool_value (PRM_ID_NO_BACKSLASH_ESCAPES) || this_parser->flag.strings_have_no_escapes)
1390 csql_yylval.cptr = pt_append_string(this_parser, csql_yylval.cptr, "\\");
1391 unput(*(yytext + 1));
1396 csql_yylval.cptr = pt_append_string(this_parser, csql_yylval.cptr, yytext + 1);
1401 csql_yylval.cptr = pt_append_string(this_parser, csql_yylval.cptr,
1402 (prm_get_bool_value (PRM_ID_NO_BACKSLASH_ESCAPES) || this_parser->flag.strings_have_no_escapes) ? yytext : yytext + 1);
1406 this_parser->line = yylineno;
1407 this_parser->column = yycolumn = yycolumn_end = 0;
1409 if (prm_get_bool_value (PRM_ID_NO_BACKSLASH_ESCAPES) || this_parser->flag.strings_have_no_escapes)
1411 csql_yylval.cptr = pt_append_string(this_parser, csql_yylval.cptr, "\\\n");
1415 csql_yylval.cptr = pt_append_string(this_parser, csql_yylval.cptr, "\n");
1422 char* cp = parser_line_hint();
1425 csql_yylval.cptr = cp;
1426 return CPP_STYLE_HINT;
1432 char* cp = parser_c_hint();
1435 csql_yylval.cptr = cp;
1436 return C_STYLE_HINT;
1443 char* cp = parser_line_hint();
1446 csql_yylval.cptr = cp;
1447 return SQL_STYLE_HINT;
1451 \xa1\xef { begin_token(yytext); return YEN_SIGN; }
1452 \$ { begin_token(yytext); return DOLLAR_SIGN; }
1453 \\ { begin_token(yytext); return WON_SIGN; }
1454 \\[T][L] { begin_token(yytext); return TURKISH_LIRA_SIGN; }
1455 \\[J][P][Y] { begin_token(yytext); return YEN_SIGN; }
1456 \\[U][S][D] { begin_token(yytext); return DOLLAR_SIGN; }
1457 \\[K][R][W] { begin_token(yytext); return WON_SIGN; }
1458 \\[T][R][Y] { begin_token(yytext); return TURKISH_LIRA_SIGN; }
1459 \\[K][H][R] { begin_token(yytext); return CAMBODIAN_RIEL_SIGN; }
1460 \\[C][N][Y] { begin_token(yytext); return CHINESE_RENMINBI_SIGN; }
1461 \\[I][N][R] { begin_token(yytext); return INDIAN_RUPEE_SIGN; }
1462 \\[R][U][B] { begin_token(yytext); return RUSSIAN_RUBLE_SIGN; }
1463 \\[A][U][D] { begin_token(yytext); return AUSTRALIAN_DOLLAR_SIGN; }
1464 \\[C][A][D] { begin_token(yytext); return CANADIAN_DOLLAR_SIGN; }
1465 \\[B][R][L] { begin_token(yytext); return BRASILIAN_REAL_SIGN; }
1466 \\[R][O][N] { begin_token(yytext); return ROMANIAN_LEU_SIGN; }
1467 \\[E][U][R] { begin_token(yytext); return EURO_SIGN; }
1468 \\[C][H][F] { begin_token(yytext); return SWISS_FRANC_SIGN; }
1469 \\[D][K][K] { begin_token(yytext); return DANISH_KRONE_SIGN; }
1470 \\[N][O][K] { begin_token(yytext); return NORWEGIAN_KRONE_SIGN; }
1471 \\[B][G][N] { begin_token(yytext); return BULGARIAN_LEV_SIGN; }
1472 \\[G][B][P] { begin_token(yytext); return BRITISH_POUND_SIGN; }
1473 \\[V][N][D] { begin_token(yytext); return VIETNAMESE_DONG_SIGN; }
1474 \\[C][Z][K] { begin_token(yytext); return CZECH_KORUNA_SIGN; }
1475 \\[P][L][N] { begin_token(yytext); return POLISH_ZLOTY_SIGN; }
1476 \\[S][E][K] { begin_token(yytext); return SWEDISH_KRONA_SIGN; }
1477 \\[H][R][K] { begin_token(yytext); return CROATIAN_KUNA_SIGN; }
1478 \\[R][S][D] { begin_token(yytext); return SERBIAN_DINAR_SIGN; }
1480 . { begin_token(yytext); return yytext[0]; }
1483 int parser_yyinput_single_mode = 0;
1486 csql_yyerror_explicit (int line, int column)
1488 csql_yyerror (NULL);
1494 csql_yyerror (const char *s)
1496 char *token_val = NULL;
1497 char *next_ptr = csql_yyget_text () + csql_yyget_leng () + 1;
1498 char saved_char = yy_hold_char; /* retain the character following the last
1499 * character of the current token */
1500 char *end_of_stmt_str = NULL;
1501 char *context_saved_char_str = NULL;
1502 int end_statement = 0;
1504 int token_len = csql_yyget_leng () + 1;
1505 int next_ptr_len = 0;
1506 char *buffer = NULL;
1508 /* make a copy of the token value before the buffer flush */
1509 if (CSQL_MAXNAME < csql_yyget_leng () + 1)
1511 token_len = CSQL_MAXNAME;
1513 token_val = (char *) csql_yyalloc (token_len);
1514 if (token_val == NULL)
1516 YY_FATAL_ERROR( "out of dynamic memory in csql_yyerror()" );
1518 snprintf (token_val, token_len, "%s", csql_yyget_text ());
1520 end_of_stmt_str = msgcat_message (MSGCAT_CATALOG_CUBRID,
1521 MSGCAT_SET_PARSER_SYNTAX,
1522 MSGCAT_SYNTAX_END_OF_STMT);
1523 context_saved_char_str = msgcat_message (MSGCAT_CATALOG_CUBRID,
1524 MSGCAT_SET_PARSER_SYNTAX,
1525 MSGCAT_SYNTAX_CONTEXT_SAVED_CHAR);
1527 next_ptr_len = strlen (next_ptr);
1528 if (next_ptr_len == 0)
1531 next_ptr = end_of_stmt_str;
1533 if (next_ptr_len > MAX_PRINT_ERROR_CONTEXT_LENGTH)
1535 buffer = (char *) csql_yyalloc (MAX_PRINT_ERROR_CONTEXT_LENGTH + 1);
1536 memcpy (buffer, next_ptr, MAX_PRINT_ERROR_CONTEXT_LENGTH - 3);
1537 strcpy (buffer + MAX_PRINT_ERROR_CONTEXT_LENGTH - 3, "...");
1539 next_ptr_len = strlen (next_ptr);
1543 parser_statement_OK = 0;
1547 PT_NODE *dummy = parser_new_node (this_parser, PT_EXPR);
1548 PT_ERRORm (this_parser, dummy, MSGCAT_SET_PARSER_SYNTAX,
1549 g_msg[msg_ptr - 1]);
1550 parser_free_tree (this_parser, dummy);
1554 const char *cmp_str = msgcat_message (MSGCAT_CATALOG_CUBRID,
1555 MSGCAT_SET_PARSER_SYNTAX,
1556 MSGCAT_SYNTAX_EXPECTING_BRACKET);
1557 const char *cmp_str2 = msgcat_message (MSGCAT_CATALOG_CUBRID,
1558 MSGCAT_SET_PARSER_SYNTAX,
1559 MSGCAT_SYNTAX_EXPECTING_SELECT);
1562 const char *before_token = msgcat_message (MSGCAT_CATALOG_CUBRID,
1563 MSGCAT_SET_PARSER_SYNTAX,
1564 MSGCAT_SYNTAX_YYERROR);
1565 const char *after_token =
1566 strstr (s, msgcat_message (MSGCAT_CATALOG_CUBRID,
1567 MSGCAT_SET_PARSER_SYNTAX,
1568 MSGCAT_SYNTAX_EXPECTING));
1569 const char *token_type =
1570 strstr (s, msgcat_message (MSGCAT_CATALOG_CUBRID,
1571 MSGCAT_SET_PARSER_SYNTAX,
1572 MSGCAT_SYNTAX_UNEXPECTED));
1576 if ((strlen (s) > strlen (cmp_str)) &&
1577 (strcmp (&s[strlen (s) - strlen (cmp_str)], cmp_str) == 0))
1579 *(char *) &s[strlen (s) - strlen (cmp_str)] = 0;
1581 else if ((strlen (s) > strlen (cmp_str2)) &&
1582 (strcmp (&s[strlen (s) - strlen (cmp_str2)], cmp_str2) == 0))
1584 *(char *) &s[strlen (s) - strlen (cmp_str2)] = 0;
1587 if (strlen (token_val) == 0)
1593 char *msg_context = NULL;
1594 int fixed_len = 11 * 2; /* maximum size of printed line number and
1596 int msg_size = fixed_len + next_ptr_len + strlen (before_token)
1597 + strlen (token_val) + 4;
1598 /* 4 = 3 more characters when printing before_token
1599 * and 'token_val' + the string terminator */
1601 if (end_statement == 0)
1603 msg_size += strlen (context_saved_char_str);
1604 msg_size += 1; /* one printed char in the message */
1608 msg_context = msgcat_message (MSGCAT_CATALOG_CUBRID,
1609 MSGCAT_SET_PARSER_SYNTAX,
1610 MSGCAT_SYNTAX_CONTEXT);
1611 msg_size += strlen (msg_context);
1616 msg_size += strlen (after_token);
1619 msg = (char *) csql_yyalloc (msg_size);
1622 YY_FATAL_ERROR( "out of dynamic memory in csql_yyerror()" );
1626 if (end_statement == 0)
1628 snprintf (msg, msg_size, context_saved_char_str,
1629 csql_yylloc.first_line, csql_yylloc.first_column,
1630 (saved_char ? saved_char : ' '), next_ptr);
1634 assert (msg_context != NULL);
1635 snprintf (msg, msg_size, msg_context,
1636 csql_yylloc.first_line, csql_yylloc.first_column,
1642 if (msg[len - 3] == '\n')
1646 sprintf (msg + len, "%s '%s'", before_token, token_val);
1650 strcat (msg, after_token);
1655 if (strstr (s, "$end"))
1659 next_ptr = end_of_stmt_str;
1660 msg_size = strlen (before_token) + strlen (next_ptr) + 2;
1662 msg = (char *) csql_yyalloc (msg_size);
1665 YY_FATAL_ERROR( "out of dynamic memory in csql_yyerror()" );
1668 snprintf (msg, msg_size, "%s %s", before_token, next_ptr);
1673 msg = (char *) s; // suppress warning; string will not be changed
1677 dummy = parser_new_node (this_parser, PT_EXPR);
1680 if (free_msg && msg != NULL)
1686 PT_ERRORf (this_parser, dummy, "%s", msg);
1687 parser_free_tree (this_parser, dummy);
1688 if (free_msg && msg != NULL)
1695 if (token_val != NULL)
1697 csql_yyfree (token_val);
1701 csql_yyfree (buffer);
1713 parser_yyinput_single_line (char *buff, int max_size)
1718 assert (max_size >= 1);
1721 if (str_identifier == '\'' || str_identifier == '\"')
1730 if (c == '\'' || c == '\"') /* string start */
1732 if (str_identifier != '\'' && str_identifier != '\"')
1746 if (c == end) /* string end */
1748 str_identifier = '\0';
1759 && (prm_get_bool_value (PRM_ID_NO_BACKSLASH_ESCAPES) == false))
1761 /* if escape character */
1762 c = pt_nextchar (); /* read one more */
1790 parser_yyinput_single_mode = 0; /* all done */
1793 str_identifier = '\0';
1799 parser_yyinput_multi_line (char *buff, int max_size)
1804 assert (max_size >= 1);
1824 parser_yyinput (char *buff, int max_size)
1826 if (!parser_yyinput_single_mode)
1828 return parser_yyinput_multi_line (buff, max_size);
1832 return parser_yyinput_single_line (buff, max_size);
1842 this_parser->line = csql_yylloc.last_line = yylineno;
1843 this_parser->column = csql_yylloc.last_column = yycolumn_end = 1;
1847 this_parser->column = csql_yylloc.last_column = yycolumn_end++;
1854 parser_c_hint (void)
1857 char buff[CSQL_MAXNAME];
1859 PT_HINT_ENUM hint = PT_HINT_NONE;
1861 /* column position set */
1862 yycolumn = yycolumn_end;
1863 csql_yylloc.first_column = yycolumn;
1864 csql_yylloc.first_line = yylineno;
1865 csql_yylloc.last_line = yylineno;
1866 csql_yylloc.last_column = yycolumn_end;
1868 if (i < (CSQL_MAXNAME - 1) && (c = input_internal ()) == '+')
1871 while ((c = input_internal ()) != 0 && c != -1)
1875 /* peek and check next char */
1876 c1 = input_internal ();
1884 if (i >= (CSQL_MAXNAME - 1))
1888 goto consume_comment;
1896 yybuffer_pos += i + 2;
1897 pt_check_hint (buff, parser_hint_table, &hint, false);
1898 if (hint == PT_HINT_NONE)
1903 return pt_makename (buff);
1911 while ((c = input_internal ()) != '*' && c != 0 && c != -1)
1916 if ((c1 = input_internal ()) != '/' && c != 0 && c != -1)
1923 goto consume_comment;
1933 parser_line_hint (void)
1936 char buff[CSQL_MAXNAME];
1938 PT_HINT_ENUM hint = PT_HINT_NONE;
1941 /* column position set */
1942 yycolumn = yycolumn_end;
1943 csql_yylloc.first_column = yycolumn;
1944 csql_yylloc.first_line = yylineno;
1945 csql_yylloc.last_line = yylineno;
1946 csql_yylloc.last_column = yycolumn_end;
1949 if (i < (CSQL_MAXNAME - 1) && (c = input_internal ()) == '+')
1952 while ((c = input_internal ()) != '\r' && c != '\n' && c != 0
1955 if (i >= (CSQL_MAXNAME - 1))
1961 yybuffer_pos += i + 1;
1962 pt_check_hint (buff, parser_hint_table, &hint, false);
1963 if (hint == PT_HINT_NONE)
1968 return pt_makename (buff);
1974 while ((c = input_internal ()) != '\r' && c != '\n' && c != 0
1987 begin_token (char *token)
1989 yycolumn = yycolumn_end;
1990 yycolumn_end += strlen (token);
1992 csql_yylloc.first_line = yylineno;
1993 csql_yylloc.first_column = yycolumn;
1994 csql_yylloc.last_line = yylineno;
1995 csql_yylloc.last_column = yycolumn_end;