1#include "univ.i"
2#line 2 "lexyy.cc"
3
4#line 4 "lexyy.cc"
5
6#define YY_INT_ALIGNED short int
7
8/* A lexical scanner generated by flex */
9
10#define FLEX_SCANNER
11#define YY_FLEX_MAJOR_VERSION 2
12#define YY_FLEX_MINOR_VERSION 6
13#define YY_FLEX_SUBMINOR_VERSION 1
14#if YY_FLEX_SUBMINOR_VERSION > 0
15#define FLEX_BETA
16#endif
17
18/* First, we deal with platform-specific or compiler-specific issues. */
19
20/* begin standard C headers. */
21#include <stdio.h>
22#include <string.h>
23#include <errno.h>
24#include <stdlib.h>
25
26/* end standard C headers. */
27
28/* flex integer type definitions */
29
30#ifndef FLEXINT_H
31#define FLEXINT_H
32
33/* C99 systems have <inttypes.h>. Non-C99 systems may or may not. */
34
35#if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
36
37/* C99 says to define __STDC_LIMIT_MACROS before including stdint.h,
38 * if you want the limit (max/min) macros for int types.
39 */
40#ifndef __STDC_LIMIT_MACROS
41#define __STDC_LIMIT_MACROS 1
42#endif
43
44#include <inttypes.h>
45typedef int8_t flex_int8_t;
46typedef uint8_t flex_uint8_t;
47typedef int16_t flex_int16_t;
48typedef uint16_t flex_uint16_t;
49typedef int32_t flex_int32_t;
50typedef uint32_t flex_uint32_t;
51#else
52typedef signed char flex_int8_t;
53typedef short int flex_int16_t;
54typedef int flex_int32_t;
55typedef unsigned char flex_uint8_t;
56typedef unsigned short int flex_uint16_t;
57typedef unsigned int flex_uint32_t;
58
59/* Limits of integral types. */
60#ifndef INT8_MIN
61#define INT8_MIN (-128)
62#endif
63#ifndef INT16_MIN
64#define INT16_MIN (-32767-1)
65#endif
66#ifndef INT32_MIN
67#define INT32_MIN (-2147483647-1)
68#endif
69#ifndef INT8_MAX
70#define INT8_MAX (127)
71#endif
72#ifndef INT16_MAX
73#define INT16_MAX (32767)
74#endif
75#ifndef INT32_MAX
76#define INT32_MAX (2147483647)
77#endif
78#ifndef UINT8_MAX
79#define UINT8_MAX (255U)
80#endif
81#ifndef UINT16_MAX
82#define UINT16_MAX (65535U)
83#endif
84#ifndef UINT32_MAX
85#define UINT32_MAX (4294967295U)
86#endif
87
88#endif /* ! C99 */
89
90#endif /* ! FLEXINT_H */
91
92/* TODO: this is always defined, so inline it */
93#define yyconst const
94
95#if defined(__GNUC__) && __GNUC__ >= 3
96#define yynoreturn __attribute__((__noreturn__))
97#else
98#define yynoreturn
99#endif
100
101/* Returned upon end-of-file. */
102#define YY_NULL 0
103
104/* Promotes a possibly negative, possibly signed char to an unsigned
105 * integer for use as an array index. If the signed char is negative,
106 * we want to instead treat it as an 8-bit unsigned char, hence the
107 * double cast.
108 */
109#define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c)
110
111/* Enter a start condition. This macro really ought to take a parameter,
112 * but we do it the disgusting crufty way forced on us by the ()-less
113 * definition of BEGIN.
114 */
115#define BEGIN (yy_start) = 1 + 2 *
116
117/* Translate the current start state into a value that can be later handed
118 * to BEGIN to return to the state. The YYSTATE alias is for lex
119 * compatibility.
120 */
121#define YY_START (((yy_start) - 1) / 2)
122#define YYSTATE YY_START
123
124/* Action number for EOF rule of a given start state. */
125#define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
126
127/* Special action meaning "start processing a new file". */
128#define YY_NEW_FILE yyrestart(yyin )
129
130#define YY_END_OF_BUFFER_CHAR 0
131
132/* Size of default input buffer. */
133#ifndef YY_BUF_SIZE
134#ifdef __ia64__
135/* On IA-64, the buffer size is 16k, not 8k.
136 * Moreover, YY_BUF_SIZE is 2*YY_READ_BUF_SIZE in the general case.
137 * Ditto for the __ia64__ case accordingly.
138 */
139#define YY_BUF_SIZE 32768
140#else
141#define YY_BUF_SIZE 16384
142#endif /* __ia64__ */
143#endif
144
145/* The state buf must be large enough to hold one state per character in the main buffer.
146 */
147#define YY_STATE_BUF_SIZE ((YY_BUF_SIZE + 2) * sizeof(yy_state_type))
148
149#ifndef YY_TYPEDEF_YY_BUFFER_STATE
150#define YY_TYPEDEF_YY_BUFFER_STATE
151typedef struct yy_buffer_state *YY_BUFFER_STATE;
152#endif
153
154#ifndef YY_TYPEDEF_YY_SIZE_T
155#define YY_TYPEDEF_YY_SIZE_T
156typedef size_t yy_size_t;
157#endif
158
159
160
161
162
163#define EOB_ACT_CONTINUE_SCAN 0
164#define EOB_ACT_END_OF_FILE 1
165#define EOB_ACT_LAST_MATCH 2
166
167 #define YY_LESS_LINENO(n)
168 #define YY_LINENO_REWIND_TO(ptr)
169
170/* Return all but the first "n" matched characters back to the input stream. */
171#define yyless(n) \
172 do \
173 { \
174 /* Undo effects of setting up yytext. */ \
175 int yyless_macro_arg = (n); \
176 YY_LESS_LINENO(yyless_macro_arg);\
177 *yy_cp = (yy_hold_char); \
178 YY_RESTORE_YY_MORE_OFFSET \
179 (yy_c_buf_p) = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \
180 YY_DO_BEFORE_ACTION; /* set up yytext again */ \
181 } \
182 while ( 0 )
183
184#define unput(c) yyunput( c, (yytext_ptr) )
185
186#ifndef YY_STRUCT_YY_BUFFER_STATE
187#define YY_STRUCT_YY_BUFFER_STATE
188struct yy_buffer_state
189 {
190 FILE *yy_input_file;
191
192 char *yy_ch_buf; /* input buffer */
193 char *yy_buf_pos; /* current position in input buffer */
194
195 /* Size of input buffer in bytes, not including room for EOB
196 * characters.
197 */
198 int yy_buf_size;
199
200 /* Number of characters read into yy_ch_buf, not including EOB
201 * characters.
202 */
203 int yy_n_chars;
204
205 /* Whether we "own" the buffer - i.e., we know we created it,
206 * and can realloc() it to grow it, and should free() it to
207 * delete it.
208 */
209 int yy_is_our_buffer;
210
211 /* Whether this is an "interactive" input source; if so, and
212 * if we're using stdio for input, then we want to use getc()
213 * instead of fread(), to make sure we stop fetching input after
214 * each newline.
215 */
216 int yy_is_interactive;
217
218 /* Whether we're considered to be at the beginning of a line.
219 * If so, '^' rules will be active on the next match, otherwise
220 * not.
221 */
222 int yy_at_bol;
223
224 int yy_bs_lineno; /**< The line count. */
225 int yy_bs_column; /**< The column count. */
226
227 /* Whether to try to fill the input buffer when we reach the
228 * end of it.
229 */
230 int yy_fill_buffer;
231
232 int yy_buffer_status;
233
234#define YY_BUFFER_NEW 0
235#define YY_BUFFER_NORMAL 1
236 /* When an EOF's been seen but there's still some text to process
237 * then we mark the buffer as YY_EOF_PENDING, to indicate that we
238 * shouldn't try reading from the input source any more. We might
239 * still have a bunch of tokens to match, though, because of
240 * possible backing-up.
241 *
242 * When we actually see the EOF, we change the status to "new"
243 * (via yyrestart()), so that the user can continue scanning by
244 * just pointing yyin at a new input file.
245 */
246#define YY_BUFFER_EOF_PENDING 2
247
248 };
249#endif /* !YY_STRUCT_YY_BUFFER_STATE */
250
251/* Stack of input buffers. */
252static size_t yy_buffer_stack_top = 0; /**< index of top of stack. */
253static size_t yy_buffer_stack_max = 0; /**< capacity of stack. */
254static YY_BUFFER_STATE * yy_buffer_stack = NULL; /**< Stack as an array. */
255
256/* We provide macros for accessing buffer states in case in the
257 * future we want to put the buffer states in a more general
258 * "scanner state".
259 *
260 * Returns the top of the stack, or NULL.
261 */
262#define YY_CURRENT_BUFFER ( (yy_buffer_stack) \
263 ? (yy_buffer_stack)[(yy_buffer_stack_top)] \
264 : NULL)
265
266/* Same as previous macro, but useful when we know that the buffer stack is not
267 * NULL or when we need an lvalue. For internal use only.
268 */
269#define YY_CURRENT_BUFFER_LVALUE (yy_buffer_stack)[(yy_buffer_stack_top)]
270
271/* yy_hold_char holds the character lost when yytext is formed. */
272static char yy_hold_char;
273static int yy_n_chars; /* number of characters read into yy_ch_buf */
274static int yyleng;
275
276/* Points to current character in buffer. */
277static char *yy_c_buf_p = NULL;
278static int yy_init = 0; /* whether we need to initialize */
279static int yy_start = 0; /* start state number */
280
281/* Flag which is used to allow yywrap()'s to do buffer switches
282 * instead of setting up a fresh yyin. A bit of a hack ...
283 */
284static int yy_did_buffer_switch_on_eof;
285
286static void yyrestart (FILE *input_file );
287MY_ATTRIBUTE((unused)) static void yy_switch_to_buffer (YY_BUFFER_STATE new_buffer );
288static YY_BUFFER_STATE yy_create_buffer (FILE *file,int size );
289static void yy_delete_buffer (YY_BUFFER_STATE b );
290static void yy_flush_buffer (YY_BUFFER_STATE b );
291MY_ATTRIBUTE((unused)) static void yypush_buffer_state (YY_BUFFER_STATE new_buffer );
292MY_ATTRIBUTE((unused)) static void yypop_buffer_state (void );
293
294static void yyensure_buffer_stack (void );
295static void yy_load_buffer_state (void );
296static void yy_init_buffer (YY_BUFFER_STATE b,FILE *file );
297
298#define YY_FLUSH_BUFFER yy_flush_buffer(YY_CURRENT_BUFFER )
299
300YY_BUFFER_STATE yy_scan_buffer (char *base,yy_size_t size );
301YY_BUFFER_STATE yy_scan_string (yyconst char *yy_str );
302YY_BUFFER_STATE yy_scan_bytes (yyconst char *bytes,int len );
303
304static void *yyalloc (yy_size_t );
305static void *yyrealloc (void *,yy_size_t );
306static void yyfree (void * );
307
308#define yy_new_buffer yy_create_buffer
309
310#define yy_set_interactive(is_interactive) \
311 { \
312 if ( ! YY_CURRENT_BUFFER ){ \
313 yyensure_buffer_stack (); \
314 YY_CURRENT_BUFFER_LVALUE = \
315 yy_create_buffer(yyin,YY_BUF_SIZE ); \
316 } \
317 YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \
318 }
319
320#define yy_set_bol(at_bol) \
321 { \
322 if ( ! YY_CURRENT_BUFFER ){\
323 yyensure_buffer_stack (); \
324 YY_CURRENT_BUFFER_LVALUE = \
325 yy_create_buffer(yyin,YY_BUF_SIZE ); \
326 } \
327 YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \
328 }
329
330#define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol)
331
332/* Begin user sect3 */
333
334#define yywrap() (/*CONSTCOND*/1)
335#define YY_SKIP_YYWRAP
336
337typedef unsigned char YY_CHAR;
338
339static FILE *yyin = NULL, *yyout = NULL;
340
341typedef int yy_state_type;
342
343
344
345static int yylineno = 1;
346
347
348#ifdef yytext_ptr
349#undef yytext_ptr
350#endif
351#define yytext_ptr yytext
352
353static yy_state_type yy_get_previous_state (void );
354static yy_state_type yy_try_NUL_trans (yy_state_type current_state );
355static int yy_get_next_buffer (void );
356static void yynoreturn yy_fatal_error (yyconst char* msg );
357
358/* Done after the current pattern has been matched and before the
359 * corresponding action - sets up yytext.
360 */
361#define YY_DO_BEFORE_ACTION \
362 (yytext_ptr) = yy_bp; \
363 yyleng = (int) (yy_cp - yy_bp); \
364 (yy_hold_char) = *yy_cp; \
365 *yy_cp = '\0'; \
366 (yy_c_buf_p) = yy_cp;
367
368#define YY_NUM_RULES 123
369#define YY_END_OF_BUFFER 124
370/* This struct is not used in this scanner,
371 but its presence is necessary. */
372struct yy_trans_info
373 {
374 flex_int32_t yy_verify;
375 flex_int32_t yy_nxt;
376 };
377static yyconst flex_int16_t yy_accept[404] =
378 { 0,
379 0, 0, 118, 118, 0, 0, 0, 0, 124, 122,
380 121, 121, 8, 122, 113, 5, 102, 108, 111, 109,
381 106, 110, 122, 112, 1, 122, 107, 105, 103, 104,
382 116, 95, 95, 95, 95, 95, 95, 95, 95, 95,
383 95, 95, 95, 95, 95, 95, 95, 95, 95, 95,
384 114, 115, 118, 119, 6, 7, 9, 10, 121, 4,
385 97, 117, 2, 1, 3, 98, 99, 101, 100, 0,
386 95, 0, 95, 95, 95, 95, 95, 44, 95, 95,
387 95, 95, 95, 95, 95, 95, 95, 95, 95, 95,
388 95, 95, 95, 28, 17, 25, 95, 95, 95, 95,
389
390 95, 95, 54, 62, 95, 14, 95, 95, 95, 95,
391 95, 95, 95, 95, 95, 95, 95, 95, 95, 95,
392 95, 95, 95, 95, 118, 119, 119, 120, 6, 7,
393 9, 10, 2, 0, 96, 13, 45, 95, 95, 95,
394 95, 95, 95, 95, 95, 95, 95, 95, 95, 95,
395 95, 95, 95, 95, 95, 27, 95, 95, 95, 41,
396 95, 95, 95, 95, 21, 95, 95, 95, 95, 95,
397 15, 95, 95, 95, 18, 95, 95, 95, 95, 95,
398 81, 95, 95, 95, 51, 95, 12, 95, 36, 95,
399 95, 95, 95, 95, 95, 95, 95, 95, 95, 95,
400
401 0, 96, 95, 95, 95, 95, 20, 95, 24, 95,
402 95, 95, 95, 95, 95, 95, 95, 95, 95, 95,
403 46, 95, 30, 95, 88, 95, 95, 39, 95, 95,
404 95, 95, 95, 48, 95, 93, 90, 32, 92, 95,
405 11, 65, 95, 95, 95, 42, 95, 95, 95, 95,
406 95, 95, 95, 95, 95, 95, 29, 95, 95, 95,
407 95, 95, 95, 95, 95, 95, 86, 0, 95, 26,
408 95, 95, 95, 67, 95, 95, 95, 95, 37, 95,
409 95, 95, 95, 95, 95, 31, 66, 23, 95, 59,
410 95, 76, 95, 95, 95, 43, 95, 95, 95, 95,
411
412 95, 95, 95, 95, 91, 95, 95, 56, 95, 95,
413 95, 95, 95, 95, 95, 40, 33, 0, 80, 94,
414 19, 95, 95, 84, 95, 75, 55, 95, 64, 95,
415 52, 95, 95, 47, 95, 77, 95, 79, 95, 95,
416 34, 95, 95, 95, 35, 73, 95, 95, 95, 95,
417 60, 95, 50, 49, 95, 95, 95, 57, 53, 63,
418 95, 95, 22, 95, 95, 74, 82, 95, 95, 78,
419 95, 69, 95, 95, 95, 95, 95, 38, 89, 68,
420 95, 85, 95, 95, 95, 87, 95, 95, 61, 16,
421 95, 71, 70, 95, 58, 83, 95, 95, 95, 95,
422
423 95, 72, 0
424 } ;
425
426static yyconst YY_CHAR yy_ec[256] =
427 { 0,
428 1, 1, 1, 1, 1, 1, 1, 1, 2, 3,
429 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
430 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
431 1, 2, 1, 4, 5, 6, 7, 1, 8, 9,
432 10, 11, 12, 13, 14, 15, 16, 17, 17, 17,
433 17, 17, 17, 17, 17, 17, 17, 18, 19, 20,
434 21, 22, 23, 24, 25, 26, 27, 28, 29, 30,
435 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
436 41, 42, 43, 44, 45, 46, 47, 48, 49, 50,
437 1, 1, 1, 1, 51, 1, 34, 34, 34, 34,
438
439 34, 34, 34, 34, 34, 34, 34, 52, 34, 34,
440 34, 34, 53, 34, 54, 34, 34, 34, 34, 34,
441 34, 34, 55, 1, 56, 1, 1, 1, 1, 1,
442 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
443 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
444 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
445 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
446 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
447 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
448 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
449
450 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
451 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
452 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
453 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
454 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
455 1, 1, 1, 1, 1
456 } ;
457
458static yyconst YY_CHAR yy_meta[57] =
459 { 0,
460 1, 1, 1, 2, 3, 1, 1, 4, 1, 1,
461 5, 1, 1, 1, 1, 6, 7, 1, 1, 1,
462 8, 1, 1, 6, 9, 9, 9, 9, 9, 9,
463 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
464 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
465 9, 9, 9, 9, 1, 1
466 } ;
467
468static yyconst flex_uint16_t yy_base[417] =
469 { 0,
470 0, 0, 296, 281, 283, 280, 261, 252, 253, 1285,
471 55, 57, 1285, 0, 1285, 1285, 1285, 1285, 1285, 1285,
472 1285, 1285, 211, 213, 46, 202, 1285, 43, 1285, 199,
473 1285, 46, 50, 56, 52, 66, 64, 51, 81, 92,
474 91, 94, 96, 111, 113, 116, 130, 134, 53, 143,
475 1285, 1285, 0, 106, 0, 206, 0, 205, 141, 0,
476 1285, 1285, 177, 56, 152, 1285, 1285, 1285, 1285, 161,
477 140, 147, 152, 154, 155, 161, 167, 171, 177, 172,
478 184, 174, 188, 189, 191, 194, 203, 212, 217, 219,
479 222, 223, 228, 224, 226, 233, 235, 239, 244, 251,
480
481 256, 260, 261, 262, 265, 271, 266, 281, 277, 287,
482 282, 288, 303, 306, 307, 292, 310, 321, 322, 323,
483 324, 325, 335, 338, 0, 112, 173, 1285, 0, 152,
484 0, 145, 130, 59, 0, 339, 341, 353, 351, 354,
485 365, 367, 355, 372, 376, 383, 379, 386, 388, 385,
486 398, 392, 402, 401, 414, 415, 416, 417, 426, 430,
487 432, 437, 433, 439, 442, 443, 449, 456, 460, 461,
488 463, 470, 472, 473, 479, 483, 485, 489, 492, 495,
489 498, 499, 502, 508, 509, 514, 515, 518, 520, 527,
490 530, 534, 536, 541, 543, 553, 555, 557, 559, 568,
491
492 41, 0, 564, 569, 570, 573, 574, 585, 580, 589,
493 586, 595, 598, 600, 605, 610, 611, 617, 620, 615,
494 622, 627, 626, 631, 641, 642, 646, 647, 648, 651,
495 652, 653, 657, 662, 663, 667, 669, 673, 680, 682,
496 684, 685, 686, 687, 689, 696, 698, 700, 701, 703,
497 699, 710, 714, 716, 729, 732, 731, 733, 735, 734,
498 746, 747, 748, 752, 753, 759, 749, 39, 769, 770,
499 771, 773, 774, 780, 783, 784, 787, 785, 786, 802,
500 800, 803, 816, 817, 818, 819, 820, 823, 833, 835,
501 836, 837, 838, 839, 848, 849, 852, 853, 854, 859,
502
503 863, 870, 868, 872, 875, 884, 885, 887, 889, 890,
504 888, 904, 906, 907, 908, 918, 919, 73, 921, 922,
505 923, 924, 933, 934, 936, 937, 938, 939, 940, 949,
506 952, 955, 953, 965, 969, 970, 971, 972, 974, 975,
507 981, 984, 986, 988, 990, 991, 1000, 1006, 1004, 1009,
508 1016, 1018, 1020, 1021, 1025, 1027, 1032, 1034, 1038, 1039,
509 1041, 1043, 1048, 1050, 1052, 1055, 1059, 1064, 1066, 1068,
510 1071, 1073, 1077, 1084, 1086, 1087, 1091, 1093, 1098, 1100,
511 1102, 1104, 1105, 1111, 1114, 1116, 1117, 1118, 1120, 1127,
512 1129, 1130, 1134, 1139, 1141, 1145, 1146, 1148, 1150, 1151,
513
514 1155, 1157, 1285, 1197, 1206, 1215, 1218, 1221, 1225, 1234,
515 1243, 1252, 1261, 1268, 1272, 1275
516 } ;
517
518static yyconst flex_int16_t yy_def[417] =
519 { 0,
520 403, 1, 404, 404, 405, 405, 406, 406, 403, 403,
521 403, 403, 403, 407, 403, 403, 403, 403, 403, 403,
522 403, 403, 403, 403, 403, 408, 403, 403, 403, 403,
523 403, 409, 409, 409, 409, 409, 34, 409, 409, 409,
524 409, 409, 409, 409, 409, 409, 409, 409, 409, 409,
525 403, 403, 410, 411, 412, 403, 413, 403, 403, 407,
526 403, 403, 403, 403, 408, 403, 403, 403, 403, 414,
527 409, 415, 409, 409, 409, 409, 409, 409, 409, 409,
528 409, 409, 409, 409, 409, 409, 409, 409, 409, 409,
529 409, 409, 409, 409, 409, 409, 409, 409, 409, 409,
530
531 409, 409, 409, 409, 409, 409, 409, 409, 409, 409,
532 409, 409, 409, 409, 409, 409, 409, 409, 409, 409,
533 409, 409, 409, 409, 410, 411, 411, 403, 412, 403,
534 413, 403, 403, 403, 416, 409, 409, 409, 409, 409,
535 409, 409, 409, 409, 409, 409, 409, 409, 409, 409,
536 409, 409, 409, 409, 409, 409, 409, 409, 409, 409,
537 409, 409, 409, 409, 409, 409, 409, 409, 409, 409,
538 409, 409, 409, 409, 409, 409, 409, 409, 409, 409,
539 409, 409, 409, 409, 409, 409, 409, 409, 409, 409,
540 409, 409, 409, 409, 409, 409, 409, 409, 409, 409,
541
542 403, 416, 409, 409, 409, 409, 409, 409, 409, 409,
543 409, 409, 409, 409, 409, 409, 409, 409, 409, 409,
544 409, 409, 409, 409, 409, 409, 409, 409, 409, 409,
545 409, 409, 409, 409, 409, 409, 409, 409, 409, 409,
546 409, 409, 409, 409, 409, 409, 409, 409, 409, 409,
547 409, 409, 409, 409, 409, 409, 409, 409, 409, 409,
548 409, 409, 409, 409, 409, 409, 409, 403, 409, 409,
549 409, 409, 409, 409, 409, 409, 409, 409, 409, 409,
550 409, 409, 409, 409, 409, 409, 409, 409, 409, 409,
551 409, 409, 409, 409, 409, 409, 409, 409, 409, 409,
552
553 409, 409, 409, 409, 409, 409, 409, 409, 409, 409,
554 409, 409, 409, 409, 409, 409, 409, 403, 409, 409,
555 409, 409, 409, 409, 409, 409, 409, 409, 409, 409,
556 409, 409, 409, 409, 409, 409, 409, 409, 409, 409,
557 409, 409, 409, 409, 409, 409, 409, 409, 409, 409,
558 409, 409, 409, 409, 409, 409, 409, 409, 409, 409,
559 409, 409, 409, 409, 409, 409, 409, 409, 409, 409,
560 409, 409, 409, 409, 409, 409, 409, 409, 409, 409,
561 409, 409, 409, 409, 409, 409, 409, 409, 409, 409,
562 409, 409, 409, 409, 409, 409, 409, 409, 409, 409,
563
564 409, 409, 0, 403, 403, 403, 403, 403, 403, 403,
565 403, 403, 403, 403, 403, 403
566 } ;
567
568static yyconst flex_uint16_t yy_nxt[1342] =
569 { 0,
570 10, 11, 12, 13, 10, 14, 15, 16, 17, 18,
571 19, 20, 21, 22, 23, 24, 25, 26, 27, 28,
572 29, 30, 31, 10, 32, 33, 34, 35, 36, 37,
573 38, 38, 39, 38, 38, 40, 41, 42, 43, 44,
574 38, 45, 46, 47, 48, 49, 50, 38, 38, 38,
575 38, 38, 38, 38, 51, 52, 59, 59, 59, 59,
576 63, 70, 64, 67, 68, 70, 70, 70, 70, 72,
577 63, 70, 64, 72, 72, 72, 72, 122, 75, 72,
578 84, 70, 76, 73, 85, 77, 135, 79, 74, 72,
579 318, 80, 89, 268, 81, 71, 70, 82, 78, 90,
580
581 83, 86, 91, 87, 72, 92, 70, 70, 93, 70,
582 94, 70, 201, 88, 72, 72, 127, 72, 95, 72,
583 97, 128, 403, 96, 98, 103, 70, 403, 70, 100,
584 99, 70, 101, 104, 72, 105, 72, 106, 102, 72,
585 107, 109, 59, 59, 112, 70, 133, 113, 132, 70,
586 110, 111, 108, 72, 117, 70, 114, 72, 70, 130,
587 115, 118, 70, 72, 116, 134, 72, 70, 119, 70,
588 70, 120, 403, 121, 123, 72, 70, 72, 72, 136,
589 137, 124, 70, 127, 72, 139, 70, 70, 128, 70,
590 72, 140, 70, 133, 72, 72, 138, 72, 141, 70,
591
592 72, 143, 149, 70, 70, 142, 70, 72, 132, 70,
593 144, 72, 72, 130, 72, 151, 145, 72, 70, 69,
594 146, 147, 66, 62, 152, 61, 72, 70, 148, 150,
595 156, 153, 70, 154, 70, 72, 155, 70, 70, 70,
596 72, 70, 72, 70, 157, 72, 72, 72, 70, 72,
597 70, 72, 403, 163, 70, 58, 72, 159, 72, 70,
598 158, 161, 72, 160, 58, 162, 70, 72, 164, 165,
599 168, 70, 166, 167, 72, 70, 70, 70, 170, 72,
600 70, 70, 169, 72, 72, 72, 70, 56, 72, 72,
601 56, 54, 70, 173, 72, 172, 70, 70, 174, 171,
602
603 72, 178, 70, 70, 72, 72, 54, 70, 403, 175,
604 72, 72, 403, 176, 181, 72, 179, 182, 70, 177,
605 180, 70, 70, 184, 403, 70, 72, 186, 183, 72,
606 72, 185, 188, 72, 190, 191, 70, 70, 70, 70,
607 70, 187, 403, 189, 72, 72, 72, 72, 72, 192,
608 70, 196, 403, 70, 70, 194, 70, 403, 72, 403,
609 197, 72, 72, 198, 72, 195, 70, 199, 70, 70,
610 70, 403, 193, 403, 72, 403, 72, 72, 72, 200,
611 70, 203, 70, 204, 403, 403, 205, 70, 72, 206,
612 72, 70, 207, 208, 70, 72, 209, 403, 70, 72,
613
614 70, 70, 72, 70, 403, 214, 72, 70, 72, 72,
615 403, 72, 216, 70, 210, 72, 70, 70, 211, 212,
616 220, 72, 213, 215, 72, 72, 217, 218, 221, 70,
617 70, 70, 70, 219, 403, 403, 403, 72, 72, 72,
618 72, 70, 223, 226, 222, 70, 224, 70, 70, 72,
619 227, 403, 70, 72, 70, 72, 72, 70, 70, 225,
620 72, 230, 72, 229, 70, 72, 72, 231, 228, 403,
621 233, 70, 72, 235, 403, 70, 70, 236, 70, 72,
622 234, 403, 232, 72, 72, 70, 72, 70, 70, 239,
623 237, 403, 240, 72, 70, 72, 72, 403, 70, 238,
624
625 70, 243, 72, 403, 70, 241, 72, 70, 72, 242,
626 70, 245, 72, 70, 70, 72, 246, 70, 72, 403,
627 244, 72, 72, 70, 70, 72, 403, 247, 403, 70,
628 70, 72, 72, 70, 250, 70, 252, 72, 72, 248,
629 403, 72, 70, 72, 403, 70, 403, 403, 249, 70,
630 72, 70, 251, 72, 255, 253, 70, 72, 70, 72,
631 254, 258, 259, 403, 72, 256, 72, 403, 70, 403,
632 70, 257, 70, 260, 70, 262, 72, 263, 72, 70,
633 72, 261, 72, 70, 70, 70, 403, 72, 70, 70,
634 403, 72, 72, 72, 266, 70, 72, 72, 265, 264,
635
636 70, 70, 267, 72, 70, 269, 270, 271, 72, 72,
637 70, 403, 72, 70, 272, 70, 403, 274, 72, 273,
638 70, 72, 277, 72, 278, 70, 70, 276, 72, 275,
639 70, 403, 70, 72, 72, 70, 403, 70, 72, 281,
640 72, 70, 70, 72, 283, 72, 70, 403, 279, 72,
641 72, 403, 403, 280, 72, 282, 70, 70, 284, 285,
642 286, 70, 70, 70, 72, 72, 70, 70, 70, 72,
643 72, 72, 70, 287, 72, 72, 72, 70, 70, 403,
644 72, 403, 70, 403, 70, 72, 72, 293, 70, 288,
645 72, 289, 72, 291, 292, 70, 72, 70, 290, 70,
646
647 70, 70, 70, 72, 70, 72, 294, 72, 72, 72,
648 72, 70, 72, 70, 70, 70, 70, 298, 70, 72,
649 295, 72, 72, 72, 72, 70, 72, 296, 302, 70,
650 297, 70, 403, 72, 403, 403, 304, 72, 303, 72,
651 299, 300, 305, 301, 70, 403, 70, 70, 70, 70,
652 70, 403, 72, 307, 72, 72, 72, 72, 72, 306,
653 308, 70, 70, 70, 70, 309, 310, 70, 70, 72,
654 72, 72, 72, 403, 70, 72, 72, 313, 311, 403,
655 315, 316, 72, 403, 70, 70, 70, 317, 70, 70,
656 312, 314, 72, 72, 72, 70, 72, 72, 70, 70,
657
658 70, 70, 70, 72, 403, 403, 72, 72, 72, 72,
659 72, 323, 319, 325, 320, 70, 403, 70, 70, 403,
660 403, 321, 403, 72, 322, 72, 72, 324, 326, 403,
661 327, 70, 70, 70, 70, 70, 403, 328, 70, 72,
662 72, 72, 72, 72, 329, 331, 72, 403, 70, 403,
663 70, 70, 70, 70, 70, 332, 72, 330, 72, 72,
664 72, 72, 72, 70, 70, 333, 335, 70, 70, 70,
665 336, 72, 72, 403, 70, 72, 72, 72, 70, 334,
666 339, 338, 72, 70, 403, 70, 72, 70, 403, 403,
667 70, 72, 337, 72, 343, 72, 341, 340, 72, 70,
668
669 70, 403, 70, 70, 70, 70, 342, 72, 72, 344,
670 72, 72, 72, 72, 349, 345, 403, 403, 403, 70,
671 403, 70, 70, 70, 350, 346, 348, 72, 347, 72,
672 72, 72, 351, 70, 70, 353, 70, 70, 70, 70,
673 403, 72, 72, 352, 72, 72, 72, 72, 70, 70,
674 354, 70, 70, 70, 70, 70, 72, 72, 403, 72,
675 72, 72, 72, 72, 70, 403, 356, 70, 70, 403,
676 70, 403, 72, 355, 357, 72, 72, 360, 72, 358,
677 70, 361, 359, 403, 70, 70, 70, 70, 72, 70,
678 70, 362, 72, 72, 72, 72, 70, 72, 72, 70,
679
680 403, 70, 403, 70, 72, 70, 70, 72, 364, 72,
681 363, 72, 368, 72, 72, 70, 366, 403, 365, 70,
682 369, 70, 403, 72, 70, 367, 403, 72, 370, 72,
683 371, 70, 72, 70, 373, 70, 70, 403, 403, 72,
684 70, 72, 70, 72, 72, 372, 374, 70, 72, 70,
685 72, 403, 403, 70, 70, 72, 70, 72, 70, 376,
686 377, 72, 72, 70, 72, 70, 72, 70, 375, 403,
687 70, 72, 403, 72, 70, 72, 403, 380, 72, 70,
688 379, 70, 72, 70, 378, 403, 70, 72, 70, 72,
689 403, 72, 70, 381, 72, 403, 72, 403, 382, 70,
690
691 72, 70, 70, 383, 403, 385, 70, 72, 70, 72,
692 72, 386, 384, 70, 72, 70, 72, 70, 389, 70,
693 70, 72, 403, 72, 387, 72, 70, 72, 72, 70,
694 390, 70, 70, 70, 72, 70, 388, 72, 403, 72,
695 72, 72, 70, 72, 70, 70, 395, 403, 391, 70,
696 72, 403, 72, 72, 70, 393, 70, 72, 396, 392,
697 70, 70, 72, 70, 72, 70, 70, 394, 72, 72,
698 70, 72, 70, 72, 72, 400, 397, 403, 72, 401,
699 72, 403, 403, 403, 399, 403, 403, 403, 403, 403,
700 398, 403, 403, 403, 403, 403, 402, 53, 53, 53,
701
702 53, 53, 53, 53, 53, 53, 55, 55, 55, 55,
703 55, 55, 55, 55, 55, 57, 57, 57, 57, 57,
704 57, 57, 57, 57, 60, 403, 60, 65, 65, 65,
705 71, 71, 403, 71, 125, 125, 125, 125, 403, 125,
706 125, 125, 125, 126, 126, 126, 126, 126, 126, 126,
707 126, 126, 129, 129, 129, 403, 129, 129, 129, 129,
708 129, 131, 403, 131, 131, 131, 131, 131, 131, 131,
709 135, 403, 403, 403, 403, 403, 135, 72, 72, 403,
710 72, 202, 403, 202, 9, 403, 403, 403, 403, 403,
711 403, 403, 403, 403, 403, 403, 403, 403, 403, 403,
712
713 403, 403, 403, 403, 403, 403, 403, 403, 403, 403,
714 403, 403, 403, 403, 403, 403, 403, 403, 403, 403,
715 403, 403, 403, 403, 403, 403, 403, 403, 403, 403,
716 403, 403, 403, 403, 403, 403, 403, 403, 403, 403,
717 403
718 } ;
719
720static yyconst flex_int16_t yy_chk[1342] =
721 { 0,
722 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
723 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
724 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
725 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
726 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
727 1, 1, 1, 1, 1, 1, 11, 11, 12, 12,
728 25, 32, 25, 28, 28, 33, 38, 35, 49, 32,
729 64, 34, 64, 33, 38, 35, 49, 49, 33, 34,
730 35, 36, 33, 32, 35, 33, 318, 34, 32, 36,
731 268, 34, 37, 201, 34, 37, 39, 34, 33, 37,
732
733 34, 36, 37, 36, 39, 37, 41, 40, 37, 42,
734 39, 43, 134, 36, 41, 40, 54, 42, 39, 43,
735 40, 54, 126, 39, 40, 43, 44, 126, 45, 41,
736 40, 46, 42, 43, 44, 43, 45, 43, 42, 46,
737 43, 45, 59, 59, 46, 47, 133, 46, 132, 48,
738 45, 45, 44, 47, 47, 71, 46, 48, 50, 130,
739 46, 47, 72, 71, 46, 70, 50, 73, 47, 74,
740 75, 48, 65, 48, 50, 73, 76, 74, 75, 73,
741 74, 50, 77, 127, 76, 75, 78, 80, 127, 82,
742 77, 76, 79, 63, 78, 80, 74, 82, 76, 81,
743
744 79, 79, 82, 83, 84, 77, 85, 81, 58, 86,
745 80, 83, 84, 56, 85, 84, 80, 86, 87, 30,
746 81, 81, 26, 24, 84, 23, 87, 88, 81, 83,
747 87, 84, 89, 85, 90, 88, 86, 91, 92, 94,
748 89, 95, 90, 93, 88, 91, 92, 94, 96, 95,
749 97, 93, 9, 95, 98, 8, 96, 90, 97, 99,
750 89, 92, 98, 91, 7, 93, 100, 99, 95, 95,
751 99, 101, 97, 98, 100, 102, 103, 104, 100, 101,
752 105, 107, 99, 102, 103, 104, 106, 6, 105, 107,
753 5, 4, 109, 105, 106, 102, 108, 111, 106, 101,
754
755 109, 109, 110, 112, 108, 111, 3, 116, 0, 107,
756 110, 112, 0, 108, 110, 116, 109, 111, 113, 108,
757 109, 114, 115, 112, 0, 117, 113, 113, 111, 114,
758 115, 112, 115, 117, 116, 117, 118, 119, 120, 121,
759 122, 114, 0, 115, 118, 119, 120, 121, 122, 118,
760 123, 121, 0, 124, 136, 120, 137, 0, 123, 0,
761 122, 124, 136, 123, 137, 120, 139, 123, 138, 140,
762 143, 0, 119, 0, 139, 0, 138, 140, 143, 124,
763 141, 138, 142, 139, 0, 0, 140, 144, 141, 141,
764 142, 145, 142, 142, 147, 144, 143, 0, 146, 145,
765
766 150, 148, 147, 149, 0, 147, 146, 152, 150, 148,
767 0, 149, 149, 151, 144, 152, 154, 153, 145, 146,
768 152, 151, 146, 148, 154, 153, 150, 150, 153, 155,
769 156, 157, 158, 151, 0, 0, 0, 155, 156, 157,
770 158, 159, 155, 158, 154, 160, 155, 161, 163, 159,
771 159, 0, 162, 160, 164, 161, 163, 165, 166, 157,
772 162, 163, 164, 162, 167, 165, 166, 164, 161, 0,
773 165, 168, 167, 166, 0, 169, 170, 167, 171, 168,
774 165, 0, 164, 169, 170, 172, 171, 173, 174, 170,
775 168, 0, 171, 172, 175, 173, 174, 0, 176, 169,
776
777 177, 174, 175, 0, 178, 172, 176, 179, 177, 173,
778 180, 177, 178, 181, 182, 179, 178, 183, 180, 0,
779 176, 181, 182, 184, 185, 183, 0, 179, 0, 186,
780 187, 184, 185, 188, 182, 189, 184, 186, 187, 180,
781 0, 188, 190, 189, 0, 191, 0, 0, 181, 192,
782 190, 193, 183, 191, 190, 186, 194, 192, 195, 193,
783 188, 193, 193, 0, 194, 191, 195, 0, 196, 0,
784 197, 192, 198, 193, 199, 195, 196, 196, 197, 203,
785 198, 194, 199, 200, 204, 205, 0, 203, 206, 207,
786 0, 200, 204, 205, 199, 209, 206, 207, 198, 197,
787
788 208, 211, 200, 209, 210, 203, 204, 205, 208, 211,
789 212, 0, 210, 213, 206, 214, 0, 210, 212, 208,
790 215, 213, 213, 214, 214, 216, 217, 212, 215, 211,
791 220, 0, 218, 216, 217, 219, 0, 221, 220, 217,
792 218, 223, 222, 219, 219, 221, 224, 0, 215, 223,
793 222, 0, 0, 216, 224, 218, 225, 226, 220, 222,
794 224, 227, 228, 229, 225, 226, 230, 231, 232, 227,
795 228, 229, 233, 226, 230, 231, 232, 234, 235, 0,
796 233, 0, 236, 0, 237, 234, 235, 233, 238, 227,
797 236, 229, 237, 231, 232, 239, 238, 240, 230, 241,
798
799 242, 243, 244, 239, 245, 240, 235, 241, 242, 243,
800 244, 246, 245, 247, 251, 248, 249, 245, 250, 246,
801 240, 247, 251, 248, 249, 252, 250, 243, 250, 253,
802 244, 254, 0, 252, 0, 0, 252, 253, 251, 254,
803 247, 248, 253, 249, 255, 0, 257, 256, 258, 260,
804 259, 0, 255, 255, 257, 256, 258, 260, 259, 254,
805 256, 261, 262, 263, 267, 258, 259, 264, 265, 261,
806 262, 263, 267, 0, 266, 264, 265, 262, 260, 0,
807 264, 265, 266, 0, 269, 270, 271, 266, 272, 273,
808 261, 263, 269, 270, 271, 274, 272, 273, 275, 276,
809
810 278, 279, 277, 274, 0, 0, 275, 276, 278, 279,
811 277, 275, 269, 277, 271, 281, 0, 280, 282, 0,
812 0, 272, 0, 281, 273, 280, 282, 276, 278, 0,
813 280, 283, 284, 285, 286, 287, 0, 281, 288, 283,
814 284, 285, 286, 287, 282, 284, 288, 0, 289, 0,
815 290, 291, 292, 293, 294, 285, 289, 283, 290, 291,
816 292, 293, 294, 295, 296, 289, 293, 297, 298, 299,
817 294, 295, 296, 0, 300, 297, 298, 299, 301, 291,
818 298, 297, 300, 303, 0, 302, 301, 304, 0, 0,
819 305, 303, 295, 302, 302, 304, 300, 299, 305, 306,
820
821 307, 0, 308, 311, 309, 310, 301, 306, 307, 303,
822 308, 311, 309, 310, 310, 304, 0, 0, 0, 312,
823 0, 313, 314, 315, 311, 306, 309, 312, 307, 313,
824 314, 315, 312, 316, 317, 314, 319, 320, 321, 322,
825 0, 316, 317, 313, 319, 320, 321, 322, 323, 324,
826 315, 325, 326, 327, 328, 329, 323, 324, 0, 325,
827 326, 327, 328, 329, 330, 0, 322, 331, 333, 0,
828 332, 0, 330, 321, 323, 331, 333, 330, 332, 325,
829 334, 332, 328, 0, 335, 336, 337, 338, 334, 339,
830 340, 333, 335, 336, 337, 338, 341, 339, 340, 342,
831
832 0, 343, 0, 344, 341, 345, 346, 342, 337, 343,
833 335, 344, 343, 345, 346, 347, 340, 0, 339, 349,
834 344, 348, 0, 347, 350, 342, 0, 349, 347, 348,
835 348, 351, 350, 352, 350, 353, 354, 0, 0, 351,
836 355, 352, 356, 353, 354, 349, 352, 357, 355, 358,
837 356, 0, 0, 359, 360, 357, 361, 358, 362, 356,
838 357, 359, 360, 363, 361, 364, 362, 365, 355, 0,
839 366, 363, 0, 364, 367, 365, 0, 364, 366, 368,
840 362, 369, 367, 370, 361, 0, 371, 368, 372, 369,
841 0, 370, 373, 365, 371, 0, 372, 0, 368, 374,
842
843 373, 375, 376, 369, 0, 373, 377, 374, 378, 375,
844 376, 374, 371, 379, 377, 380, 378, 381, 377, 382,
845 383, 379, 0, 380, 375, 381, 384, 382, 383, 385,
846 381, 386, 387, 388, 384, 389, 376, 385, 0, 386,
847 387, 388, 390, 389, 391, 392, 388, 0, 383, 393,
848 390, 0, 391, 392, 394, 385, 395, 393, 391, 384,
849 396, 397, 394, 398, 395, 399, 400, 387, 396, 397,
850 401, 398, 402, 399, 400, 399, 394, 0, 401, 400,
851 402, 0, 0, 0, 398, 0, 0, 0, 0, 0,
852 397, 0, 0, 0, 0, 0, 401, 404, 404, 404,
853
854 404, 404, 404, 404, 404, 404, 405, 405, 405, 405,
855 405, 405, 405, 405, 405, 406, 406, 406, 406, 406,
856 406, 406, 406, 406, 407, 0, 407, 408, 408, 408,
857 409, 409, 0, 409, 410, 410, 410, 410, 0, 410,
858 410, 410, 410, 411, 411, 411, 411, 411, 411, 411,
859 411, 411, 412, 412, 412, 0, 412, 412, 412, 412,
860 412, 413, 0, 413, 413, 413, 413, 413, 413, 413,
861 414, 0, 0, 0, 0, 0, 414, 415, 415, 0,
862 415, 416, 0, 416, 403, 403, 403, 403, 403, 403,
863 403, 403, 403, 403, 403, 403, 403, 403, 403, 403,
864
865 403, 403, 403, 403, 403, 403, 403, 403, 403, 403,
866 403, 403, 403, 403, 403, 403, 403, 403, 403, 403,
867 403, 403, 403, 403, 403, 403, 403, 403, 403, 403,
868 403, 403, 403, 403, 403, 403, 403, 403, 403, 403,
869 403
870 } ;
871
872static yy_state_type yy_last_accepting_state;
873static char *yy_last_accepting_cpos;
874
875
876static int yy_flex_debug = 0;
877
878/* The intent behind this definition is that it'll catch
879 * any uses of REJECT which flex missed.
880 */
881#define REJECT reject_used_but_not_detected
882#define yymore() yymore_used_but_not_detected
883#define YY_MORE_ADJ 0
884#define YY_RESTORE_YY_MORE_OFFSET
885static char *yytext;
886#line 1 "pars0lex.l"
887/*****************************************************************************
888
889Copyright (c) 1997, 2014, Oracle and/or its affiliates. All Rights Reserved.
890Copyright (c) 2017, MariaDB Corporation.
891
892This program is free software; you can redistribute it and/or modify it under
893the terms of the GNU General Public License as published by the Free Software
894Foundation; version 2 of the License.
895
896This program is distributed in the hope that it will be useful, but WITHOUT
897ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
898FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
899
900You should have received a copy of the GNU General Public License along with
901this program; if not, write to the Free Software Foundation, Inc.,
90251 Franklin Street, Suite 500, Boston, MA 02110-1335 USA
903
904*****************************************************************************/
905/******************************************************
906SQL parser lexical analyzer: input file for the GNU Flex lexer generator
907
908The InnoDB parser is frozen because MySQL takes care of SQL parsing.
909Therefore we normally keep the InnoDB parser C files as they are, and do
910not automatically generate them from pars0grm.y and pars0lex.l.
911
912How to make the InnoDB parser and lexer C files:
913
9141. Run ./make_flex.sh to generate lexer files.
915
9162. Run ./make_bison.sh to generate parser files.
917
918These instructions seem to work at least with bison-1.875d and flex-2.5.31 on
919Linux.
920
921Created 12/14/1997 Heikki Tuuri
922*******************************************************/
923#define YY_NO_INPUT 1
924#define YY_NO_UNISTD_H 1
925#line 54 "pars0lex.l"
926#define YYSTYPE que_node_t*
927
928#include "univ.i"
929#include "pars0pars.h"
930#include "pars0grm.h"
931#include "pars0sym.h"
932#include "mem0mem.h"
933#include "os0proc.h"
934
935#define malloc(A) ut_malloc_nokey(A)
936#define free(A) ut_free(A)
937#define realloc(P, A) ut_realloc(P, A)
938#define exit(A) ut_error
939
940/* Note: We cast &result to int* from yysize_t* */
941#define YY_INPUT(buf, result, max_size) \
942 (result = pars_get_lex_chars(buf, max_size))
943
944/* String buffer for removing quotes */
945static ulint stringbuf_len_alloc = 0; /* Allocated length */
946static ulint stringbuf_len = 0; /* Current length */
947static char* stringbuf; /* Start of buffer */
948/** Appends a string to the buffer. */
949static
950void
951string_append(
952/*==========*/
953 const char* str, /*!< in: string to be appended */
954 ulint len) /*!< in: length of the string */
955{
956 if (stringbuf == NULL) {
957 stringbuf = static_cast<char*>(malloc(1));
958 stringbuf_len_alloc = 1;
959 }
960
961 if (stringbuf_len + len > stringbuf_len_alloc) {
962 while (stringbuf_len + len > stringbuf_len_alloc) {
963 stringbuf_len_alloc <<= 1;
964 }
965
966 stringbuf = static_cast<char*>(
967 realloc(stringbuf, stringbuf_len_alloc));
968 }
969
970 memcpy(stringbuf + stringbuf_len, str, len);
971 stringbuf_len += len;
972}
973
974
975
976
977#line 977 "lexyy.cc"
978
979#define INITIAL 0
980#define comment 1
981#define quoted 2
982#define id 3
983
984#ifndef YY_NO_UNISTD_H
985/* Special case for "unistd.h", since it is non-ANSI. We include it way
986 * down here because we want the user's section 1 to have been scanned first.
987 * The user has a chance to override it with an option.
988 */
989#include <unistd.h>
990#endif
991
992#ifndef YY_EXTRA_TYPE
993#define YY_EXTRA_TYPE void *
994#endif
995
996static int yy_init_globals (void );
997
998/* Accessor methods to globals.
999 These are made visible to non-reentrant scanners for convenience. */
1000
1001MY_ATTRIBUTE((unused)) static int yylex_destroy (void );
1002
1003MY_ATTRIBUTE((unused)) static int yyget_debug (void );
1004
1005MY_ATTRIBUTE((unused)) static void yyset_debug (int debug_flag );
1006
1007YY_EXTRA_TYPE yyget_extra (void );
1008
1009
1010
1011MY_ATTRIBUTE((unused)) static FILE *yyget_in (void );
1012
1013MY_ATTRIBUTE((unused)) static void yyset_in (FILE * _in_str );
1014
1015MY_ATTRIBUTE((unused)) static FILE *yyget_out (void );
1016
1017MY_ATTRIBUTE((unused)) static void yyset_out (FILE * _out_str );
1018
1019 MY_ATTRIBUTE((unused)) static int yyget_leng (void );
1020
1021MY_ATTRIBUTE((unused)) static char *yyget_text (void );
1022
1023MY_ATTRIBUTE((unused)) static int yyget_lineno (void );
1024
1025MY_ATTRIBUTE((unused)) static void yyset_lineno (int _line_number );
1026
1027/* Macros after this point can all be overridden by user definitions in
1028 * section 1.
1029 */
1030
1031#ifndef YY_SKIP_YYWRAP
1032#ifdef __cplusplus
1033extern "C" int yywrap (void );
1034#else
1035extern int yywrap (void );
1036#endif
1037#endif
1038
1039#ifndef YY_NO_UNPUT
1040
1041#endif
1042
1043#ifndef yytext_ptr
1044static void yy_flex_strncpy (char *,yyconst char *,int );
1045#endif
1046
1047#ifdef YY_NEED_STRLEN
1048static int yy_flex_strlen (yyconst char * );
1049#endif
1050
1051#ifndef YY_NO_INPUT
1052
1053#ifdef __cplusplus
1054static int yyinput (void );
1055#else
1056static int input (void );
1057#endif
1058
1059#endif
1060
1061/* Amount of stuff to slurp up with each read. */
1062#ifndef YY_READ_BUF_SIZE
1063#ifdef __ia64__
1064/* On IA-64, the buffer size is 16k, not 8k */
1065#define YY_READ_BUF_SIZE 16384
1066#else
1067#define YY_READ_BUF_SIZE 8192
1068#endif /* __ia64__ */
1069#endif
1070
1071/* Copy whatever the last rule matched to the standard output. */
1072#ifndef ECHO
1073/* This used to be an fputs(), but since the string might contain NUL's,
1074 * we now use fwrite().
1075 */
1076#define ECHO do { if (fwrite( yytext, (size_t) yyleng, 1, yyout )) {} } while (0)
1077#endif
1078
1079/* Gets input and stuffs it into "buf". number of characters read, or YY_NULL,
1080 * is returned in "result".
1081 */
1082#ifndef YY_INPUT
1083#define YY_INPUT(buf,result,max_size) \
1084 if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \
1085 { \
1086 int c = '*'; \
1087 size_t n; \
1088 for ( n = 0; n < max_size && \
1089 (c = getc( yyin )) != EOF && c != '\n'; ++n ) \
1090 buf[n] = (char) c; \
1091 if ( c == '\n' ) \
1092 buf[n++] = (char) c; \
1093 if ( c == EOF && ferror( yyin ) ) \
1094 YY_FATAL_ERROR( "input in flex scanner failed" ); \
1095 result = n; \
1096 } \
1097 else \
1098 { \
1099 errno=0; \
1100 while ( (result = (int) fread(buf, 1, max_size, yyin))==0 && ferror(yyin)) \
1101 { \
1102 if( errno != EINTR) \
1103 { \
1104 YY_FATAL_ERROR( "input in flex scanner failed" ); \
1105 break; \
1106 } \
1107 errno=0; \
1108 clearerr(yyin); \
1109 } \
1110 }\
1111\
1112
1113#endif
1114
1115/* No semi-colon after return; correct usage is to write "yyterminate();" -
1116 * we don't want an extra ';' after the "return" because that will cause
1117 * some compilers to complain about unreachable statements.
1118 */
1119#ifndef yyterminate
1120#define yyterminate() return YY_NULL
1121#endif
1122
1123/* Number of entries by which start-condition stack grows. */
1124#ifndef YY_START_STACK_INCR
1125#define YY_START_STACK_INCR 25
1126#endif
1127
1128/* Report a fatal error. */
1129#ifndef YY_FATAL_ERROR
1130#define YY_FATAL_ERROR(msg) yy_fatal_error( msg )
1131#endif
1132
1133/* end tables serialization structures and prototypes */
1134
1135/* Default declaration of generated scanner - a define so the user can
1136 * easily add parameters.
1137 */
1138#ifndef YY_DECL
1139#define YY_DECL_IS_OURS 1
1140
1141extern int yylex (void);
1142
1143#define YY_DECL int yylex (void)
1144#endif /* !YY_DECL */
1145
1146/* Code executed at the beginning of each rule, after yytext and yyleng
1147 * have been set up.
1148 */
1149#ifndef YY_USER_ACTION
1150#define YY_USER_ACTION
1151#endif
1152
1153/* Code executed at the end of each rule. */
1154#ifndef YY_BREAK
1155#define YY_BREAK /*LINTED*/break;
1156#endif
1157
1158#define YY_RULE_SETUP \
1159 YY_USER_ACTION
1160
1161/** The main scanner function which does all the work.
1162 */
1163YY_DECL
1164{
1165 yy_state_type yy_current_state;
1166 char *yy_cp, *yy_bp;
1167 int yy_act;
1168
1169 if ( !(yy_init) )
1170 {
1171 (yy_init) = 1;
1172
1173#ifdef YY_USER_INIT
1174 YY_USER_INIT;
1175#endif
1176
1177 if ( ! (yy_start) )
1178 (yy_start) = 1; /* first start state */
1179
1180 if ( ! yyin )
1181 yyin = stdin;
1182
1183 if ( ! yyout )
1184 yyout = stdout;
1185
1186 if ( ! YY_CURRENT_BUFFER ) {
1187 yyensure_buffer_stack ();
1188 YY_CURRENT_BUFFER_LVALUE =
1189 yy_create_buffer(yyin,YY_BUF_SIZE );
1190 }
1191
1192 yy_load_buffer_state( );
1193 }
1194
1195 {
1196#line 113 "pars0lex.l"
1197
1198
1199#line 1199 "lexyy.cc"
1200
1201 while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */
1202 {
1203 yy_cp = (yy_c_buf_p);
1204
1205 /* Support of yytext. */
1206 *yy_cp = (yy_hold_char);
1207
1208 /* yy_bp points to the position in yy_ch_buf of the start of
1209 * the current run.
1210 */
1211 yy_bp = yy_cp;
1212
1213 yy_current_state = (yy_start);
1214yy_match:
1215 do
1216 {
1217 YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)] ;
1218 if ( yy_accept[yy_current_state] )
1219 {
1220 (yy_last_accepting_state) = yy_current_state;
1221 (yy_last_accepting_cpos) = yy_cp;
1222 }
1223 while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
1224 {
1225 yy_current_state = (int) yy_def[yy_current_state];
1226 if ( yy_current_state >= 404 )
1227 yy_c = yy_meta[(unsigned int) yy_c];
1228 }
1229 yy_current_state = yy_nxt[yy_base[yy_current_state] + (flex_int16_t) yy_c];
1230 ++yy_cp;
1231 }
1232 while ( yy_current_state != 403 );
1233 yy_cp = (yy_last_accepting_cpos);
1234 yy_current_state = (yy_last_accepting_state);
1235
1236yy_find_action:
1237 yy_act = yy_accept[yy_current_state];
1238
1239 YY_DO_BEFORE_ACTION;
1240
1241do_action: /* This label is used only to access EOF actions. */
1242
1243 switch ( yy_act )
1244 { /* beginning of action switch */
1245 case 0: /* must back up */
1246 /* undo the effects of YY_DO_BEFORE_ACTION */
1247 *yy_cp = (yy_hold_char);
1248 yy_cp = (yy_last_accepting_cpos);
1249 yy_current_state = (yy_last_accepting_state);
1250 goto yy_find_action;
1251
1252case 1:
1253YY_RULE_SETUP
1254#line 115 "pars0lex.l"
1255{
1256 yylval = sym_tab_add_int_lit(pars_sym_tab_global,
1257 atoi(yytext));
1258 return(PARS_INT_LIT);
1259}
1260 YY_BREAK
1261case 2:
1262YY_RULE_SETUP
1263#line 121 "pars0lex.l"
1264{
1265 ut_error; /* not implemented */
1266
1267 return(PARS_FLOAT_LIT);
1268}
1269 YY_BREAK
1270case 3:
1271YY_RULE_SETUP
1272#line 127 "pars0lex.l"
1273{
1274 ulint type;
1275
1276 yylval = sym_tab_add_bound_lit(pars_sym_tab_global,
1277 yytext + 1, &type);
1278
1279 return((int) type);
1280}
1281 YY_BREAK
1282case 4:
1283YY_RULE_SETUP
1284#line 136 "pars0lex.l"
1285{
1286 yylval = sym_tab_add_bound_id(pars_sym_tab_global,
1287 yytext + 1);
1288
1289 return(PARS_ID_TOKEN);
1290}
1291 YY_BREAK
1292case 5:
1293YY_RULE_SETUP
1294#line 143 "pars0lex.l"
1295{
1296/* Quoted character string literals are handled in an explicit
1297start state 'quoted'. This state is entered and the buffer for
1298the scanned string is emptied upon encountering a starting quote.
1299
1300In the state 'quoted', only two actions are possible (defined below). */
1301 BEGIN(quoted);
1302 stringbuf_len = 0;
1303}
1304 YY_BREAK
1305case 6:
1306/* rule 6 can match eol */
1307YY_RULE_SETUP
1308#line 152 "pars0lex.l"
1309{
1310 /* Got a sequence of characters other than "'":
1311 append to string buffer */
1312 string_append(yytext, yyleng);
1313}
1314 YY_BREAK
1315case 7:
1316YY_RULE_SETUP
1317#line 157 "pars0lex.l"
1318{
1319 /* Got a sequence of "'" characters:
1320 append half of them to string buffer,
1321 as "''" represents a single "'".
1322 We apply truncating division,
1323 so that "'''" will result in "'". */
1324
1325 string_append(yytext, yyleng / 2);
1326
1327 /* If we got an odd number of quotes, then the
1328 last quote we got is the terminating quote.
1329 At the end of the string, we return to the
1330 initial start state and report the scanned
1331 string literal. */
1332
1333 if (yyleng % 2) {
1334 BEGIN(INITIAL);
1335 yylval = sym_tab_add_str_lit(
1336 pars_sym_tab_global,
1337 (byte*) stringbuf, stringbuf_len);
1338 return(PARS_STR_LIT);
1339 }
1340}
1341 YY_BREAK
1342case 8:
1343YY_RULE_SETUP
1344#line 181 "pars0lex.l"
1345{
1346/* Quoted identifiers are handled in an explicit start state 'id'.
1347This state is entered and the buffer for the scanned string is emptied
1348upon encountering a starting quote.
1349
1350In the state 'id', only two actions are possible (defined below). */
1351 BEGIN(id);
1352 stringbuf_len = 0;
1353}
1354 YY_BREAK
1355case 9:
1356/* rule 9 can match eol */
1357YY_RULE_SETUP
1358#line 190 "pars0lex.l"
1359{
1360 /* Got a sequence of characters other than '"':
1361 append to string buffer */
1362 string_append(yytext, yyleng);
1363}
1364 YY_BREAK
1365case 10:
1366YY_RULE_SETUP
1367#line 195 "pars0lex.l"
1368{
1369 /* Got a sequence of '"' characters:
1370 append half of them to string buffer,
1371 as '""' represents a single '"'.
1372 We apply truncating division,
1373 so that '"""' will result in '"'. */
1374
1375 string_append(yytext, yyleng / 2);
1376
1377 /* If we got an odd number of quotes, then the
1378 last quote we got is the terminating quote.
1379 At the end of the string, we return to the
1380 initial start state and report the scanned
1381 identifier. */
1382
1383 if (yyleng % 2) {
1384 BEGIN(INITIAL);
1385 yylval = sym_tab_add_id(
1386 pars_sym_tab_global,
1387 (byte*) stringbuf, stringbuf_len);
1388
1389 return(PARS_ID_TOKEN);
1390 }
1391}
1392 YY_BREAK
1393case 11:
1394YY_RULE_SETUP
1395#line 220 "pars0lex.l"
1396{
1397 yylval = sym_tab_add_null_lit(pars_sym_tab_global);
1398
1399 return(PARS_NULL_LIT);
1400}
1401 YY_BREAK
1402case 12:
1403YY_RULE_SETUP
1404#line 226 "pars0lex.l"
1405{
1406 /* Implicit cursor name */
1407 yylval = sym_tab_add_str_lit(pars_sym_tab_global,
1408 (byte*) yytext, yyleng);
1409 return(PARS_SQL_TOKEN);
1410}
1411 YY_BREAK
1412case 13:
1413YY_RULE_SETUP
1414#line 233 "pars0lex.l"
1415{
1416 return(PARS_AND_TOKEN);
1417}
1418 YY_BREAK
1419case 14:
1420YY_RULE_SETUP
1421#line 237 "pars0lex.l"
1422{
1423 return(PARS_OR_TOKEN);
1424}
1425 YY_BREAK
1426case 15:
1427YY_RULE_SETUP
1428#line 241 "pars0lex.l"
1429{
1430 return(PARS_NOT_TOKEN);
1431}
1432 YY_BREAK
1433case 16:
1434YY_RULE_SETUP
1435#line 245 "pars0lex.l"
1436{
1437 return(PARS_PROCEDURE_TOKEN);
1438}
1439 YY_BREAK
1440case 17:
1441YY_RULE_SETUP
1442#line 249 "pars0lex.l"
1443{
1444 return(PARS_IN_TOKEN);
1445}
1446 YY_BREAK
1447case 18:
1448YY_RULE_SETUP
1449#line 253 "pars0lex.l"
1450{
1451 return(PARS_OUT_TOKEN);
1452}
1453 YY_BREAK
1454case 19:
1455YY_RULE_SETUP
1456#line 257 "pars0lex.l"
1457{
1458 return(PARS_BINARY_TOKEN);
1459}
1460 YY_BREAK
1461case 20:
1462YY_RULE_SETUP
1463#line 261 "pars0lex.l"
1464{
1465 return(PARS_BLOB_TOKEN);
1466}
1467 YY_BREAK
1468case 21:
1469YY_RULE_SETUP
1470#line 265 "pars0lex.l"
1471{
1472 return(PARS_INT_TOKEN);
1473}
1474 YY_BREAK
1475case 22:
1476YY_RULE_SETUP
1477#line 269 "pars0lex.l"
1478{
1479 return(PARS_INT_TOKEN);
1480}
1481 YY_BREAK
1482case 23:
1483YY_RULE_SETUP
1484#line 273 "pars0lex.l"
1485{
1486 return(PARS_FLOAT_TOKEN);
1487}
1488 YY_BREAK
1489case 24:
1490YY_RULE_SETUP
1491#line 277 "pars0lex.l"
1492{
1493 return(PARS_CHAR_TOKEN);
1494}
1495 YY_BREAK
1496case 25:
1497YY_RULE_SETUP
1498#line 281 "pars0lex.l"
1499{
1500 return(PARS_IS_TOKEN);
1501}
1502 YY_BREAK
1503case 26:
1504YY_RULE_SETUP
1505#line 285 "pars0lex.l"
1506{
1507 return(PARS_BEGIN_TOKEN);
1508}
1509 YY_BREAK
1510case 27:
1511YY_RULE_SETUP
1512#line 289 "pars0lex.l"
1513{
1514 return(PARS_END_TOKEN);
1515}
1516 YY_BREAK
1517case 28:
1518YY_RULE_SETUP
1519#line 293 "pars0lex.l"
1520{
1521 return(PARS_IF_TOKEN);
1522}
1523 YY_BREAK
1524case 29:
1525YY_RULE_SETUP
1526#line 297 "pars0lex.l"
1527{
1528 return(PARS_THEN_TOKEN);
1529}
1530 YY_BREAK
1531case 30:
1532YY_RULE_SETUP
1533#line 301 "pars0lex.l"
1534{
1535 return(PARS_ELSE_TOKEN);
1536}
1537 YY_BREAK
1538case 31:
1539YY_RULE_SETUP
1540#line 305 "pars0lex.l"
1541{
1542 return(PARS_ELSIF_TOKEN);
1543}
1544 YY_BREAK
1545case 32:
1546YY_RULE_SETUP
1547#line 309 "pars0lex.l"
1548{
1549 return(PARS_LOOP_TOKEN);
1550}
1551 YY_BREAK
1552case 33:
1553YY_RULE_SETUP
1554#line 313 "pars0lex.l"
1555{
1556 return(PARS_WHILE_TOKEN);
1557}
1558 YY_BREAK
1559case 34:
1560YY_RULE_SETUP
1561#line 317 "pars0lex.l"
1562{
1563 return(PARS_RETURN_TOKEN);
1564}
1565 YY_BREAK
1566case 35:
1567YY_RULE_SETUP
1568#line 321 "pars0lex.l"
1569{
1570 return(PARS_SELECT_TOKEN);
1571}
1572 YY_BREAK
1573case 36:
1574YY_RULE_SETUP
1575#line 325 "pars0lex.l"
1576{
1577 return(PARS_SUM_TOKEN);
1578}
1579 YY_BREAK
1580case 37:
1581YY_RULE_SETUP
1582#line 329 "pars0lex.l"
1583{
1584 return(PARS_COUNT_TOKEN);
1585}
1586 YY_BREAK
1587case 38:
1588YY_RULE_SETUP
1589#line 333 "pars0lex.l"
1590{
1591 return(PARS_DISTINCT_TOKEN);
1592}
1593 YY_BREAK
1594case 39:
1595YY_RULE_SETUP
1596#line 337 "pars0lex.l"
1597{
1598 return(PARS_FROM_TOKEN);
1599}
1600 YY_BREAK
1601case 40:
1602YY_RULE_SETUP
1603#line 341 "pars0lex.l"
1604{
1605 return(PARS_WHERE_TOKEN);
1606}
1607 YY_BREAK
1608case 41:
1609YY_RULE_SETUP
1610#line 345 "pars0lex.l"
1611{
1612 return(PARS_FOR_TOKEN);
1613}
1614 YY_BREAK
1615case 42:
1616YY_RULE_SETUP
1617#line 349 "pars0lex.l"
1618{
1619 return(PARS_READ_TOKEN);
1620}
1621 YY_BREAK
1622case 43:
1623YY_RULE_SETUP
1624#line 353 "pars0lex.l"
1625{
1626 return(PARS_ORDER_TOKEN);
1627}
1628 YY_BREAK
1629case 44:
1630YY_RULE_SETUP
1631#line 357 "pars0lex.l"
1632{
1633 return(PARS_BY_TOKEN);
1634}
1635 YY_BREAK
1636case 45:
1637YY_RULE_SETUP
1638#line 361 "pars0lex.l"
1639{
1640 return(PARS_ASC_TOKEN);
1641}
1642 YY_BREAK
1643case 46:
1644YY_RULE_SETUP
1645#line 365 "pars0lex.l"
1646{
1647 return(PARS_DESC_TOKEN);
1648}
1649 YY_BREAK
1650case 47:
1651YY_RULE_SETUP
1652#line 369 "pars0lex.l"
1653{
1654 return(PARS_INSERT_TOKEN);
1655}
1656 YY_BREAK
1657case 48:
1658YY_RULE_SETUP
1659#line 373 "pars0lex.l"
1660{
1661 return(PARS_INTO_TOKEN);
1662}
1663 YY_BREAK
1664case 49:
1665YY_RULE_SETUP
1666#line 377 "pars0lex.l"
1667{
1668 return(PARS_VALUES_TOKEN);
1669}
1670 YY_BREAK
1671case 50:
1672YY_RULE_SETUP
1673#line 381 "pars0lex.l"
1674{
1675 return(PARS_UPDATE_TOKEN);
1676}
1677 YY_BREAK
1678case 51:
1679YY_RULE_SETUP
1680#line 385 "pars0lex.l"
1681{
1682 return(PARS_SET_TOKEN);
1683}
1684 YY_BREAK
1685case 52:
1686YY_RULE_SETUP
1687#line 389 "pars0lex.l"
1688{
1689 return(PARS_DELETE_TOKEN);
1690}
1691 YY_BREAK
1692case 53:
1693YY_RULE_SETUP
1694#line 393 "pars0lex.l"
1695{
1696 return(PARS_CURRENT_TOKEN);
1697}
1698 YY_BREAK
1699case 54:
1700YY_RULE_SETUP
1701#line 397 "pars0lex.l"
1702{
1703 return(PARS_OF_TOKEN);
1704}
1705 YY_BREAK
1706case 55:
1707YY_RULE_SETUP
1708#line 401 "pars0lex.l"
1709{
1710 return(PARS_CREATE_TOKEN);
1711}
1712 YY_BREAK
1713case 56:
1714YY_RULE_SETUP
1715#line 405 "pars0lex.l"
1716{
1717 return(PARS_TABLE_TOKEN);
1718}
1719 YY_BREAK
1720case 57:
1721YY_RULE_SETUP
1722#line 409 "pars0lex.l"
1723{
1724 return(PARS_COMPACT_TOKEN);
1725}
1726 YY_BREAK
1727case 58:
1728YY_RULE_SETUP
1729#line 413 "pars0lex.l"
1730{
1731 return(PARS_BLOCK_SIZE_TOKEN);
1732}
1733 YY_BREAK
1734case 59:
1735YY_RULE_SETUP
1736#line 417 "pars0lex.l"
1737{
1738 return(PARS_INDEX_TOKEN);
1739}
1740 YY_BREAK
1741case 60:
1742YY_RULE_SETUP
1743#line 421 "pars0lex.l"
1744{
1745 return(PARS_UNIQUE_TOKEN);
1746}
1747 YY_BREAK
1748case 61:
1749YY_RULE_SETUP
1750#line 425 "pars0lex.l"
1751{
1752 return(PARS_CLUSTERED_TOKEN);
1753}
1754 YY_BREAK
1755case 62:
1756YY_RULE_SETUP
1757#line 429 "pars0lex.l"
1758{
1759 return(PARS_ON_TOKEN);
1760}
1761 YY_BREAK
1762case 63:
1763YY_RULE_SETUP
1764#line 433 "pars0lex.l"
1765{
1766 return(PARS_DECLARE_TOKEN);
1767}
1768 YY_BREAK
1769case 64:
1770YY_RULE_SETUP
1771#line 437 "pars0lex.l"
1772{
1773 return(PARS_CURSOR_TOKEN);
1774}
1775 YY_BREAK
1776case 65:
1777YY_RULE_SETUP
1778#line 441 "pars0lex.l"
1779{
1780 return(PARS_OPEN_TOKEN);
1781}
1782 YY_BREAK
1783case 66:
1784YY_RULE_SETUP
1785#line 445 "pars0lex.l"
1786{
1787 return(PARS_FETCH_TOKEN);
1788}
1789 YY_BREAK
1790case 67:
1791YY_RULE_SETUP
1792#line 449 "pars0lex.l"
1793{
1794 return(PARS_CLOSE_TOKEN);
1795}
1796 YY_BREAK
1797case 68:
1798YY_RULE_SETUP
1799#line 453 "pars0lex.l"
1800{
1801 return(PARS_NOTFOUND_TOKEN);
1802}
1803 YY_BREAK
1804case 69:
1805YY_RULE_SETUP
1806#line 457 "pars0lex.l"
1807{
1808 return(PARS_TO_CHAR_TOKEN);
1809}
1810 YY_BREAK
1811case 70:
1812YY_RULE_SETUP
1813#line 461 "pars0lex.l"
1814{
1815 return(PARS_TO_NUMBER_TOKEN);
1816}
1817 YY_BREAK
1818case 71:
1819YY_RULE_SETUP
1820#line 465 "pars0lex.l"
1821{
1822 return(PARS_TO_BINARY_TOKEN);
1823}
1824 YY_BREAK
1825case 72:
1826YY_RULE_SETUP
1827#line 469 "pars0lex.l"
1828{
1829 return(PARS_BINARY_TO_NUMBER_TOKEN);
1830}
1831 YY_BREAK
1832case 73:
1833YY_RULE_SETUP
1834#line 473 "pars0lex.l"
1835{
1836 return(PARS_SUBSTR_TOKEN);
1837}
1838 YY_BREAK
1839case 74:
1840YY_RULE_SETUP
1841#line 477 "pars0lex.l"
1842{
1843 return(PARS_REPLSTR_TOKEN);
1844}
1845 YY_BREAK
1846case 75:
1847YY_RULE_SETUP
1848#line 481 "pars0lex.l"
1849{
1850 return(PARS_CONCAT_TOKEN);
1851}
1852 YY_BREAK
1853case 76:
1854YY_RULE_SETUP
1855#line 485 "pars0lex.l"
1856{
1857 return(PARS_INSTR_TOKEN);
1858}
1859 YY_BREAK
1860case 77:
1861YY_RULE_SETUP
1862#line 489 "pars0lex.l"
1863{
1864 return(PARS_LENGTH_TOKEN);
1865}
1866 YY_BREAK
1867case 78:
1868YY_RULE_SETUP
1869#line 493 "pars0lex.l"
1870{
1871 return(PARS_SYSDATE_TOKEN);
1872}
1873 YY_BREAK
1874case 79:
1875YY_RULE_SETUP
1876#line 497 "pars0lex.l"
1877{
1878 return(PARS_PRINTF_TOKEN);
1879}
1880 YY_BREAK
1881case 80:
1882YY_RULE_SETUP
1883#line 501 "pars0lex.l"
1884{
1885 return(PARS_ASSERT_TOKEN);
1886}
1887 YY_BREAK
1888case 81:
1889YY_RULE_SETUP
1890#line 505 "pars0lex.l"
1891{
1892 return(PARS_RND_TOKEN);
1893}
1894 YY_BREAK
1895case 82:
1896YY_RULE_SETUP
1897#line 509 "pars0lex.l"
1898{
1899 return(PARS_RND_STR_TOKEN);
1900}
1901 YY_BREAK
1902case 83:
1903YY_RULE_SETUP
1904#line 513 "pars0lex.l"
1905{
1906 return(PARS_ROW_PRINTF_TOKEN);
1907}
1908 YY_BREAK
1909case 84:
1910YY_RULE_SETUP
1911#line 517 "pars0lex.l"
1912{
1913 return(PARS_COMMIT_TOKEN);
1914}
1915 YY_BREAK
1916case 85:
1917YY_RULE_SETUP
1918#line 521 "pars0lex.l"
1919{
1920 return(PARS_ROLLBACK_TOKEN);
1921}
1922 YY_BREAK
1923case 86:
1924YY_RULE_SETUP
1925#line 525 "pars0lex.l"
1926{
1927 return(PARS_WORK_TOKEN);
1928}
1929 YY_BREAK
1930case 87:
1931YY_RULE_SETUP
1932#line 529 "pars0lex.l"
1933{
1934 return(PARS_UNSIGNED_TOKEN);
1935}
1936 YY_BREAK
1937case 88:
1938YY_RULE_SETUP
1939#line 533 "pars0lex.l"
1940{
1941 return(PARS_EXIT_TOKEN);
1942}
1943 YY_BREAK
1944case 89:
1945YY_RULE_SETUP
1946#line 537 "pars0lex.l"
1947{
1948 return(PARS_FUNCTION_TOKEN);
1949}
1950 YY_BREAK
1951case 90:
1952YY_RULE_SETUP
1953#line 541 "pars0lex.l"
1954{
1955 return(PARS_LOCK_TOKEN);
1956}
1957 YY_BREAK
1958case 91:
1959YY_RULE_SETUP
1960#line 545 "pars0lex.l"
1961{
1962 return(PARS_SHARE_TOKEN);
1963}
1964 YY_BREAK
1965case 92:
1966YY_RULE_SETUP
1967#line 549 "pars0lex.l"
1968{
1969 return(PARS_MODE_TOKEN);
1970}
1971 YY_BREAK
1972case 93:
1973YY_RULE_SETUP
1974#line 553 "pars0lex.l"
1975{
1976 return(PARS_LIKE_TOKEN);
1977}
1978 YY_BREAK
1979case 94:
1980YY_RULE_SETUP
1981#line 557 "pars0lex.l"
1982{
1983 return(PARS_BIGINT_TOKEN);
1984}
1985 YY_BREAK
1986case 95:
1987YY_RULE_SETUP
1988#line 561 "pars0lex.l"
1989{
1990 yylval = sym_tab_add_id(pars_sym_tab_global,
1991 (byte*) yytext,
1992 ut_strlen(yytext));
1993 return(PARS_ID_TOKEN);
1994}
1995 YY_BREAK
1996case 96:
1997YY_RULE_SETUP
1998#line 568 "pars0lex.l"
1999{
2000 yylval = sym_tab_add_id(pars_sym_tab_global,
2001 (byte*) yytext,
2002 ut_strlen(yytext));
2003 return(PARS_TABLE_NAME_TOKEN);
2004}
2005 YY_BREAK
2006case 97:
2007YY_RULE_SETUP
2008#line 575 "pars0lex.l"
2009{
2010 return(PARS_DDOT_TOKEN);
2011}
2012 YY_BREAK
2013case 98:
2014YY_RULE_SETUP
2015#line 579 "pars0lex.l"
2016{
2017 return(PARS_ASSIGN_TOKEN);
2018}
2019 YY_BREAK
2020case 99:
2021YY_RULE_SETUP
2022#line 583 "pars0lex.l"
2023{
2024 return(PARS_LE_TOKEN);
2025}
2026 YY_BREAK
2027case 100:
2028YY_RULE_SETUP
2029#line 587 "pars0lex.l"
2030{
2031 return(PARS_GE_TOKEN);
2032}
2033 YY_BREAK
2034case 101:
2035YY_RULE_SETUP
2036#line 591 "pars0lex.l"
2037{
2038 return(PARS_NE_TOKEN);
2039}
2040 YY_BREAK
2041case 102:
2042YY_RULE_SETUP
2043#line 595 "pars0lex.l"
2044{
2045
2046 return((int)(*yytext));
2047}
2048 YY_BREAK
2049case 103:
2050YY_RULE_SETUP
2051#line 600 "pars0lex.l"
2052{
2053
2054 return((int)(*yytext));
2055}
2056 YY_BREAK
2057case 104:
2058YY_RULE_SETUP
2059#line 605 "pars0lex.l"
2060{
2061
2062 return((int)(*yytext));
2063}
2064 YY_BREAK
2065case 105:
2066YY_RULE_SETUP
2067#line 610 "pars0lex.l"
2068{
2069
2070 return((int)(*yytext));
2071}
2072 YY_BREAK
2073case 106:
2074YY_RULE_SETUP
2075#line 615 "pars0lex.l"
2076{
2077
2078 return((int)(*yytext));
2079}
2080 YY_BREAK
2081case 107:
2082YY_RULE_SETUP
2083#line 620 "pars0lex.l"
2084{
2085
2086 return((int)(*yytext));
2087}
2088 YY_BREAK
2089case 108:
2090YY_RULE_SETUP
2091#line 625 "pars0lex.l"
2092{
2093
2094 return((int)(*yytext));
2095}
2096 YY_BREAK
2097case 109:
2098YY_RULE_SETUP
2099#line 630 "pars0lex.l"
2100{
2101
2102 return((int)(*yytext));
2103}
2104 YY_BREAK
2105case 110:
2106YY_RULE_SETUP
2107#line 635 "pars0lex.l"
2108{
2109
2110 return((int)(*yytext));
2111}
2112 YY_BREAK
2113case 111:
2114YY_RULE_SETUP
2115#line 640 "pars0lex.l"
2116{
2117
2118 return((int)(*yytext));
2119}
2120 YY_BREAK
2121case 112:
2122YY_RULE_SETUP
2123#line 645 "pars0lex.l"
2124{
2125
2126 return((int)(*yytext));
2127}
2128 YY_BREAK
2129case 113:
2130YY_RULE_SETUP
2131#line 650 "pars0lex.l"
2132{
2133
2134 return((int)(*yytext));
2135}
2136 YY_BREAK
2137case 114:
2138YY_RULE_SETUP
2139#line 655 "pars0lex.l"
2140{
2141
2142 return((int)(*yytext));
2143}
2144 YY_BREAK
2145case 115:
2146YY_RULE_SETUP
2147#line 660 "pars0lex.l"
2148{
2149
2150 return((int)(*yytext));
2151}
2152 YY_BREAK
2153case 116:
2154YY_RULE_SETUP
2155#line 665 "pars0lex.l"
2156{
2157
2158 return((int)(*yytext));
2159}
2160 YY_BREAK
2161case 117:
2162YY_RULE_SETUP
2163#line 670 "pars0lex.l"
2164BEGIN(comment); /* eat up comment */
2165 YY_BREAK
2166case 118:
2167/* rule 118 can match eol */
2168YY_RULE_SETUP
2169#line 672 "pars0lex.l"
2170
2171 YY_BREAK
2172case 119:
2173/* rule 119 can match eol */
2174YY_RULE_SETUP
2175#line 673 "pars0lex.l"
2176
2177 YY_BREAK
2178case 120:
2179YY_RULE_SETUP
2180#line 674 "pars0lex.l"
2181BEGIN(INITIAL);
2182 YY_BREAK
2183case 121:
2184/* rule 121 can match eol */
2185YY_RULE_SETUP
2186#line 676 "pars0lex.l"
2187/* eat up whitespace */
2188 YY_BREAK
2189case 122:
2190YY_RULE_SETUP
2191#line 679 "pars0lex.l"
2192{
2193 fprintf(stderr,"Unrecognized character: %02x\n",
2194 *yytext);
2195
2196 ut_error;
2197
2198 return(0);
2199}
2200 YY_BREAK
2201case 123:
2202YY_RULE_SETUP
2203#line 688 "pars0lex.l"
2204YY_FATAL_ERROR( "flex scanner jammed" );
2205 YY_BREAK
2206#line 2206 "lexyy.cc"
2207case YY_STATE_EOF(INITIAL):
2208case YY_STATE_EOF(comment):
2209case YY_STATE_EOF(quoted):
2210case YY_STATE_EOF(id):
2211 yyterminate();
2212
2213 case YY_END_OF_BUFFER:
2214 {
2215 /* Amount of text matched not including the EOB char. */
2216 int yy_amount_of_matched_text = (int) (yy_cp - (yytext_ptr)) - 1;
2217
2218 /* Undo the effects of YY_DO_BEFORE_ACTION. */
2219 *yy_cp = (yy_hold_char);
2220 YY_RESTORE_YY_MORE_OFFSET
2221
2222 if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW )
2223 {
2224 /* We're scanning a new file or input source. It's
2225 * possible that this happened because the user
2226 * just pointed yyin at a new source and called
2227 * yylex(). If so, then we have to assure
2228 * consistency between YY_CURRENT_BUFFER and our
2229 * globals. Here is the right place to do so, because
2230 * this is the first action (other than possibly a
2231 * back-up) that will match for the new input source.
2232 */
2233 (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
2234 YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin;
2235 YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL;
2236 }
2237
2238 /* Note that here we test for yy_c_buf_p "<=" to the position
2239 * of the first EOB in the buffer, since yy_c_buf_p will
2240 * already have been incremented past the NUL character
2241 * (since all states make transitions on EOB to the
2242 * end-of-buffer state). Contrast this with the test
2243 * in input().
2244 */
2245 if ( (yy_c_buf_p) <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
2246 { /* This was really a NUL. */
2247 yy_state_type yy_next_state;
2248
2249 (yy_c_buf_p) = (yytext_ptr) + yy_amount_of_matched_text;
2250
2251 yy_current_state = yy_get_previous_state( );
2252
2253 /* Okay, we're now positioned to make the NUL
2254 * transition. We couldn't have
2255 * yy_get_previous_state() go ahead and do it
2256 * for us because it doesn't know how to deal
2257 * with the possibility of jamming (and we don't
2258 * want to build jamming into it because then it
2259 * will run more slowly).
2260 */
2261
2262 yy_next_state = yy_try_NUL_trans( yy_current_state );
2263
2264 yy_bp = (yytext_ptr) + YY_MORE_ADJ;
2265
2266 if ( yy_next_state )
2267 {
2268 /* Consume the NUL. */
2269 yy_cp = ++(yy_c_buf_p);
2270 yy_current_state = yy_next_state;
2271 goto yy_match;
2272 }
2273
2274 else
2275 {
2276 yy_cp = (yy_last_accepting_cpos);
2277 yy_current_state = (yy_last_accepting_state);
2278 goto yy_find_action;
2279 }
2280 }
2281
2282 else switch ( yy_get_next_buffer( ) )
2283 {
2284 case EOB_ACT_END_OF_FILE:
2285 {
2286 (yy_did_buffer_switch_on_eof) = 0;
2287
2288 if ( yywrap( ) )
2289 {
2290 /* Note: because we've taken care in
2291 * yy_get_next_buffer() to have set up
2292 * yytext, we can now set up
2293 * yy_c_buf_p so that if some total
2294 * hoser (like flex itself) wants to
2295 * call the scanner after we return the
2296 * YY_NULL, it'll still work - another
2297 * YY_NULL will get returned.
2298 */
2299 (yy_c_buf_p) = (yytext_ptr) + YY_MORE_ADJ;
2300
2301 yy_act = YY_STATE_EOF(YY_START);
2302 goto do_action;
2303 }
2304
2305 else
2306 {
2307 if ( ! (yy_did_buffer_switch_on_eof) )
2308 YY_NEW_FILE;
2309 }
2310 break;
2311 }
2312
2313 case EOB_ACT_CONTINUE_SCAN:
2314 (yy_c_buf_p) =
2315 (yytext_ptr) + yy_amount_of_matched_text;
2316
2317 yy_current_state = yy_get_previous_state( );
2318
2319 yy_cp = (yy_c_buf_p);
2320 yy_bp = (yytext_ptr) + YY_MORE_ADJ;
2321 goto yy_match;
2322
2323 case EOB_ACT_LAST_MATCH:
2324 (yy_c_buf_p) =
2325 &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)];
2326
2327 yy_current_state = yy_get_previous_state( );
2328
2329 yy_cp = (yy_c_buf_p);
2330 yy_bp = (yytext_ptr) + YY_MORE_ADJ;
2331 goto yy_find_action;
2332 }
2333 break;
2334 }
2335
2336 default:
2337 YY_FATAL_ERROR(
2338 "fatal flex scanner internal error--no action found" );
2339 } /* end of action switch */
2340 } /* end of scanning one token */
2341 } /* end of user's declarations */
2342} /* end of yylex */
2343
2344/* yy_get_next_buffer - try to read in a new buffer
2345 *
2346 * Returns a code representing an action:
2347 * EOB_ACT_LAST_MATCH -
2348 * EOB_ACT_CONTINUE_SCAN - continue scanning from current position
2349 * EOB_ACT_END_OF_FILE - end of file
2350 */
2351static int yy_get_next_buffer (void)
2352{
2353 char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;
2354 char *source = (yytext_ptr);
2355 int number_to_move, i;
2356 int ret_val;
2357
2358 if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] )
2359 YY_FATAL_ERROR(
2360 "fatal flex scanner internal error--end of buffer missed" );
2361
2362 if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 )
2363 { /* Don't try to fill the buffer, so this is an EOF. */
2364 if ( (yy_c_buf_p) - (yytext_ptr) - YY_MORE_ADJ == 1 )
2365 {
2366 /* We matched a single character, the EOB, so
2367 * treat this as a final EOF.
2368 */
2369 return EOB_ACT_END_OF_FILE;
2370 }
2371
2372 else
2373 {
2374 /* We matched some text prior to the EOB, first
2375 * process it.
2376 */
2377 return EOB_ACT_LAST_MATCH;
2378 }
2379 }
2380
2381 /* Try to read more data. */
2382
2383 /* First move last chars to start of buffer. */
2384 number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr) - 1);
2385
2386 for ( i = 0; i < number_to_move; ++i )
2387 *(dest++) = *(source++);
2388
2389 if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING )
2390 /* don't do the read, it's not guaranteed to return an EOF,
2391 * just force an EOF
2392 */
2393 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars) = 0;
2394
2395 else
2396 {
2397 int num_to_read =
2398 YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;
2399
2400 while ( num_to_read <= 0 )
2401 { /* Not enough room in the buffer - grow it. */
2402
2403 /* just a shorter name for the current buffer */
2404 YY_BUFFER_STATE b = YY_CURRENT_BUFFER_LVALUE;
2405
2406 int yy_c_buf_p_offset =
2407 (int) ((yy_c_buf_p) - b->yy_ch_buf);
2408
2409 if ( b->yy_is_our_buffer )
2410 {
2411 int new_size = b->yy_buf_size * 2;
2412
2413 if ( new_size <= 0 )
2414 b->yy_buf_size += b->yy_buf_size / 8;
2415 else
2416 b->yy_buf_size *= 2;
2417
2418 b->yy_ch_buf = (char *)
2419 /* Include room in for 2 EOB chars. */
2420 yyrealloc((void *) b->yy_ch_buf,b->yy_buf_size + 2 );
2421 }
2422 else
2423 /* Can't grow it, we don't own it. */
2424 b->yy_ch_buf = NULL;
2425
2426 if ( ! b->yy_ch_buf )
2427 YY_FATAL_ERROR(
2428 "fatal error - scanner input buffer overflow" );
2429
2430 (yy_c_buf_p) = &b->yy_ch_buf[yy_c_buf_p_offset];
2431
2432 num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size -
2433 number_to_move - 1;
2434
2435 }
2436
2437 if ( num_to_read > YY_READ_BUF_SIZE )
2438 num_to_read = YY_READ_BUF_SIZE;
2439
2440 /* Read in more data. */
2441 YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]),
2442 (yy_n_chars), num_to_read );
2443
2444 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
2445 }
2446
2447 if ( (yy_n_chars) == 0 )
2448 {
2449 if ( number_to_move == YY_MORE_ADJ )
2450 {
2451 ret_val = EOB_ACT_END_OF_FILE;
2452 yyrestart(yyin );
2453 }
2454
2455 else
2456 {
2457 ret_val = EOB_ACT_LAST_MATCH;
2458 YY_CURRENT_BUFFER_LVALUE->yy_buffer_status =
2459 YY_BUFFER_EOF_PENDING;
2460 }
2461 }
2462
2463 else
2464 ret_val = EOB_ACT_CONTINUE_SCAN;
2465
2466 if (((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) {
2467 /* Extend the array by 50%, plus the number we really need. */
2468 int new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1);
2469 YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) yyrealloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,new_size );
2470 if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
2471 YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" );
2472 }
2473
2474 (yy_n_chars) += number_to_move;
2475 YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] = YY_END_OF_BUFFER_CHAR;
2476 YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] = YY_END_OF_BUFFER_CHAR;
2477
2478 (yytext_ptr) = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0];
2479
2480 return ret_val;
2481}
2482
2483/* yy_get_previous_state - get the state just before the EOB char was reached */
2484
2485 static yy_state_type yy_get_previous_state (void)
2486{
2487 yy_state_type yy_current_state;
2488 char *yy_cp;
2489
2490 yy_current_state = (yy_start);
2491
2492 for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp )
2493 {
2494 YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
2495 if ( yy_accept[yy_current_state] )
2496 {
2497 (yy_last_accepting_state) = yy_current_state;
2498 (yy_last_accepting_cpos) = yy_cp;
2499 }
2500 while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
2501 {
2502 yy_current_state = (int) yy_def[yy_current_state];
2503 if ( yy_current_state >= 404 )
2504 yy_c = yy_meta[(unsigned int) yy_c];
2505 }
2506 yy_current_state = yy_nxt[yy_base[yy_current_state] + (flex_int16_t) yy_c];
2507 }
2508
2509 return yy_current_state;
2510}
2511
2512/* yy_try_NUL_trans - try to make a transition on the NUL character
2513 *
2514 * synopsis
2515 * next_state = yy_try_NUL_trans( current_state );
2516 */
2517 static yy_state_type yy_try_NUL_trans (yy_state_type yy_current_state )
2518{
2519 int yy_is_jam;
2520 char *yy_cp = (yy_c_buf_p);
2521
2522 YY_CHAR yy_c = 1;
2523 if ( yy_accept[yy_current_state] )
2524 {
2525 (yy_last_accepting_state) = yy_current_state;
2526 (yy_last_accepting_cpos) = yy_cp;
2527 }
2528 while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
2529 {
2530 yy_current_state = (int) yy_def[yy_current_state];
2531 if ( yy_current_state >= 404 )
2532 yy_c = yy_meta[(unsigned int) yy_c];
2533 }
2534 yy_current_state = yy_nxt[yy_base[yy_current_state] + (flex_int16_t) yy_c];
2535 yy_is_jam = (yy_current_state == 403);
2536
2537 return yy_is_jam ? 0 : yy_current_state;
2538}
2539
2540#ifndef YY_NO_UNPUT
2541
2542#endif
2543
2544#ifndef YY_NO_INPUT
2545#ifdef __cplusplus
2546 static int yyinput (void)
2547#else
2548 static int input (void)
2549#endif
2550
2551{
2552 int c;
2553
2554 *(yy_c_buf_p) = (yy_hold_char);
2555
2556 if ( *(yy_c_buf_p) == YY_END_OF_BUFFER_CHAR )
2557 {
2558 /* yy_c_buf_p now points to the character we want to return.
2559 * If this occurs *before* the EOB characters, then it's a
2560 * valid NUL; if not, then we've hit the end of the buffer.
2561 */
2562 if ( (yy_c_buf_p) < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
2563 /* This was really a NUL. */
2564 *(yy_c_buf_p) = '\0';
2565
2566 else
2567 { /* need more input */
2568 int offset = (int)((yy_c_buf_p) - (yytext_ptr));
2569 ++(yy_c_buf_p);
2570
2571 switch ( yy_get_next_buffer( ) )
2572 {
2573 case EOB_ACT_LAST_MATCH:
2574 /* This happens because yy_g_n_b()
2575 * sees that we've accumulated a
2576 * token and flags that we need to
2577 * try matching the token before
2578 * proceeding. But for input(),
2579 * there's no matching to consider.
2580 * So convert the EOB_ACT_LAST_MATCH
2581 * to EOB_ACT_END_OF_FILE.
2582 */
2583
2584 /* Reset buffer status. */
2585 yyrestart(yyin );
2586
2587 /*FALLTHROUGH*/
2588
2589 case EOB_ACT_END_OF_FILE:
2590 {
2591 if ( yywrap( ) )
2592 return 0;
2593
2594 if ( ! (yy_did_buffer_switch_on_eof) )
2595 YY_NEW_FILE;
2596#ifdef __cplusplus
2597 return yyinput();
2598#else
2599 return input();
2600#endif
2601 }
2602
2603 case EOB_ACT_CONTINUE_SCAN:
2604 (yy_c_buf_p) = (yytext_ptr) + offset;
2605 break;
2606 }
2607 }
2608 }
2609
2610 c = *(unsigned char *) (yy_c_buf_p); /* cast for 8-bit char's */
2611 *(yy_c_buf_p) = '\0'; /* preserve yytext */
2612 (yy_hold_char) = *++(yy_c_buf_p);
2613
2614 return c;
2615}
2616#endif /* ifndef YY_NO_INPUT */
2617
2618/** Immediately switch to a different input stream.
2619 * @param input_file A readable stream.
2620 *
2621 * @note This function does not reset the start condition to @c INITIAL .
2622 */
2623 static void yyrestart (FILE * input_file )
2624{
2625
2626 if ( ! YY_CURRENT_BUFFER ){
2627 yyensure_buffer_stack ();
2628 YY_CURRENT_BUFFER_LVALUE =
2629 yy_create_buffer(yyin,YY_BUF_SIZE );
2630 }
2631
2632 yy_init_buffer(YY_CURRENT_BUFFER,input_file );
2633 yy_load_buffer_state( );
2634}
2635
2636/** Switch to a different input buffer.
2637 * @param new_buffer The new input buffer.
2638 *
2639 */
2640 MY_ATTRIBUTE((unused)) static void yy_switch_to_buffer (YY_BUFFER_STATE new_buffer )
2641{
2642
2643 /* TODO. We should be able to replace this entire function body
2644 * with
2645 * yypop_buffer_state();
2646 * yypush_buffer_state(new_buffer);
2647 */
2648 yyensure_buffer_stack ();
2649 if ( YY_CURRENT_BUFFER == new_buffer )
2650 return;
2651
2652 if ( YY_CURRENT_BUFFER )
2653 {
2654 /* Flush out information for old buffer. */
2655 *(yy_c_buf_p) = (yy_hold_char);
2656 YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
2657 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
2658 }
2659
2660 YY_CURRENT_BUFFER_LVALUE = new_buffer;
2661 yy_load_buffer_state( );
2662
2663 /* We don't actually know whether we did this switch during
2664 * EOF (yywrap()) processing, but the only time this flag
2665 * is looked at is after yywrap() is called, so it's safe
2666 * to go ahead and always set it.
2667 */
2668 (yy_did_buffer_switch_on_eof) = 1;
2669}
2670
2671static void yy_load_buffer_state (void)
2672{
2673 (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
2674 (yytext_ptr) = (yy_c_buf_p) = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos;
2675 yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file;
2676 (yy_hold_char) = *(yy_c_buf_p);
2677}
2678
2679/** Allocate and initialize an input buffer state.
2680 * @param file A readable stream.
2681 * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE.
2682 *
2683 * @return the allocated buffer state.
2684 */
2685 static YY_BUFFER_STATE yy_create_buffer (FILE * file, int size )
2686{
2687 YY_BUFFER_STATE b;
2688
2689 b = (YY_BUFFER_STATE) yyalloc(sizeof( struct yy_buffer_state ) );
2690 if ( ! b )
2691 YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
2692
2693 b->yy_buf_size = (yy_size_t)size;
2694
2695 /* yy_ch_buf has to be 2 characters longer than the size given because
2696 * we need to put in 2 end-of-buffer characters.
2697 */
2698 b->yy_ch_buf = (char *) yyalloc(b->yy_buf_size + 2 );
2699 if ( ! b->yy_ch_buf )
2700 YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
2701
2702 b->yy_is_our_buffer = 1;
2703
2704 yy_init_buffer(b,file );
2705
2706 return b;
2707}
2708
2709/** Destroy the buffer.
2710 * @param b a buffer created with yy_create_buffer()
2711 *
2712 */
2713 static void yy_delete_buffer (YY_BUFFER_STATE b )
2714{
2715
2716 if ( ! b )
2717 return;
2718
2719 if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */
2720 YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0;
2721
2722 if ( b->yy_is_our_buffer )
2723 yyfree((void *) b->yy_ch_buf );
2724
2725 yyfree((void *) b );
2726}
2727
2728/* Initializes or reinitializes a buffer.
2729 * This function is sometimes called more than once on the same buffer,
2730 * such as during a yyrestart() or at EOF.
2731 */
2732 static void yy_init_buffer (YY_BUFFER_STATE b, FILE * file )
2733
2734{
2735 int oerrno = errno;
2736
2737 yy_flush_buffer(b );
2738
2739 b->yy_input_file = file;
2740 b->yy_fill_buffer = 1;
2741
2742 /* If b is the current buffer, then yy_init_buffer was _probably_
2743 * called from yyrestart() or through yy_get_next_buffer.
2744 * In that case, we don't want to reset the lineno or column.
2745 */
2746 if (b != YY_CURRENT_BUFFER){
2747 b->yy_bs_lineno = 1;
2748 b->yy_bs_column = 0;
2749 }
2750
2751 b->yy_is_interactive = 0;
2752
2753 errno = oerrno;
2754}
2755
2756/** Discard all buffered characters. On the next scan, YY_INPUT will be called.
2757 * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER.
2758 *
2759 */
2760 static void yy_flush_buffer (YY_BUFFER_STATE b )
2761{
2762 if ( ! b )
2763 return;
2764
2765 b->yy_n_chars = 0;
2766
2767 /* We always need two end-of-buffer characters. The first causes
2768 * a transition to the end-of-buffer state. The second causes
2769 * a jam in that state.
2770 */
2771 b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;
2772 b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;
2773
2774 b->yy_buf_pos = &b->yy_ch_buf[0];
2775
2776 b->yy_at_bol = 1;
2777 b->yy_buffer_status = YY_BUFFER_NEW;
2778
2779 if ( b == YY_CURRENT_BUFFER )
2780 yy_load_buffer_state( );
2781}
2782
2783/** Pushes the new state onto the stack. The new state becomes
2784 * the current state. This function will allocate the stack
2785 * if necessary.
2786 * @param new_buffer The new state.
2787 *
2788 */
2789MY_ATTRIBUTE((unused)) static void yypush_buffer_state (YY_BUFFER_STATE new_buffer )
2790{
2791 if (new_buffer == NULL)
2792 return;
2793
2794 yyensure_buffer_stack();
2795
2796 /* This block is copied from yy_switch_to_buffer. */
2797 if ( YY_CURRENT_BUFFER )
2798 {
2799 /* Flush out information for old buffer. */
2800 *(yy_c_buf_p) = (yy_hold_char);
2801 YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
2802 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
2803 }
2804
2805 /* Only push if top exists. Otherwise, replace top. */
2806 if (YY_CURRENT_BUFFER)
2807 (yy_buffer_stack_top)++;
2808 YY_CURRENT_BUFFER_LVALUE = new_buffer;
2809
2810 /* copied from yy_switch_to_buffer. */
2811 yy_load_buffer_state( );
2812 (yy_did_buffer_switch_on_eof) = 1;
2813}
2814
2815/** Removes and deletes the top of the stack, if present.
2816 * The next element becomes the new top.
2817 *
2818 */
2819MY_ATTRIBUTE((unused)) static void yypop_buffer_state (void)
2820{
2821 if (!YY_CURRENT_BUFFER)
2822 return;
2823
2824 yy_delete_buffer(YY_CURRENT_BUFFER );
2825 YY_CURRENT_BUFFER_LVALUE = NULL;
2826 if ((yy_buffer_stack_top) > 0)
2827 --(yy_buffer_stack_top);
2828
2829 if (YY_CURRENT_BUFFER) {
2830 yy_load_buffer_state( );
2831 (yy_did_buffer_switch_on_eof) = 1;
2832 }
2833}
2834
2835/* Allocates the stack if it does not exist.
2836 * Guarantees space for at least one push.
2837 */
2838static void yyensure_buffer_stack (void)
2839{
2840 int num_to_alloc;
2841
2842 if (!(yy_buffer_stack)) {
2843
2844 /* First allocation is just for 2 elements, since we don't know if this
2845 * scanner will even need a stack. We use 2 instead of 1 to avoid an
2846 * immediate realloc on the next call.
2847 */
2848 num_to_alloc = 1; /* After all that talk, this was set to 1 anyways... */
2849 (yy_buffer_stack) = (struct yy_buffer_state**)yyalloc
2850 (num_to_alloc * sizeof(struct yy_buffer_state*)
2851 );
2852 if ( ! (yy_buffer_stack) )
2853 YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" );
2854
2855 memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*));
2856
2857 (yy_buffer_stack_max) = num_to_alloc;
2858 (yy_buffer_stack_top) = 0;
2859 return;
2860 }
2861
2862 if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){
2863
2864 /* Increase the buffer to prepare for a possible push. */
2865 yy_size_t grow_size = 8 /* arbitrary grow size */;
2866
2867 num_to_alloc = (yy_buffer_stack_max) + grow_size;
2868 (yy_buffer_stack) = (struct yy_buffer_state**)yyrealloc
2869 ((yy_buffer_stack),
2870 num_to_alloc * sizeof(struct yy_buffer_state*)
2871 );
2872 if ( ! (yy_buffer_stack) )
2873 YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" );
2874
2875 /* zero only the new slots.*/
2876 memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*));
2877 (yy_buffer_stack_max) = num_to_alloc;
2878 }
2879}
2880
2881#ifndef YY_EXIT_FAILURE
2882#define YY_EXIT_FAILURE 2
2883#endif
2884
2885static void yynoreturn yy_fatal_error (yyconst char* msg )
2886{
2887 (void) fprintf( stderr, "%s\n", msg );
2888 exit( YY_EXIT_FAILURE );
2889}
2890
2891/* Redefine yyless() so it works in section 3 code. */
2892
2893#undef yyless
2894#define yyless(n) \
2895 do \
2896 { \
2897 /* Undo effects of setting up yytext. */ \
2898 int yyless_macro_arg = (n); \
2899 YY_LESS_LINENO(yyless_macro_arg);\
2900 yytext[yyleng] = (yy_hold_char); \
2901 (yy_c_buf_p) = yytext + yyless_macro_arg; \
2902 (yy_hold_char) = *(yy_c_buf_p); \
2903 *(yy_c_buf_p) = '\0'; \
2904 yyleng = yyless_macro_arg; \
2905 } \
2906 while ( 0 )
2907
2908/* Accessor methods (get/set functions) to struct members. */
2909
2910/** Get the current line number.
2911 *
2912 */
2913MY_ATTRIBUTE((unused)) static int yyget_lineno (void)
2914{
2915
2916 return yylineno;
2917}
2918
2919/** Get the input stream.
2920 *
2921 */
2922MY_ATTRIBUTE((unused)) static FILE *yyget_in (void)
2923{
2924 return yyin;
2925}
2926
2927/** Get the output stream.
2928 *
2929 */
2930MY_ATTRIBUTE((unused)) static FILE *yyget_out (void)
2931{
2932 return yyout;
2933}
2934
2935/** Get the length of the current token.
2936 *
2937 */
2938MY_ATTRIBUTE((unused)) static int yyget_leng (void)
2939{
2940 return yyleng;
2941}
2942
2943/** Get the current token.
2944 *
2945 */
2946
2947MY_ATTRIBUTE((unused)) static char *yyget_text (void)
2948{
2949 return yytext;
2950}
2951
2952/** Set the current line number.
2953 * @param _line_number line number
2954 *
2955 */
2956MY_ATTRIBUTE((unused)) static void yyset_lineno (int _line_number )
2957{
2958
2959 yylineno = _line_number;
2960}
2961
2962/** Set the input stream. This does not discard the current
2963 * input buffer.
2964 * @param _in_str A readable stream.
2965 *
2966 * @see yy_switch_to_buffer
2967 */
2968MY_ATTRIBUTE((unused)) static void yyset_in (FILE * _in_str )
2969{
2970 yyin = _in_str ;
2971}
2972
2973MY_ATTRIBUTE((unused)) static void yyset_out (FILE * _out_str )
2974{
2975 yyout = _out_str ;
2976}
2977
2978MY_ATTRIBUTE((unused)) static int yyget_debug (void)
2979{
2980 return yy_flex_debug;
2981}
2982
2983MY_ATTRIBUTE((unused)) static void yyset_debug (int _bdebug )
2984{
2985 yy_flex_debug = _bdebug ;
2986}
2987
2988static int yy_init_globals (void)
2989{
2990 /* Initialization is the same as for the non-reentrant scanner.
2991 * This function is called from yylex_destroy(), so don't allocate here.
2992 */
2993
2994 (yy_buffer_stack) = NULL;
2995 (yy_buffer_stack_top) = 0;
2996 (yy_buffer_stack_max) = 0;
2997 (yy_c_buf_p) = NULL;
2998 (yy_init) = 0;
2999 (yy_start) = 0;
3000
3001/* Defined in main.c */
3002#ifdef YY_STDINIT
3003 yyin = stdin;
3004 yyout = stdout;
3005#else
3006 yyin = NULL;
3007 yyout = NULL;
3008#endif
3009
3010 /* For future reference: Set errno on error, since we are called by
3011 * yylex_init()
3012 */
3013 return 0;
3014}
3015
3016/* yylex_destroy is for both reentrant and non-reentrant scanners. */
3017MY_ATTRIBUTE((unused)) static int yylex_destroy (void)
3018{
3019
3020 /* Pop the buffer stack, destroying each element. */
3021 while(YY_CURRENT_BUFFER){
3022 yy_delete_buffer(YY_CURRENT_BUFFER );
3023 YY_CURRENT_BUFFER_LVALUE = NULL;
3024 yypop_buffer_state();
3025 }
3026
3027 /* Destroy the stack itself. */
3028 yyfree((yy_buffer_stack) );
3029 (yy_buffer_stack) = NULL;
3030
3031 /* Reset the globals. This is important in a non-reentrant scanner so the next time
3032 * yylex() is called, initialization will occur. */
3033 yy_init_globals( );
3034
3035 return 0;
3036}
3037
3038/*
3039 * Internal utility routines.
3040 */
3041
3042#ifndef yytext_ptr
3043static void yy_flex_strncpy (char* s1, yyconst char * s2, int n )
3044{
3045
3046 int i;
3047 for ( i = 0; i < n; ++i )
3048 s1[i] = s2[i];
3049}
3050#endif
3051
3052#ifdef YY_NEED_STRLEN
3053static int yy_flex_strlen (yyconst char * s )
3054{
3055 int n;
3056 for ( n = 0; s[n]; ++n )
3057 ;
3058
3059 return n;
3060}
3061#endif
3062
3063static void *yyalloc (yy_size_t size )
3064{
3065 return malloc(size);
3066}
3067
3068static void *yyrealloc (void * ptr, yy_size_t size )
3069{
3070
3071 /* The cast to (char *) in the following accommodates both
3072 * implementations that use char* generic pointers, and those
3073 * that use void* generic pointers. It works with the latter
3074 * because both ANSI C and C++ allow castless assignment from
3075 * any pointer type to void*, and deal with argument conversions
3076 * as though doing an assignment.
3077 */
3078 return realloc(ptr, size);
3079}
3080
3081static void yyfree (void * ptr )
3082{
3083 free( (char *) ptr ); /* see yyrealloc() for (char *) cast */
3084}
3085
3086#define YYTABLES_NAME "yytables"
3087
3088#line 688 "pars0lex.l"
3089
3090
3091
3092/**********************************************************************
3093Release any resources used by the lexer. */
3094void
3095pars_lexer_close(void)
3096/*==================*/
3097{
3098 yylex_destroy();
3099 free(stringbuf);
3100 stringbuf = NULL;
3101 stringbuf_len_alloc = stringbuf_len = 0;
3102}
3103
3104