CUBRID Engine  latest
csql_lexer.l
Go to the documentation of this file.
1 /*
2  * Copyright 2008 Search Solution Corporation
3  * Copyright 2016 CUBRID Corporation
4  *
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
8  *
9  * http://www.apache.org/licenses/LICENSE-2.0
10  *
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.
16  *
17  */
18 
19 /*
20  * csql_lexer.l - SQL lexer file
21  */
22 
23 
24 
25 
26 
27 %{
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"
34 
35 #if defined (SUPPRESS_STRLEN_WARNING)
36 #define strlen(s1) ((int) strlen(s1))
37 #endif /* defined (SUPPRESS_STRLEN_WARNING) */
38 
39 #define CSQL_MAXNAME 256
40 
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);
47 
48 extern int yycolumn;
49 extern int yycolumn_end;
50 extern int dot_flag;
51 
52 int str_identifier = '\0';
53 
54 
55 
56 
57 #undef YY_INPUT
58 #define YY_INPUT(buffer, result, max_size) { result = parser_yyinput(buffer, max_size); result == 0 ? result = YY_NULL : result; }
59 
60 /*
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.
63  */
64 #define YY_USER_ACTION {yybuffer_pos += csql_yyget_leng (); csql_yylloc.buffer_pos = yybuffer_pos;}
65 
66 #define IS_BLANK_CHAR(c) \
67  ((c) == ' ' || (c) == '\t' || (c) == '\r' || (c) == '\n')
68 
69 int g_msg[1024];
70 int msg_ptr;
71 
72 int yybuffer_pos;
73 %}
74 
75 %option yylineno
76 
77 %x QUOTED_NCHAR_STRING
78 %x QUOTED_BIT_STRING
79 %x QUOTED_HEX_STRING
80 %x QUOTED_CHAR_STRING
81 %x DOUBLY_QUOTED_CHAR_STRING
82 %x DELIMITED_ID_NAME
83 %x BRACKET_ID_NAME
84 %x BACKTICK_ID_NAME
85 %x QUOTED_EUCKR_STRING
86 %x QUOTED_ISO_STRING
87 %x QUOTED_BINARY_STRING
88 %x QUOTED_UTF8_STRING
89 
90 
91 
92 
93 %%
94 
95 [ \t\r]+ { begin_token(yytext); }
96 \n {
97  begin_token(yytext);
98  this_parser->line = yylineno;
99  this_parser->column = yycolumn = yycolumn_end = 1;
100  }
101 
102 
103 
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);
109  return ACTIVE; }
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);
113  return ADDDATE; }
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);
122  return ANALYZE; }
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);
127  return ARCHIVE; }
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);
150  return BIT_AND; }
151 [bB][iI][tT]_[oO][rR] { begin_token(yytext);
152  csql_yylval.cptr = pt_makename(yytext);
153  return BIT_OR; }
154 [bB][iI][tT]_[xX][oO][rR] { begin_token(yytext);
155  csql_yylval.cptr = pt_makename(yytext);
156  return BIT_XOR; }
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);
164  return BUFFER; }
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);
168  return CACHE; }
169 [cC][aA][pP][aA][cC][iI][tT][yY] { begin_token(yytext);
170  csql_yylval.cptr = pt_makename(yytext);
171  return CAPACITY; }
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);
184  return CHARSET; }
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);
188  return CHR; }
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);
197  return CLOSE; }
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);
202  return COLLATION; }
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);
206  return COLUMNS; }
207 [cC][oO][mM][mM][eE][nN][tT] { begin_token(yytext);
208  csql_yylval.cptr = pt_makename(yytext);
209  return COMMENT; }
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);
213  return COMMITTED; }
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);
226  return COST;
227  }
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);
233  return CRITICAL; }
234 [cC][uU][mM][eE][_][dD][iI][sS][tT] { begin_token(yytext);
235  csql_yylval.cptr = pt_makename(yytext);
236  return CUME_DIST; }
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);
251  return DATE_ADD; }
252 [dD][aA][tT][eE]_[sS][uU][bB] { begin_token(yytext);
253  csql_yylval.cptr = pt_makename(yytext);
254  return DATE_SUB; }
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);
270  return DECREMENT; }
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);
277  return DENSE_RANK; }
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);
302  return ELT; }
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);
318  return EXPLAIN; }
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);
333  return FULLSCAN; }
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);
343  return GE_INF_; }
344 [gG][eE]_[lL][eE] { begin_token(yytext);
345  csql_yylval.cptr = pt_makename(yytext);
346  return GE_LE_; }
347 [gG][eE]_[lL][tT] { begin_token(yytext);
348  csql_yylval.cptr = pt_makename(yytext);
349  return GE_LT_; }
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);
356  return GRANTS; }
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);
363  return GROUPS; }
364 [gG][tT]_[iI][nN][fF] { begin_token(yytext);
365  csql_yylval.cptr = pt_makename(yytext);
366  return GT_INF_; }
367 [gG][tT]_[lL][eE] { begin_token(yytext);
368  csql_yylval.cptr = pt_makename(yytext);
369  return GT_LE_; }
370 [gG][tT]_[lL][tT] { begin_token(yytext);
371  csql_yylval.cptr = pt_makename(yytext);
372  return GT_LT_; }
373 [hH][aA][sS][hH] { begin_token(yytext);
374  csql_yylval.cptr = pt_makename(yytext);
375  return HASH; }
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);
379  return HEADER; }
380 [hH][eE][aA][pP] { begin_token(yytext);
381  csql_yylval.cptr = pt_makename(yytext);
382  return HEAP; }
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);
391  return IFNULL; }
392 [iI][sS][nN][uU][lL][lL] { begin_token(yytext);
393  csql_yylval.cptr = pt_makename(yytext);
394  return ISNULL; }
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);
400  return INACTIVE; }
401 [iI][nN][cC][rR][eE][mM][eE][nN][tT] { begin_token(yytext);
402  csql_yylval.cptr = pt_makename(yytext);
403  return INCREMENT; }
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);
408  return INDEXES; }
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);
412  return INFINITE_; }
413 [iI][nN][fF]_[lL][eE] { begin_token(yytext);
414  csql_yylval.cptr = pt_makename(yytext);
415  return INF_LE_; }
416 [iI][nN][fF]_[lL][tT] { begin_token(yytext);
417  csql_yylval.cptr = pt_makename(yytext);
418  return INF_LT_; }
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);
427  return INSTANCES; }
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);
434  return INVALIDATE; }
435 [iI][nN][vV][iI][sS][iI][bB][lL][eE] { begin_token(yytext);
436  csql_yylval.cptr = pt_makename(yytext);
437  return INVISIBLE; }
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);
444  return JAVA; }
445 [jJ][oO][iI][nN] { begin_token(yytext); return JOIN; }
446 [jJ][oO][bB] { begin_token(yytext);
447  csql_yylval.cptr = pt_makename(yytext);
448  return JOB; }
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);
471  return JSON_DEPTH; }
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);
483  return JSON_KEYS; }
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);
489  return JSON_MERGE; }
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);
508  return JSON_QUOTE; }
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);
517  return JSON_SET; }
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);
523  return JSON_TABLE; }
524 [jJ][sS][oO][nN][_][tT][yY][pP][eE] { begin_token(yytext);
525  csql_yylval.cptr = pt_makename(yytext);
526  return JSON_TYPE; }
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);
532  return JSON_VALID; }
533 [kK][eE][yY] { begin_token(yytext); return KEY; }
534 [kK][eE][yY][sS] { begin_token(yytext);
535  csql_yylval.cptr = pt_makename(yytext);
536  return KEYS; }
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);
542  return LAG; }
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);
546  return LAST_VALUE; }
547 [lL][cC][aA][sS][eE] { begin_token(yytext);
548  csql_yylval.cptr = pt_makename(yytext);
549  return LCASE; }
550 [lL][eE][aA][dD] { begin_token(yytext);
551  csql_yylval.cptr = pt_makename(yytext);
552  return LEAD; }
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);
567  return LOCK_; }
568 [lL][oO][gG] { begin_token(yytext);
569  csql_yylval.cptr = pt_makename(yytext);
570  return LOG; }
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);
577  return MAXIMUM; }
578 [mM][aA][xX][vV][aA][lL][uU][eE] { begin_token(yytext);
579  csql_yylval.cptr = pt_makename(yytext);
580  return MAXVALUE; }
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);
584  return MEDIAN; }
585 [mM][eE][mM][bB][eE][rR][sS] { begin_token(yytext);
586  csql_yylval.cptr = pt_makename(yytext);
587  return MEMBERS; }
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);
596  return MINVALUE; }
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);
609  return NAME; }
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);
619  return NOCACHE; }
620 [nN][oO][cC][yY][cC][lL][eE] { begin_token(yytext);
621  csql_yylval.cptr = pt_makename(yytext);
622  return NOCYCLE; }
623 [nN][oO][mM][aA][xX][vV][aA][lL][uU][eE] { begin_token(yytext);
624  csql_yylval.cptr = pt_makename(yytext);
625  return NOMAXVALUE; }
626 [nN][oO][mM][iI][nN][vV][aA][lL][uU][eE] { begin_token(yytext);
627  csql_yylval.cptr = pt_makename(yytext);
628  return NOMINVALUE; }
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);
633  return NTH_VALUE; }
634 [nN][tT][iI][lL][eE] { begin_token(yytext);
635  csql_yylval.cptr = pt_makename(yytext);
636  return NTILE; }
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);
642  return NULLS; }
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);
649  return OFFSET; }
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);
655  return OPEN; }
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);
668  return OWNER; }
669 [pP][aA][gG][eE] { begin_token(yytext);
670  csql_yylval.cptr = pt_makename(yytext);
671  return PAGE; }
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);
677  return PARTITION; }
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);
683  return PARTITIONS; }
684 [pP][aA][sS][sS][wW][oO][rR][dD] { begin_token(yytext);
685  csql_yylval.cptr = pt_makename(yytext);
686  return PASSWORD; }
687 [pP][aA][tT][hH] { begin_token(yytext);
688  csql_yylval.cptr = pt_makename(yytext);
689  return PATH; }
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);
706  return PRINT; }
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);
710  return PRIORITY; }
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);
716  return QUARTER; }
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);
720  return QUEUES; }
721 [rR][aA][nN][kK] { begin_token(yytext);
722  csql_yylval.cptr = pt_makename(yytext);
723  return RANK; }
724 [rR][aA][nN][gG][eE] { begin_token(yytext);
725  csql_yylval.cptr = pt_makename(yytext);
726  return RANGE_; }
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);
742  return REJECT_; }
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);
746  return REMOVE; }
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);
750  return REORGANIZE; }
751 [rR][eE][pP][eE][aA][tT][aA][bB][lL][eE] { begin_token(yytext);
752  csql_yylval.cptr = pt_makename(yytext);
753  return REPEATABLE; }
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);
758  return RESPECT; }
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);
762  return RETAIN; }
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);
767  return REUSE_OID; }
768 [rR][eE][vV][eE][rR][sS][eE] { begin_token(yytext);
769  csql_yylval.cptr = pt_makename(yytext);
770  return REVERSE; }
771 [dD][iI][sS][kK][_][sS][iI][zZ][Ee] { begin_token(yytext);
772  csql_yylval.cptr = pt_makename(yytext);
773  return DISK_SIZE; }
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);
784  return ROW_NUMBER; }
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);
797  return SECTIONS; }
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);
802  return SEPARATOR; }
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);
807  return SERIAL; }
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);
819  return SHOW; }
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);
826  return SLOTS; }
827 [sS][lL][oO][tT][tT][eE][dD] { begin_token(yytext);
828  csql_yylval.cptr = pt_makename(yytext);
829  return SLOTTED; }
830 
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);
840  return STABILITY; }
841 [sS][tT][aA][rR][tT] { begin_token(yytext);
842  csql_yylval.cptr = pt_makename(yytext);
843  return START_; }
844 [sS][tT][aA][tT][eE][mM][eE][nN][tT] { begin_token(yytext);
845  csql_yylval.cptr = pt_makename(yytext);
846  return STATEMENT; }
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);
850  return STATUS; }
851 [sS][tT][dD][dD][eE][vV] { begin_token(yytext);
852  csql_yylval.cptr = pt_makename(yytext);
853  return STDDEV; }
854 [sS][tT][dD][dD][eE][vV][_][pP][oO][pP] { begin_token(yytext);
855  csql_yylval.cptr = pt_makename(yytext);
856  return STDDEV_POP; }
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);
866  return SUBDATE; }
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);
885  return SYSTEM; }
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);
892  return TABLES; }
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);
896  return TEXT; }
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);
900  return THREADS; }
901 [tT][iI][mM][eE][oO][uU][tT] { begin_token(yytext);
902  csql_yylval.cptr = pt_makename(yytext);
903  return TIMEOUT; }
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);
914  return TRACE; }
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);
918  return TRAN; }
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);
925  return TRIGGERS; }
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);
929  return THAN; }
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);
936  return UCASE; }
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);
956  return VAR_POP; }
957 [vV][aA][rR][_][sS][aA][mM][pP] { begin_token(yytext);
958  csql_yylval.cptr = pt_makename(yytext);
959  return VAR_SAMP; }
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);
964  return VARIANCE; }
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);
970  return VISIBLE; }
971 [vV][oO][lL][uU][mM][eE] { begin_token(yytext);
972  csql_yylval.cptr = pt_makename(yytext);
973  return VOLUME; }
974 [wW][eE][eE][kK] { begin_token(yytext);
975  csql_yylval.cptr = pt_makename(yytext);
976  return WEEK; }
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);
984  return WITHIN; }
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);
989  return WORKSPACE; }
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; }
995 
996 
997 \\N { begin_token(yytext); return Null; }
998 
999 "->" { begin_token(yytext); return RIGHT_ARROW; }
1000 "." { begin_token(yytext); return DOT; }
1001 "->>" { begin_token(yytext); return DOUBLE_RIGHT_ARROW; }
1002 "||" {
1003  begin_token(yytext);
1004  if (!prm_get_bool_value (PRM_ID_PIPES_AS_CONCAT))
1005  return OR;
1006  else
1007  return STRCAT;
1008  }
1009 
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; }
1021 
1022 
1023 [0-9]+ {
1024  int i = 0;
1025  int len = 0;
1026 
1027  begin_token(yytext);
1028  len = strlen(yytext);
1029  if (len >= 254)
1030  yytext[254] = 0;
1031 
1032  /* loop until len - 1, in case of 0000000000000000000000 */
1033  for (i = 0; i < len - 1 && yytext[i] == '0'; i++)
1034  ;
1035 
1036  csql_yylval.cptr = pt_makename(&yytext[i]);
1037  return UNSIGNED_INTEGER;
1038  }
1039 
1040 
1041 
1042 ([0-9]+[Ee][\+\-]?[0-9]+[fF]?)|([0-9]*\.[0-9]+([Ee][\+\-]?[0-9]+)?[fF]?)|([0-9]+\.[0-9]*([Ee][\+\-]?[0-9]+)?[fF]?) {
1043  char buff[256];
1044  int len;
1045 
1046  begin_token(yytext);
1047  len = strlen(yytext);
1048  if (len >= 254)
1049  yytext[254] = 0;
1050 
1051  if (len < 253 && yytext[len-1] == '.')
1052  {
1053  strncpy(buff, yytext, sizeof(buff));
1054  buff[len] = '0';
1055  buff[len+1] = '\0';
1056  csql_yylval.cptr = pt_makename(buff);
1057  }
1058  else
1059  {
1060  csql_yylval.cptr = pt_makename(yytext);
1061  }
1062  return UNSIGNED_REAL;
1063  }
1064 
1065 _[eE][uU][cC][kK][rR]['] {
1066  BEGIN (QUOTED_EUCKR_STRING);
1067  csql_yylval.cptr = pt_append_string(this_parser, NULL, "");
1068  }
1069 
1070 _[iI][sS][oO]88591['] {
1071  BEGIN (QUOTED_ISO_STRING);
1072  csql_yylval.cptr = pt_append_string(this_parser, NULL, "");
1073  }
1074 
1075 _[bB][iI][nN][aA][rR][yY]['] {
1076  BEGIN (QUOTED_BINARY_STRING);
1077  csql_yylval.cptr = pt_append_string(this_parser, NULL, "");
1078  }
1079 
1080 _[uU][tT][fF]8['] {
1081  BEGIN (QUOTED_UTF8_STRING);
1082  csql_yylval.cptr = pt_append_string(this_parser, NULL, "");
1083  }
1084 
1085 ([a-zA-Z_#]|([\xc0-\xfe]))([a-zA-Z_#0-9]|([\x80-\xfe]))* { begin_token(yytext);
1086  if (strlen(yytext) >= 254)
1087  yytext[254] = 0;
1088  csql_yylval.cptr = pt_makename(yytext);
1089  return IdName;
1090  }
1091 
1092 "."[ \t\r\n]*([a-zA-Z_#]|([\xc0-\xfe]))([a-zA-Z_#0-9]|([\x80-\xfe]))* {
1093  int i = 0;
1094  int len = 0;
1095  if (dot_flag == 0)
1096  {
1097  yybuffer_pos -= csql_yyleng;
1098  yyless(0);
1099  dot_flag = 1;
1100  return DOT;
1101  }
1102  else
1103  {
1104  begin_token(yytext);
1105  dot_flag = 0;
1106  len = strlen(yytext);
1107  if (len >= 254)
1108  {
1109  yytext[254] = 0;
1110  }
1111 
1112  for (i = 1; i < len - 1 && IS_BLANK_CHAR (yytext[i]); i++)
1113  ;
1114 
1115  csql_yylval.cptr = pt_makename(&yytext[i]);
1116 
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.
1120  */
1121  if (strcasecmp (csql_yylval.cptr, "NONE") == 0)
1122  {
1123  return NONE;
1124  }
1125  else if (strcasecmp (csql_yylval.cptr, "IDENTITY") == 0)
1126  {
1127  return IDENTITY;
1128  }
1129  else if (strcasecmp (csql_yylval.cptr, "OBJECT") == 0)
1130  {
1131  return OBJECT;
1132  }
1133 
1134  return IdName;
1135  }
1136  }
1137 
1138 "->"[ \t\r\n]*([a-zA-Z_#]|([\xc0-\xfe]))([a-zA-Z_#0-9]|([\x80-\xfe]))* {
1139  int i = 0;
1140  int len = 0;
1141  if (dot_flag == 0)
1142  {
1143  yybuffer_pos -= csql_yyleng;
1144  yyless(0);
1145  dot_flag = 1;
1146  return RIGHT_ARROW;
1147  }
1148  else
1149  {
1150  begin_token(yytext);
1151  dot_flag = 0;
1152  len = strlen(yytext);
1153  if (len >= 254)
1154  {
1155  yytext[254] = 0;
1156  }
1157 
1158  for (i = 2; i < len - 1 && IS_BLANK_CHAR (yytext[i]); i++)
1159  ;
1160 
1161  csql_yylval.cptr = pt_makename(&yytext[i]);
1162 
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.
1166  */
1167  if (strcasecmp (csql_yylval.cptr, "NONE") == 0)
1168  {
1169  return NONE;
1170  }
1171  else if (strcasecmp (csql_yylval.cptr, "IDENTITY") == 0)
1172  {
1173  return IDENTITY;
1174  }
1175  else if (strcasecmp (csql_yylval.cptr, "OBJECT") == 0)
1176  {
1177  return OBJECT;
1178  }
1179 
1180  return IdName;
1181  }
1182  }
1183 
1184 0b[0-1]+ {
1185  csql_yylval.cptr = pt_append_string(this_parser, NULL, yytext + 2);
1186  return BIT_STRING;
1187  }
1188 
1189 0x[0-9a-fA-F]+ {
1190  csql_yylval.cptr = pt_append_string(this_parser, NULL, yytext + 2);
1191  return HEX_STRING;
1192  }
1193 
1194 [nN]['] {
1195  BEGIN (QUOTED_NCHAR_STRING);
1196  csql_yylval.cptr = pt_append_string(this_parser, NULL, "");
1197  }
1198 
1199 [bB]['] {
1200  BEGIN (QUOTED_BIT_STRING);
1201  csql_yylval.cptr = pt_append_string(this_parser, NULL, "");
1202  }
1203 
1204 [xX]['] {
1205  BEGIN (QUOTED_HEX_STRING);
1206  csql_yylval.cptr = pt_append_string(this_parser, NULL, "");
1207  }
1208 
1209 ['] {
1210  BEGIN (QUOTED_CHAR_STRING);
1211  csql_yylval.cptr = pt_append_string(this_parser, NULL, "");
1212  }
1213 
1214 ["] {
1215  if (prm_get_bool_value (PRM_ID_ANSI_QUOTES))
1216  {
1217  BEGIN(DELIMITED_ID_NAME);
1218  }
1219  else
1220  {
1221  BEGIN(DOUBLY_QUOTED_CHAR_STRING);
1222  }
1223  csql_yylval.cptr = pt_append_string(this_parser, NULL, "");
1224  }
1225 
1226 "[" {
1227  BEGIN(BRACKET_ID_NAME);
1228  csql_yylval.cptr = pt_append_string(this_parser, NULL, "");
1229  }
1230 
1231 [`] {
1232  BEGIN(BACKTICK_ID_NAME);
1233  csql_yylval.cptr = pt_append_string(this_parser, NULL, "");
1234  }
1235 
1236 <QUOTED_EUCKR_STRING>['] {
1237  BEGIN(INITIAL);
1238  return EUCKR_STRING;
1239  }
1240 
1241 <QUOTED_ISO_STRING>['] {
1242  BEGIN(INITIAL);
1243  return ISO_STRING;
1244  }
1245 
1246 <QUOTED_BINARY_STRING>['] {
1247  BEGIN(INITIAL);
1248  return BINARY_STRING;
1249  }
1250 
1251 <QUOTED_UTF8_STRING>['] {
1252  BEGIN(INITIAL);
1253  return UTF8_STRING;
1254  }
1255 
1256 <QUOTED_NCHAR_STRING>['] {
1257  BEGIN(INITIAL);
1258  return NCHAR_STRING;
1259  }
1260 
1261 <QUOTED_BIT_STRING>['] {
1262  BEGIN(INITIAL);
1263  return BIT_STRING;
1264  }
1265 
1266 <QUOTED_HEX_STRING>['] {
1267  BEGIN(INITIAL);
1268  return HEX_STRING;
1269  }
1270 
1271 <QUOTED_CHAR_STRING>['] {
1272  BEGIN(INITIAL);
1273  return CHAR_STRING;
1274  }
1275 
1276 <DOUBLY_QUOTED_CHAR_STRING>["] {
1277  BEGIN(INITIAL);
1278  return CHAR_STRING;
1279  }
1280 
1281 <DELIMITED_ID_NAME>["] {
1282  BEGIN(INITIAL);
1283  if (strlen(csql_yylval.cptr) >= 254)
1284  {
1285  csql_yylval.cptr[254] = 0;
1286  }
1287  return DelimitedIdName;
1288  }
1289 
1290 <BRACKET_ID_NAME>"]" {
1291  BEGIN(INITIAL);
1292  if (strlen(csql_yylval.cptr) >= 254)
1293  {
1294  csql_yylval.cptr[254] = 0;
1295  }
1296  return BracketDelimitedIdName;
1297  }
1298 
1299 <BACKTICK_ID_NAME>"`" {
1300  BEGIN(INITIAL);
1301  if (strlen(csql_yylval.cptr) >= 254)
1302  {
1303  csql_yylval.cptr[254] = 0;
1304  }
1305  return BacktickDelimitedIdName;
1306  }
1307 
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");
1312  }
1313 
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>> {
1315  BEGIN(INITIAL);
1316  csql_yyerror("unterminated string");
1317  return UNTERMINATED_STRING;
1318  }
1319 
1320 <DELIMITED_ID_NAME,BRACKET_ID_NAME,BACKTICK_ID_NAME><<EOF>> {
1321  BEGIN(INITIAL);
1322  csql_yyerror("unterminated identifier");
1323  return UNTERMINATED_IDENTIFIER;
1324  }
1325 
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);
1328  }
1329 
1330 <QUOTED_BIT_STRING,QUOTED_HEX_STRING>[^'\n]+ {
1331  csql_yylval.cptr = pt_append_string(this_parser, csql_yylval.cptr, yytext);
1332  }
1333 
1334 <DOUBLY_QUOTED_CHAR_STRING>[^"\n\\]+ {
1335  csql_yylval.cptr = pt_append_string(this_parser, csql_yylval.cptr, yytext);
1336  }
1337 
1338 <DELIMITED_ID_NAME>[^"\n]+ {
1339  csql_yylval.cptr = pt_append_string(this_parser, csql_yylval.cptr, yytext);
1340  }
1341 
1342 <BRACKET_ID_NAME>[^\]\n]+ {
1343  csql_yylval.cptr = pt_append_string(this_parser, csql_yylval.cptr, yytext);
1344  }
1345 
1346 <BACKTICK_ID_NAME>[^\`\n]+ {
1347  csql_yylval.cptr = pt_append_string(this_parser, csql_yylval.cptr, yytext);
1348  }
1349 
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, "'");
1352  }
1353 
1354 <DOUBLY_QUOTED_CHAR_STRING,DELIMITED_ID_NAME>["]["] {
1355  csql_yylval.cptr = pt_append_string(this_parser, csql_yylval.cptr, "\"");
1356  }
1357 
1358 <BACKTICK_ID_NAME>[`][`] {
1359  csql_yylval.cptr = pt_append_string(this_parser, csql_yylval.cptr, "`");
1360  }
1361 
1362 <QUOTED_NCHAR_STRING,QUOTED_CHAR_STRING,DOUBLY_QUOTED_CHAR_STRING,QUOTED_EUCKR_STRING,QUOTED_ISO_STRING,QUOTED_BINARY_STRING,QUOTED_UTF8_STRING>{
1363 
1364 "\\n" {
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");
1367  }
1368 
1369 "\\r" {
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");
1372  }
1373 
1374 "\\t" {
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");
1377  }
1378 
1379 "\\%" {
1380  csql_yylval.cptr = pt_append_string(this_parser, csql_yylval.cptr, "\\%");
1381  }
1382 
1383 "\\_" {
1384  csql_yylval.cptr = pt_append_string(this_parser, csql_yylval.cptr, "\\_");
1385  }
1386 
1387 [\\]['"] {
1388  if (prm_get_bool_value (PRM_ID_NO_BACKSLASH_ESCAPES) || this_parser->flag.strings_have_no_escapes)
1389  {
1390  csql_yylval.cptr = pt_append_string(this_parser, csql_yylval.cptr, "\\");
1391  unput(*(yytext + 1));
1392  yybuffer_pos--;
1393  }
1394  else
1395  {
1396  csql_yylval.cptr = pt_append_string(this_parser, csql_yylval.cptr, yytext + 1);
1397  }
1398  }
1399 
1400 [\\]. {
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);
1403  }
1404 
1405 [\\]\n {
1406  this_parser->line = yylineno;
1407  this_parser->column = yycolumn = yycolumn_end = 0;
1408 
1409  if (prm_get_bool_value (PRM_ID_NO_BACKSLASH_ESCAPES) || this_parser->flag.strings_have_no_escapes)
1410  {
1411  csql_yylval.cptr = pt_append_string(this_parser, csql_yylval.cptr, "\\\n");
1412  }
1413  else
1414  {
1415  csql_yylval.cptr = pt_append_string(this_parser, csql_yylval.cptr, "\n");
1416  }
1417  }
1418 
1419 }
1420 
1421 "//" {
1422  char* cp = parser_line_hint();
1423  if (cp)
1424  {
1425  csql_yylval.cptr = cp;
1426  return CPP_STYLE_HINT;
1427  }
1428  }
1429 
1430 
1431 "/*" {
1432  char* cp = parser_c_hint();
1433  if (cp)
1434  {
1435  csql_yylval.cptr = cp;
1436  return C_STYLE_HINT;
1437  }
1438  }
1439 
1440 
1441 
1442 "--" {
1443  char* cp = parser_line_hint();
1444  if (cp)
1445  {
1446  csql_yylval.cptr = cp;
1447  return SQL_STYLE_HINT;
1448  }
1449  }
1450 
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; }
1479 
1480 . { begin_token(yytext); return yytext[0]; }
1481 %%
1482 
1483 int parser_yyinput_single_mode = 0;
1484 
1485 void
1486 csql_yyerror_explicit (int line, int column)
1487 {
1488  csql_yyerror (NULL);
1489  msg_ptr = 0;
1490 }
1491 
1492 
1493 void
1494 csql_yyerror (const char *s)
1495 {
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;
1503  int free_msg = 0;
1504  int token_len = csql_yyget_leng () + 1;
1505  int next_ptr_len = 0;
1506  char *buffer = NULL;
1507 
1508  /* make a copy of the token value before the buffer flush */
1509  if (CSQL_MAXNAME < csql_yyget_leng () + 1)
1510  {
1511  token_len = CSQL_MAXNAME;
1512  }
1513  token_val = (char *) csql_yyalloc (token_len);
1514  if (token_val == NULL)
1515  {
1516  YY_FATAL_ERROR( "out of dynamic memory in csql_yyerror()" );
1517  }
1518  snprintf (token_val, token_len, "%s", csql_yyget_text ());
1519 
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);
1526 
1527  next_ptr_len = strlen (next_ptr);
1528  if (next_ptr_len == 0)
1529  {
1530  end_statement = 1;
1531  next_ptr = end_of_stmt_str;
1532  }
1533  if (next_ptr_len > MAX_PRINT_ERROR_CONTEXT_LENGTH)
1534  {
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, "...");
1538  next_ptr = buffer;
1539  next_ptr_len = strlen (next_ptr);
1540  }
1541 
1542  YY_FLUSH_BUFFER;
1543  parser_statement_OK = 0;
1544 
1545  if (msg_ptr)
1546  {
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);
1551  }
1552  else
1553  {
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);
1560 
1561  char *msg = NULL;
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));
1573  int len = 0;
1574  PT_NODE *dummy;
1575 
1576  if ((strlen (s) > strlen (cmp_str)) &&
1577  (strcmp (&s[strlen (s) - strlen (cmp_str)], cmp_str) == 0))
1578  {
1579  *(char *) &s[strlen (s) - strlen (cmp_str)] = 0;
1580  }
1581  else if ((strlen (s) > strlen (cmp_str2)) &&
1582  (strcmp (&s[strlen (s) - strlen (cmp_str2)], cmp_str2) == 0))
1583  {
1584  *(char *) &s[strlen (s) - strlen (cmp_str2)] = 0;
1585  }
1586 
1587  if (strlen (token_val) == 0)
1588  {
1589  token_type = NULL;
1590  }
1591  if (token_type)
1592  {
1593  char *msg_context = NULL;
1594  int fixed_len = 11 * 2; /* maximum size of printed line number and
1595  column number */
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 */
1600 
1601  if (end_statement == 0)
1602  {
1603  msg_size += strlen (context_saved_char_str);
1604  msg_size += 1; /* one printed char in the message */
1605  }
1606  else
1607  {
1608  msg_context = msgcat_message (MSGCAT_CATALOG_CUBRID,
1609  MSGCAT_SET_PARSER_SYNTAX,
1610  MSGCAT_SYNTAX_CONTEXT);
1611  msg_size += strlen (msg_context);
1612  }
1613 
1614  if (after_token)
1615  {
1616  msg_size += strlen (after_token);
1617  }
1618 
1619  msg = (char *) csql_yyalloc (msg_size);
1620  if (msg == NULL)
1621  {
1622  YY_FATAL_ERROR( "out of dynamic memory in csql_yyerror()" );
1623  goto end;
1624  }
1625  free_msg = 1;
1626  if (end_statement == 0)
1627  {
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);
1631  }
1632  else
1633  {
1634  assert (msg_context != NULL);
1635  snprintf (msg, msg_size, msg_context,
1636  csql_yylloc.first_line, csql_yylloc.first_column,
1637  next_ptr);
1638  }
1639 
1640  len = strlen (msg);
1641 
1642  if (msg[len - 3] == '\n')
1643  {
1644  msg[len - 3] = ' ';
1645  }
1646  sprintf (msg + len, "%s '%s'", before_token, token_val);
1647 
1648  if (after_token)
1649  {
1650  strcat (msg, after_token);
1651  }
1652  }
1653  else
1654  {
1655  if (strstr (s, "$end"))
1656  {
1657  int msg_size;
1658 
1659  next_ptr = end_of_stmt_str;
1660  msg_size = strlen (before_token) + strlen (next_ptr) + 2;
1661 
1662  msg = (char *) csql_yyalloc (msg_size);
1663  if (msg == NULL)
1664  {
1665  YY_FATAL_ERROR( "out of dynamic memory in csql_yyerror()" );
1666  goto end;
1667  }
1668  snprintf (msg, msg_size, "%s %s", before_token, next_ptr);
1669  free_msg = 1;
1670  }
1671  else
1672  {
1673  msg = (char *) s; // suppress warning; string will not be changed
1674  }
1675  }
1676 
1677  dummy = parser_new_node (this_parser, PT_EXPR);
1678  if (dummy == NULL)
1679  {
1680  if (free_msg && msg != NULL)
1681  {
1682  csql_yyfree (msg);
1683  }
1684  goto end;
1685  }
1686  PT_ERRORf (this_parser, dummy, "%s", msg);
1687  parser_free_tree (this_parser, dummy);
1688  if (free_msg && msg != NULL)
1689  {
1690  csql_yyfree (msg);
1691  }
1692  }
1693 
1694 end:
1695  if (token_val != NULL)
1696  {
1697  csql_yyfree (token_val);
1698  }
1699  if (buffer)
1700  {
1701  csql_yyfree (buffer);
1702  }
1703 }
1704 
1705 int
1706 yywrap ()
1707 {
1708  return 1;
1709 }
1710 
1711 
1712 static int
1713 parser_yyinput_single_line (char *buff, int max_size)
1714 {
1715  int c, end;
1716  int i = 0;
1717 
1718  assert (max_size >= 1);
1719  do
1720  {
1721  if (str_identifier == '\'' || str_identifier == '\"')
1722  {
1723  c = str_identifier;
1724  }
1725  else
1726  {
1727  c = pt_nextchar ();
1728  }
1729 
1730  if (c == '\'' || c == '\"') /* string start */
1731  {
1732  if (str_identifier != '\'' && str_identifier != '\"')
1733  {
1734  str_identifier = c;
1735  buff[i++] = c;
1736  if (i >= max_size)
1737  {
1738  return i;
1739  }
1740  }
1741  end = c;
1742 
1743  do
1744  {
1745  c = pt_nextchar ();
1746  if (c == end) /* string end */
1747  {
1748  str_identifier = '\0';
1749  break;
1750  }
1751 
1752  buff[i++] = c;
1753  if (i >= max_size)
1754  {
1755  return i;
1756  }
1757 
1758  if (c == '\\'
1759  && (prm_get_bool_value (PRM_ID_NO_BACKSLASH_ESCAPES) == false))
1760  {
1761  /* if escape character */
1762  c = pt_nextchar (); /* read one more */
1763  buff[i++] = c;
1764  if (i >= max_size)
1765  {
1766  return i;
1767  }
1768  }
1769  }
1770  while (c != -1);
1771  }
1772 
1773  if (c == ';')
1774  {
1775  buff[i++] = -1;
1776  buff[i] = 0;
1777  return i;
1778  }
1779 
1780  buff[i++] = c;
1781  if (i >= max_size)
1782  {
1783  return i;
1784  }
1785 
1786  }
1787  while (c != -1);
1788 
1789  buff[i] = 0;
1790  parser_yyinput_single_mode = 0; /* all done */
1791 
1792  /* end of file */
1793  str_identifier = '\0';
1794 
1795  return i;
1796 }
1797 
1798 static int
1799 parser_yyinput_multi_line (char *buff, int max_size)
1800 {
1801  int c;
1802  int i = 0;
1803 
1804  assert (max_size >= 1);
1805  for (;;)
1806  {
1807  c = pt_nextchar ();
1808  if (c == -1)
1809  {
1810  buff[i] = 0;
1811  return i;
1812  }
1813 
1814  buff[i++] = c;
1815  if (i == max_size)
1816  {
1817  buff[i] = 0;
1818  return i;
1819  }
1820  }
1821 }
1822 
1823 static int
1824 parser_yyinput (char *buff, int max_size)
1825 {
1826  if (!parser_yyinput_single_mode)
1827  {
1828  return parser_yyinput_multi_line (buff, max_size);
1829  }
1830  else
1831  {
1832  return parser_yyinput_single_line (buff, max_size);
1833  }
1834 }
1835 
1836 static int
1837 input_internal ()
1838 {
1839  int c = input ();
1840  if (c == '\n')
1841  {
1842  this_parser->line = csql_yylloc.last_line = yylineno;
1843  this_parser->column = csql_yylloc.last_column = yycolumn_end = 1;
1844  }
1845  else
1846  {
1847  this_parser->column = csql_yylloc.last_column = yycolumn_end++;
1848  }
1849 
1850  return c;
1851 }
1852 
1853 static char *
1854 parser_c_hint (void)
1855 {
1856  int c, c1;
1857  char buff[CSQL_MAXNAME];
1858  int i = 0;
1859  PT_HINT_ENUM hint = PT_HINT_NONE;
1860 
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;
1867 
1868  if (i < (CSQL_MAXNAME - 1) && (c = input_internal ()) == '+')
1869  { /* hint */
1870  buff[i++] = '+';
1871  while ((c = input_internal ()) != 0 && c != -1)
1872  {
1873  if (c == '*')
1874  {
1875  /* peek and check next char */
1876  c1 = input_internal ();
1877  if (c1 == '/')
1878  {
1879  break;
1880  }
1881  unput (c1);
1882  }
1883 
1884  if (i >= (CSQL_MAXNAME - 1))
1885  {
1886  i++;
1887  yybuffer_pos += i;
1888  goto consume_comment;
1889  }
1890 
1891  buff[i++] = c;
1892  }
1893 
1894  buff[i] = 0;
1895 
1896  yybuffer_pos += i + 2;
1897  pt_check_hint (buff, parser_hint_table, &hint, false);
1898  if (hint == PT_HINT_NONE)
1899  { /* comment */
1900  return NULL;
1901  }
1902 
1903  return pt_makename (buff);
1904  }
1905  else
1906  {
1907  unput (c);
1908  }
1909 
1910 consume_comment:
1911  while ((c = input_internal ()) != '*' && c != 0 && c != -1)
1912  {
1913  yybuffer_pos++;
1914  }
1915 
1916  if ((c1 = input_internal ()) != '/' && c != 0 && c != -1)
1917  {
1918  unput (c1);
1919  if (c == '*')
1920  {
1921  yybuffer_pos++;
1922  }
1923  goto consume_comment;
1924  }
1925 
1926  yybuffer_pos += 2;
1927 
1928  return NULL;
1929 }
1930 
1931 
1932 static char *
1933 parser_line_hint (void)
1934 {
1935  int c;
1936  char buff[CSQL_MAXNAME];
1937  int i = 0;
1938  PT_HINT_ENUM hint = PT_HINT_NONE;
1939 
1940 
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;
1947 
1948 loop:
1949  if (i < (CSQL_MAXNAME - 1) && (c = input_internal ()) == '+')
1950  { /* hint */
1951  buff[i++] = '+';
1952  while ((c = input_internal ()) != '\r' && c != '\n' && c != 0
1953  && c != -1)
1954  {
1955  if (i >= (CSQL_MAXNAME - 1))
1956  goto loop;
1957  buff[i++] = c;
1958  }
1959  buff[i] = 0;
1960 
1961  yybuffer_pos += i + 1;
1962  pt_check_hint (buff, parser_hint_table, &hint, false);
1963  if (hint == PT_HINT_NONE)
1964  { /* comment */
1965  return NULL;
1966  }
1967 
1968  return pt_makename (buff);
1969  }
1970  else
1971  { /* comment */
1972  yybuffer_pos += i;
1973  unput (c);
1974  while ((c = input_internal ()) != '\r' && c != '\n' && c != 0
1975  && c != -1)
1976  {
1977  yybuffer_pos ++;
1978  }
1979  yybuffer_pos ++;
1980 
1981  return NULL;
1982  }
1983 }
1984 
1985 
1986 static void
1987 begin_token (char *token)
1988 {
1989  yycolumn = yycolumn_end;
1990  yycolumn_end += strlen (token);
1991 
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;
1996 }