1 #line 2 "libmemcached/csl/scanner.cc"
2 #line 39 "libmemcached/csl/scanner.l"
4 #include <libmemcached/csl/common.h>
5 #include <libmemcached/csl/context.h>
6 #include <libmemcached/csl/parser.h>
7 #include <libmemcached/csl/symbol.h>
9 #ifndef __INTEL_COMPILER
10 #pragma GCC diagnostic ignored "-Wold-style-cast"
11 #pragma GCC diagnostic ignored "-Wsign-compare"
12 #pragma GCC diagnostic ignored "-Wunused-parameter"
13 #pragma GCC diagnostic ignored "-Wmissing-declarations"
14 #pragma GCC diagnostic ignored "-Wunused-result"
15 #pragma GCC diagnostic ignored "-Wmissing-noreturn"
19 #pragma GCC diagnostic ignored "-Wshorten-64-to-32"
22 #ifndef __INTEL_COMPILER
24 #pragma GCC diagnostic ignored "-Wlogical-op"
28 #define YY_EXTRA_TYPE Context*
33 #line 34 "libmemcached/csl/scanner.cc"
35 #define YY_INT_ALIGNED short int
37 /* A lexical scanner generated by flex */
40 #define YY_FLEX_MAJOR_VERSION 2
41 #define YY_FLEX_MINOR_VERSION 5
42 #define YY_FLEX_SUBMINOR_VERSION 35
43 #if YY_FLEX_SUBMINOR_VERSION > 0
47 /* First, we deal with platform-specific or compiler-specific issues. */
49 /* begin standard C headers. */
55 /* end standard C headers. */
57 /* flex integer type definitions */
62 /* C99 systems have <inttypes.h>. Non-C99 systems may or may not. */
64 #if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
66 /* C99 says to define __STDC_LIMIT_MACROS before including stdint.h,
67 * if you want the limit (max/min) macros for int types.
69 #ifndef __STDC_LIMIT_MACROS
70 #define __STDC_LIMIT_MACROS 1
74 typedef int8_t flex_int8_t
;
75 typedef uint8_t flex_uint8_t
;
76 typedef int16_t flex_int16_t
;
77 typedef uint16_t flex_uint16_t
;
78 typedef int32_t flex_int32_t
;
79 typedef uint32_t flex_uint32_t
;
80 typedef uint64_t flex_uint64_t
;
82 typedef signed char flex_int8_t
;
83 typedef short int flex_int16_t
;
84 typedef int flex_int32_t
;
85 typedef unsigned char flex_uint8_t
;
86 typedef unsigned short int flex_uint16_t
;
87 typedef unsigned int flex_uint32_t
;
90 /* Limits of integral types. */
92 #define INT8_MIN (-128)
95 #define INT16_MIN (-32767-1)
98 #define INT32_MIN (-2147483647-1)
101 #define INT8_MAX (127)
104 #define INT16_MAX (32767)
107 #define INT32_MAX (2147483647)
110 #define UINT8_MAX (255U)
113 #define UINT16_MAX (65535U)
116 #define UINT32_MAX (4294967295U)
119 #endif /* ! FLEXINT_H */
123 /* The "const" storage-class-modifier is valid. */
126 #else /* ! __cplusplus */
128 /* C99 requires __STDC__ to be defined as 1. */
129 #if defined (__STDC__)
133 #endif /* defined (__STDC__) */
134 #endif /* ! __cplusplus */
137 #define yyconst const
142 /* Returned upon end-of-file. */
145 /* Promotes a possibly negative, possibly signed char to an unsigned
146 * integer for use as an array index. If the signed char is negative,
147 * we want to instead treat it as an 8-bit unsigned char, hence the
150 #define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c)
152 /* An opaque pointer. */
153 #ifndef YY_TYPEDEF_YY_SCANNER_T
154 #define YY_TYPEDEF_YY_SCANNER_T
155 typedef void* yyscan_t
;
158 /* For convenience, these vars (plus the bison vars far below)
159 are macros in the reentrant scanner. */
160 #define yyin yyg->yyin_r
161 #define yyout yyg->yyout_r
162 #define yyextra yyg->yyextra_r
163 #define yyleng yyg->yyleng_r
164 #define yytext yyg->yytext_r
165 #define yylineno (YY_CURRENT_BUFFER_LVALUE->yy_bs_lineno)
166 #define yycolumn (YY_CURRENT_BUFFER_LVALUE->yy_bs_column)
167 #define yy_flex_debug yyg->yy_flex_debug_r
169 /* Enter a start condition. This macro really ought to take a parameter,
170 * but we do it the disgusting crufty way forced on us by the ()-less
171 * definition of BEGIN.
173 #define BEGIN yyg->yy_start = 1 + 2 *
175 /* Translate the current start state into a value that can be later handed
176 * to BEGIN to return to the state. The YYSTATE alias is for lex
179 #define YY_START ((yyg->yy_start - 1) / 2)
180 #define YYSTATE YY_START
182 /* Action number for EOF rule of a given start state. */
183 #define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
185 /* Special action meaning "start processing a new file". */
186 #define YY_NEW_FILE config_restart(yyin ,yyscanner )
188 #define YY_END_OF_BUFFER_CHAR 0
190 /* Size of default input buffer. */
192 #define YY_BUF_SIZE 16384
195 /* The state buf must be large enough to hold one state per character in the main buffer.
197 #define YY_STATE_BUF_SIZE ((YY_BUF_SIZE + 2) * sizeof(yy_state_type))
199 #ifndef YY_TYPEDEF_YY_BUFFER_STATE
200 #define YY_TYPEDEF_YY_BUFFER_STATE
201 typedef struct yy_buffer_state
*YY_BUFFER_STATE
;
204 #ifndef YY_TYPEDEF_YY_SIZE_T
205 #define YY_TYPEDEF_YY_SIZE_T
206 typedef size_t yy_size_t
;
209 #define EOB_ACT_CONTINUE_SCAN 0
210 #define EOB_ACT_END_OF_FILE 1
211 #define EOB_ACT_LAST_MATCH 2
213 #define YY_LESS_LINENO(n)
215 /* Return all but the first "n" matched characters back to the input stream. */
219 /* Undo effects of setting up yytext. */ \
220 int yyless_macro_arg = (n); \
221 YY_LESS_LINENO(yyless_macro_arg);\
222 *yy_cp = yyg->yy_hold_char; \
223 YY_RESTORE_YY_MORE_OFFSET \
224 yyg->yy_c_buf_p = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \
225 YY_DO_BEFORE_ACTION; /* set up yytext again */ \
229 #define unput(c) yyunput( c, yyg->yytext_ptr , yyscanner )
231 #ifndef YY_STRUCT_YY_BUFFER_STATE
232 #define YY_STRUCT_YY_BUFFER_STATE
233 struct yy_buffer_state
237 char *yy_ch_buf
; /* input buffer */
238 char *yy_buf_pos
; /* current position in input buffer */
240 /* Size of input buffer in bytes, not including room for EOB
243 yy_size_t yy_buf_size
;
245 /* Number of characters read into yy_ch_buf, not including EOB
248 yy_size_t yy_n_chars
;
250 /* Whether we "own" the buffer - i.e., we know we created it,
251 * and can realloc() it to grow it, and should free() it to
254 int yy_is_our_buffer
;
256 /* Whether this is an "interactive" input source; if so, and
257 * if we're using stdio for input, then we want to use getc()
258 * instead of fread(), to make sure we stop fetching input after
261 int yy_is_interactive
;
263 /* Whether we're considered to be at the beginning of a line.
264 * If so, '^' rules will be active on the next match, otherwise
269 int yy_bs_lineno
; /**< The line count. */
270 int yy_bs_column
; /**< The column count. */
272 /* Whether to try to fill the input buffer when we reach the
277 int yy_buffer_status
;
279 #define YY_BUFFER_NEW 0
280 #define YY_BUFFER_NORMAL 1
281 /* When an EOF's been seen but there's still some text to process
282 * then we mark the buffer as YY_EOF_PENDING, to indicate that we
283 * shouldn't try reading from the input source any more. We might
284 * still have a bunch of tokens to match, though, because of
285 * possible backing-up.
287 * When we actually see the EOF, we change the status to "new"
288 * (via config_restart()), so that the user can continue scanning by
289 * just pointing yyin at a new input file.
291 #define YY_BUFFER_EOF_PENDING 2
294 #endif /* !YY_STRUCT_YY_BUFFER_STATE */
296 /* We provide macros for accessing buffer states in case in the
297 * future we want to put the buffer states in a more general
300 * Returns the top of the stack, or NULL.
302 #define YY_CURRENT_BUFFER ( yyg->yy_buffer_stack \
303 ? yyg->yy_buffer_stack[yyg->yy_buffer_stack_top] \
306 /* Same as previous macro, but useful when we know that the buffer stack is not
307 * NULL or when we need an lvalue. For internal use only.
309 #define YY_CURRENT_BUFFER_LVALUE yyg->yy_buffer_stack[yyg->yy_buffer_stack_top]
311 void config_restart (FILE *input_file
,yyscan_t yyscanner
);
312 void config__switch_to_buffer (YY_BUFFER_STATE new_buffer
,yyscan_t yyscanner
);
313 YY_BUFFER_STATE
config__create_buffer (FILE *file
,int size
,yyscan_t yyscanner
);
314 void config__delete_buffer (YY_BUFFER_STATE b
,yyscan_t yyscanner
);
315 void config__flush_buffer (YY_BUFFER_STATE b
,yyscan_t yyscanner
);
316 void config_push_buffer_state (YY_BUFFER_STATE new_buffer
,yyscan_t yyscanner
);
317 void config_pop_buffer_state (yyscan_t yyscanner
);
319 static void config_ensure_buffer_stack (yyscan_t yyscanner
);
320 static void config__load_buffer_state (yyscan_t yyscanner
);
321 static void config__init_buffer (YY_BUFFER_STATE b
,FILE *file
,yyscan_t yyscanner
);
323 #define YY_FLUSH_BUFFER config__flush_buffer(YY_CURRENT_BUFFER ,yyscanner)
325 YY_BUFFER_STATE
config__scan_buffer (char *base
,yy_size_t size
,yyscan_t yyscanner
);
326 YY_BUFFER_STATE
config__scan_string (yyconst
char *yy_str
,yyscan_t yyscanner
);
327 YY_BUFFER_STATE
config__scan_bytes (yyconst
char *bytes
,yy_size_t len
,yyscan_t yyscanner
);
329 void *config_alloc (yy_size_t
,yyscan_t yyscanner
);
330 void *config_realloc (void *,yy_size_t
,yyscan_t yyscanner
);
331 void config_free (void * ,yyscan_t yyscanner
);
333 #define yy_new_buffer config__create_buffer
335 #define yy_set_interactive(is_interactive) \
337 if ( ! YY_CURRENT_BUFFER ){ \
338 config_ensure_buffer_stack (yyscanner); \
339 YY_CURRENT_BUFFER_LVALUE = \
340 config__create_buffer(yyin,YY_BUF_SIZE ,yyscanner); \
342 YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \
345 #define yy_set_bol(at_bol) \
347 if ( ! YY_CURRENT_BUFFER ){\
348 config_ensure_buffer_stack (yyscanner); \
349 YY_CURRENT_BUFFER_LVALUE = \
350 config__create_buffer(yyin,YY_BUF_SIZE ,yyscanner); \
352 YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \
355 #define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol)
357 /* Begin user sect3 */
359 #define config_wrap(n) 1
360 #define YY_SKIP_YYWRAP
362 typedef unsigned char YY_CHAR
;
364 typedef int yy_state_type
;
366 #define yytext_ptr yytext_r
368 static yy_state_type
yy_get_previous_state (yyscan_t yyscanner
);
369 static yy_state_type
yy_try_NUL_trans (yy_state_type current_state
,yyscan_t yyscanner
);
370 static int yy_get_next_buffer (yyscan_t yyscanner
);
371 static void yy_fatal_error (yyconst
char msg
[] ,yyscan_t yyscanner
);
373 /* Done after the current pattern has been matched and before the
374 * corresponding action - sets up yytext.
376 #define YY_DO_BEFORE_ACTION \
377 yyg->yytext_ptr = yy_bp; \
378 yyleng = (yy_size_t) (yy_cp - yy_bp); \
379 yyg->yy_hold_char = *yy_cp; \
381 yyg->yy_c_buf_p = yy_cp;
383 #define YY_NUM_RULES 66
384 #define YY_END_OF_BUFFER 67
385 /* This struct is not used in this scanner,
386 but its presence is necessary. */
389 flex_int32_t yy_verify
;
392 static yyconst flex_int16_t yy_accept
[534] =
394 0, 0, 67, 65, 5, 5, 1, 65, 65, 65,
395 2, 65, 65, 65, 65, 65, 65, 65, 65, 65,
396 65, 65, 65, 65, 65, 65, 0, 64, 0, 49,
397 0, 0, 0, 2, 3, 0, 0, 0, 0, 0,
398 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
399 0, 0, 0, 0, 6, 49, 49, 49, 49, 49,
400 49, 49, 49, 49, 49, 49, 49, 49, 49, 4,
401 63, 63, 2, 3, 63, 54, 63, 45, 63, 63,
402 63, 63, 63, 63, 64, 0, 63, 53, 63, 63,
403 63, 63, 63, 63, 49, 49, 49, 49, 49, 49,
405 49, 49, 49, 49, 49, 49, 49, 49, 49, 49,
406 49, 49, 49, 49, 49, 4, 0, 63, 2, 3,
407 63, 63, 63, 63, 63, 63, 63, 63, 63, 63,
408 63, 63, 63, 47, 49, 49, 49, 49, 49, 49,
409 0, 49, 49, 49, 49, 49, 49, 49, 49, 49,
410 49, 49, 49, 49, 49, 49, 49, 49, 4, 63,
411 63, 3, 63, 43, 46, 48, 63, 0, 59, 63,
412 63, 63, 63, 63, 42, 63, 49, 49, 49, 49,
413 49, 49, 49, 0, 0, 0, 49, 49, 49, 49,
414 49, 49, 0, 49, 49, 49, 0, 49, 49, 49,
416 0, 0, 49, 49, 4, 0, 63, 3, 63, 0,
417 63, 63, 63, 63, 51, 60, 52, 63, 49, 49,
418 49, 49, 49, 49, 0, 15, 0, 0, 0, 49,
419 49, 49, 0, 0, 49, 0, 49, 49, 49, 0,
420 49, 0, 49, 0, 0, 0, 0, 49, 4, 62,
421 63, 63, 63, 63, 57, 55, 41, 61, 44, 49,
422 49, 49, 49, 49, 0, 0, 0, 0, 0, 49,
423 49, 49, 0, 0, 49, 0, 49, 0, 49, 0,
424 49, 0, 49, 0, 0, 0, 0, 49, 62, 63,
425 58, 56, 0, 0, 49, 49, 49, 0, 0, 0,
427 0, 0, 49, 19, 0, 0, 0, 0, 49, 0,
428 0, 0, 7, 0, 0, 8, 0, 49, 0, 0,
429 34, 0, 0, 62, 63, 0, 0, 49, 0, 49,
430 0, 0, 0, 0, 0, 49, 0, 0, 0, 0,
431 49, 0, 0, 0, 0, 0, 0, 0, 0, 0,
432 0, 0, 0, 50, 0, 0, 49, 0, 49, 0,
433 0, 0, 0, 0, 49, 0, 0, 38, 37, 49,
434 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
435 0, 35, 0, 0, 0, 0, 0, 49, 0, 0,
436 0, 0, 0, 39, 0, 0, 0, 0, 0, 0,
438 0, 0, 0, 29, 0, 0, 0, 0, 36, 0,
439 0, 0, 0, 49, 0, 0, 0, 0, 0, 0,
440 0, 0, 0, 0, 0, 0, 0, 0, 30, 0,
441 0, 33, 0, 0, 0, 0, 49, 0, 0, 0,
442 0, 0, 0, 0, 0, 23, 0, 0, 26, 0,
443 0, 0, 32, 0, 0, 0, 0, 13, 40, 0,
444 0, 0, 0, 0, 21, 0, 0, 0, 0, 0,
445 31, 0, 0, 0, 0, 0, 0, 0, 0, 0,
446 0, 0, 25, 0, 0, 9, 10, 11, 0, 0,
447 0, 0, 0, 0, 0, 0, 0, 0, 12, 0,
449 0, 17, 0, 0, 0, 0, 0, 0, 0, 0,
450 18, 0, 0, 0, 27, 28, 0, 0, 0, 0,
451 0, 14, 16, 20, 0, 0, 0, 0, 0, 0,
455 static yyconst flex_int32_t yy_ec
[256] =
457 1, 1, 1, 1, 1, 1, 1, 1, 2, 3,
458 1, 1, 2, 1, 1, 1, 1, 1, 1, 1,
459 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
460 1, 4, 1, 5, 6, 1, 1, 1, 1, 1,
461 1, 1, 1, 7, 8, 9, 10, 11, 12, 13,
462 14, 15, 16, 17, 11, 11, 11, 18, 1, 1,
463 19, 1, 20, 1, 21, 22, 23, 24, 25, 26,
464 27, 28, 29, 30, 31, 32, 33, 34, 35, 36,
465 37, 38, 39, 40, 41, 42, 43, 44, 45, 46,
466 1, 47, 1, 1, 48, 1, 49, 50, 51, 52,
468 53, 54, 55, 56, 57, 58, 59, 60, 61, 62,
469 63, 64, 65, 66, 67, 68, 69, 70, 71, 72,
470 73, 74, 1, 1, 1, 1, 1, 1, 1, 1,
471 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
472 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
473 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
474 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
475 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
476 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
477 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
479 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
480 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
481 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
482 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
483 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
487 static yyconst flex_int32_t yy_meta
[75] =
489 1, 1, 1, 1, 2, 1, 1, 2, 2, 1,
490 2, 2, 2, 2, 2, 2, 2, 1, 1, 1,
491 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
492 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
493 2, 2, 2, 2, 2, 2, 1, 2, 2, 2,
494 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
495 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
499 static yyconst flex_int16_t yy_base
[539] =
501 0, 628, 628, 1740, 1740, 1740, 1740, 70, 618, 605,
502 67, 74, 0, 57, 52, 59, 73, 57, 64, 74,
503 612, 77, 79, 77, 65, 612, 101, 1740, 609, 138,
504 202, 215, 217, 230, 237, 250, 252, 259, 265, 277,
505 282, 287, 297, 271, 315, 377, 323, 342, 350, 359,
506 364, 396, 401, 606, 1740, 449, 242, 73, 80, 85,
507 90, 78, 378, 79, 397, 398, 92, 77, 94, 441,
508 328, 515, 528, 481, 499, 421, 541, 543, 548, 553,
509 559, 565, 576, 590, 595, 649, 0, 597, 622, 614,
510 624, 656, 632, 674, 123, 132, 235, 249, 253, 271,
512 586, 285, 296, 328, 403, 340, 358, 375, 379, 413,
513 650, 404, 438, 456, 444, 717, 730, 743, 756, 768,
514 781, 787, 789, 797, 803, 808, 825, 810, 838, 852,
515 854, 863, 870, 702, 463, 460, 651, 519, 537, 537,
516 656, 544, 561, 594, 634, 652, 662, 572, 655, 654,
517 651, 571, 664, 658, 672, 570, 711, 696, 893, 921,
518 872, 928, 907, 879, 942, 944, 949, 951, 958, 967,
519 973, 975, 980, 993, 995, 1000, 737, 768, 771, 795,
520 787, 798, 126, 796, 860, 852, 857, 861, 961, 569,
521 567, 959, 971, 970, 971, 992, 985, 1002, 564, 994,
523 999, 990, 547, 1006, 1056, 1069, 1082, 1740, 1095, 1097,
524 1107, 1113, 1124, 1118, 1131, 1133, 1139, 1145, 989, 998,
525 1010, 1024, 1022, 546, 1066, 1740, 1084, 1086, 1107, 1110,
526 1126, 1122, 1124, 1134, 1135, 1140, 1145, 527, 1133, 1144,
527 1135, 1148, 1140, 1155, 1147, 1159, 1165, 1145, 1740, 1211,
528 1224, 1226, 1232, 1234, 1239, 1245, 1247, 1252, 1257, 526,
529 517, 1161, 1196, 1236, 1221, 1239, 1244, 514, 513, 1249,
530 1226, 472, 1244, 1254, 1247, 1245, 471, 1241, 457, 1251,
531 258, 1250, 1248, 1264, 1266, 1256, 1273, 456, 1316, 1329,
532 1331, 1336, 1271, 1276, 1277, 451, 1278, 1298, 1286, 1307,
534 1312, 1307, 1329, 0, 1318, 1322, 1313, 1324, 1313, 1335,
535 1335, 1333, 1740, 1340, 1328, 1740, 1329, 406, 1333, 1345,
536 1740, 1331, 1341, 1396, 1398, 1344, 1367, 1377, 1368, 1369,
537 1373, 1384, 403, 1375, 1393, 1390, 1391, 1394, 373, 372,
538 1396, 1387, 1402, 1391, 1390, 1401, 1402, 1388, 1406, 1438,
539 1400, 1412, 1409, 1460, 1400, 1411, 367, 1429, 1435, 1431,
540 362, 1428, 1447, 1433, 346, 352, 1439, 1740, 1740, 348,
541 1434, 1448, 1453, 1438, 1458, 1448, 1444, 1463, 1453, 1464,
542 1468, 1740, 1445, 1451, 1452, 1468, 1463, 1462, 1475, 1480,
543 1494, 1494, 1498, 1740, 1488, 1486, 1490, 1489, 1498, 1496,
545 1493, 1492, 1511, 1740, 1497, 1508, 1506, 1494, 1740, 1505,
546 1516, 1515, 1520, 1512, 1512, 1528, 1510, 1527, 1515, 1535,
547 1530, 1546, 334, 1551, 1538, 333, 340, 336, 1740, 1540,
548 1558, 1740, 1561, 1546, 1554, 1552, 322, 1555, 1557, 1566,
549 1552, 1560, 1558, 321, 1559, 1740, 1572, 1557, 1740, 1561,
550 1562, 1577, 1740, 1568, 1565, 1581, 1567, 1740, 1740, 1584,
551 1578, 1603, 1606, 1600, 1740, 1603, 319, 289, 1609, 1610,
552 1740, 1608, 1602, 285, 1602, 1604, 1612, 1618, 1609, 1619,
553 1620, 1611, 1740, 1605, 1606, 1740, 1740, 1740, 282, 1617,
554 1635, 253, 1626, 1635, 1636, 1636, 1637, 1639, 1740, 1644,
556 1634, 1740, 243, 1661, 1662, 1650, 237, 221, 1668, 1663,
557 1740, 1656, 229, 1654, 1740, 1740, 1672, 217, 208, 1660,
558 1674, 1740, 1740, 1740, 1676, 1664, 1682, 1665, 1681, 202,
559 1740, 1740, 1740, 1733, 154, 1735, 131, 1737
562 static yyconst flex_int16_t yy_def
[539] =
564 533, 1, 533, 533, 533, 533, 533, 534, 533, 533,
565 535, 533, 535, 535, 535, 535, 535, 535, 535, 535,
566 535, 535, 535, 535, 535, 536, 534, 533, 534, 533,
567 533, 537, 537, 537, 533, 537, 537, 537, 537, 537,
568 537, 537, 537, 537, 537, 538, 537, 537, 537, 537,
569 537, 537, 537, 536, 533, 30, 56, 56, 56, 56,
570 56, 56, 56, 56, 56, 56, 56, 56, 56, 533,
571 537, 537, 537, 533, 537, 537, 537, 537, 537, 537,
572 537, 537, 537, 537, 537, 538, 86, 537, 537, 537,
573 537, 537, 537, 537, 56, 56, 56, 56, 56, 56,
575 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
576 56, 56, 56, 56, 56, 533, 537, 537, 537, 533,
577 537, 537, 537, 537, 537, 537, 537, 537, 537, 537,
578 537, 537, 537, 537, 56, 56, 56, 56, 56, 56,
579 533, 56, 56, 56, 56, 56, 56, 56, 56, 56,
580 56, 56, 56, 56, 56, 56, 56, 56, 533, 537,
581 537, 533, 537, 537, 537, 537, 537, 537, 537, 537,
582 537, 537, 537, 537, 537, 537, 56, 56, 56, 56,
583 56, 56, 56, 533, 533, 533, 56, 56, 56, 56,
584 56, 56, 533, 56, 56, 56, 533, 56, 56, 56,
586 533, 533, 56, 56, 533, 537, 537, 533, 537, 537,
587 537, 537, 537, 537, 537, 537, 537, 537, 56, 56,
588 56, 56, 56, 56, 533, 533, 533, 533, 533, 56,
589 56, 56, 533, 533, 56, 533, 56, 56, 56, 533,
590 56, 533, 56, 533, 533, 533, 533, 56, 533, 537,
591 537, 537, 537, 537, 537, 537, 537, 537, 537, 56,
592 56, 56, 56, 56, 533, 533, 533, 533, 533, 56,
593 56, 56, 533, 533, 56, 533, 56, 533, 56, 533,
594 56, 533, 56, 533, 533, 533, 533, 56, 537, 537,
595 537, 537, 533, 533, 56, 56, 56, 533, 533, 533,
597 533, 533, 56, 56, 533, 533, 533, 533, 56, 533,
598 533, 533, 533, 533, 533, 533, 533, 56, 533, 533,
599 533, 533, 533, 537, 537, 533, 533, 56, 533, 56,
600 533, 533, 533, 533, 533, 56, 533, 533, 533, 533,
601 56, 533, 533, 533, 533, 533, 533, 533, 533, 533,
602 533, 533, 533, 537, 533, 533, 56, 533, 56, 533,
603 533, 533, 533, 533, 56, 533, 533, 533, 533, 56,
604 533, 533, 533, 533, 533, 533, 533, 533, 533, 533,
605 533, 533, 533, 533, 533, 533, 533, 56, 533, 533,
606 533, 533, 533, 533, 533, 533, 533, 533, 533, 533,
608 533, 533, 533, 533, 533, 533, 533, 533, 533, 533,
609 533, 533, 533, 56, 533, 533, 533, 533, 533, 533,
610 533, 533, 533, 533, 533, 533, 533, 533, 533, 533,
611 533, 533, 533, 533, 533, 533, 56, 533, 533, 533,
612 533, 533, 533, 533, 533, 533, 533, 533, 533, 533,
613 533, 533, 533, 533, 533, 533, 533, 533, 533, 533,
614 533, 533, 533, 533, 533, 533, 533, 533, 533, 533,
615 533, 533, 533, 533, 533, 533, 533, 533, 533, 533,
616 533, 533, 533, 533, 533, 533, 533, 533, 533, 533,
617 533, 533, 533, 533, 533, 533, 533, 533, 533, 533,
619 533, 533, 533, 533, 533, 533, 533, 533, 533, 533,
620 533, 533, 533, 533, 533, 533, 533, 533, 533, 533,
621 533, 533, 533, 533, 533, 533, 533, 533, 533, 533,
622 533, 533, 0, 533, 533, 533, 533, 533
625 static yyconst flex_int16_t yy_nxt
[1815] =
627 4, 5, 6, 7, 8, 4, 7, 9, 4, 10,
628 11, 11, 11, 11, 11, 11, 11, 12, 7, 4,
629 13, 13, 14, 15, 16, 17, 13, 18, 19, 20,
630 13, 21, 22, 13, 13, 13, 13, 23, 24, 25,
631 13, 13, 13, 13, 13, 13, 4, 4, 13, 13,
632 14, 15, 16, 17, 13, 18, 19, 20, 13, 21,
633 22, 13, 13, 13, 13, 23, 24, 25, 13, 13,
634 13, 13, 13, 13, 28, 33, 38, 34, 34, 34,
635 34, 34, 34, 34, 35, 35, 35, 35, 35, 35,
636 35, 36, 39, 41, 37, 43, 40, 44, 45, 50,
638 47, 52, 53, 51, 38, 28, 42, 97, 98, 99,
639 100, 48, 101, 105, 113, 114, 29, 49, 115, 36,
640 39, 41, 37, 43, 40, 44, 45, 50, 47, 52,
641 53, 51, 71, 225, 42, 97, 98, 99, 100, 48,
642 101, 105, 113, 114, 226, 49, 115, 29, 56, 56,
643 56, 56, 56, 56, 56, 32, 135, 136, 56, 57,
644 58, 59, 56, 60, 56, 61, 62, 56, 56, 56,
645 56, 63, 56, 64, 56, 65, 66, 67, 68, 69,
646 56, 56, 56, 56, 135, 136, 56, 57, 58, 59,
647 56, 60, 56, 61, 62, 56, 56, 56, 56, 63,
649 56, 64, 56, 65, 66, 67, 68, 69, 56, 56,
650 56, 56, 70, 70, 70, 70, 70, 70, 70, 32,
651 532, 32, 32, 32, 32, 32, 524, 72, 72, 72,
652 72, 72, 72, 72, 32, 523, 520, 32, 33, 516,
653 73, 73, 73, 73, 73, 73, 73, 74, 74, 74,
654 74, 74, 74, 74, 32, 515, 32, 32, 32, 32,
655 32, 511, 32, 32, 32, 315, 32, 32, 137, 32,
656 95, 502, 32, 32, 76, 32, 316, 32, 32, 32,
657 77, 32, 96, 75, 32, 32, 32, 138, 78, 32,
658 32, 32, 139, 83, 32, 32, 137, 32, 95, 32,
660 499, 32, 76, 488, 32, 32, 32, 483, 77, 140,
661 96, 75, 32, 80, 79, 138, 78, 142, 32, 32,
662 139, 83, 32, 32, 32, 82, 482, 32, 81, 32,
663 32, 32, 32, 143, 32, 32, 32, 140, 88, 465,
664 458, 80, 79, 451, 32, 142, 32, 450, 84, 32,
665 32, 449, 446, 82, 32, 397, 81, 32, 32, 395,
666 144, 143, 32, 32, 394, 89, 32, 32, 32, 390,
667 32, 32, 32, 147, 386, 32, 84, 27, 27, 27,
668 27, 85, 27, 27, 86, 86, 27, 90, 144, 32,
669 369, 368, 91, 89, 27, 27, 27, 32, 102, 148,
671 32, 147, 92, 32, 32, 32, 32, 149, 32, 32,
672 362, 32, 103, 349, 150, 90, 151, 106, 104, 107,
673 91, 108, 109, 29, 86, 32, 102, 148, 32, 32,
674 92, 110, 111, 93, 145, 149, 152, 146, 112, 155,
675 103, 94, 150, 32, 151, 106, 104, 107, 32, 108,
676 109, 116, 116, 116, 116, 116, 116, 116, 329, 110,
677 111, 93, 145, 323, 152, 146, 112, 155, 32, 94,
678 56, 56, 56, 156, 56, 313, 56, 56, 311, 305,
679 157, 158, 56, 177, 56, 178, 56, 56, 56, 56,
680 56, 120, 120, 120, 120, 120, 120, 120, 56, 56,
682 56, 156, 56, 32, 56, 56, 32, 32, 157, 158,
683 56, 177, 56, 178, 56, 56, 56, 56, 56, 32,
684 302, 301, 32, 117, 294, 118, 118, 118, 118, 118,
685 118, 118, 32, 293, 278, 32, 33, 121, 119, 119,
686 119, 119, 119, 119, 119, 32, 32, 32, 32, 32,
687 32, 32, 32, 265, 247, 32, 32, 32, 181, 182,
688 32, 32, 32, 32, 183, 121, 32, 32, 187, 32,
689 125, 242, 32, 32, 234, 32, 233, 201, 197, 193,
690 32, 122, 123, 32, 32, 188, 181, 182, 32, 126,
691 32, 124, 183, 141, 32, 32, 187, 32, 32, 32,
693 32, 32, 32, 32, 32, 32, 32, 127, 55, 122,
694 123, 533, 32, 188, 55, 189, 46, 126, 32, 124,
695 128, 32, 32, 32, 31, 30, 32, 533, 32, 32,
696 32, 32, 32, 26, 533, 127, 32, 32, 533, 32,
697 32, 533, 32, 189, 32, 533, 130, 131, 128, 27,
698 27, 27, 27, 85, 27, 27, 86, 86, 27, 533,
699 32, 32, 129, 32, 32, 190, 27, 27, 27, 32,
700 533, 32, 153, 133, 130, 131, 179, 184, 32, 32,
701 132, 32, 32, 191, 180, 192, 185, 154, 186, 194,
702 129, 195, 196, 190, 198, 29, 86, 199, 134, 533,
704 153, 133, 533, 32, 179, 184, 32, 200, 132, 32,
705 32, 191, 180, 192, 185, 154, 186, 194, 202, 195,
706 196, 32, 198, 533, 204, 199, 134, 159, 159, 159,
707 159, 159, 159, 159, 32, 200, 533, 32, 32, 533,
708 160, 160, 160, 160, 160, 160, 160, 32, 203, 32,
709 32, 117, 204, 161, 161, 161, 161, 161, 161, 161,
710 32, 533, 533, 32, 32, 533, 119, 119, 119, 119,
711 119, 119, 119, 533, 219, 533, 203, 32, 162, 162,
712 162, 162, 162, 162, 162, 32, 533, 533, 32, 32,
713 32, 32, 220, 32, 32, 32, 32, 32, 533, 221,
715 533, 32, 219, 32, 32, 32, 533, 32, 533, 163,
716 32, 32, 32, 164, 32, 32, 32, 32, 32, 222,
717 220, 166, 533, 167, 223, 224, 165, 221, 32, 32,
718 533, 533, 32, 32, 32, 169, 32, 163, 171, 533,
719 227, 164, 32, 533, 32, 32, 32, 222, 533, 166,
720 168, 167, 223, 224, 165, 32, 32, 32, 32, 32,
721 32, 32, 32, 169, 533, 170, 171, 32, 227, 172,
722 32, 32, 32, 533, 32, 533, 32, 32, 32, 32,
723 117, 533, 533, 32, 228, 32, 32, 32, 174, 533,
724 229, 533, 173, 170, 176, 230, 231, 172, 533, 32,
726 533, 32, 175, 205, 205, 205, 205, 205, 205, 205,
727 32, 32, 228, 533, 32, 32, 174, 32, 229, 32,
728 173, 533, 176, 230, 231, 32, 32, 533, 32, 206,
729 175, 207, 207, 207, 207, 207, 207, 207, 208, 208,
730 208, 208, 208, 208, 208, 209, 32, 533, 32, 32,
731 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
732 533, 533, 32, 533, 211, 32, 32, 212, 32, 533,
733 533, 32, 533, 209, 32, 32, 533, 32, 533, 32,
734 32, 32, 32, 32, 32, 232, 533, 32, 32, 32,
735 213, 32, 533, 235, 533, 215, 210, 32, 32, 32,
737 32, 32, 32, 32, 32, 32, 214, 32, 32, 533,
738 236, 237, 533, 232, 32, 238, 239, 216, 213, 533,
739 32, 235, 32, 215, 240, 217, 241, 32, 243, 244,
740 246, 248, 245, 260, 214, 261, 262, 218, 236, 237,
741 32, 533, 32, 238, 239, 216, 263, 32, 533, 533,
742 264, 533, 240, 217, 241, 533, 243, 244, 246, 248,
743 245, 260, 533, 261, 262, 218, 249, 249, 249, 249,
744 249, 249, 249, 32, 263, 533, 32, 32, 264, 250,
745 250, 250, 250, 250, 250, 250, 32, 533, 533, 32,
746 206, 533, 251, 251, 251, 251, 251, 251, 251, 32,
748 533, 32, 32, 32, 32, 32, 533, 533, 266, 533,
749 253, 32, 533, 254, 32, 32, 32, 32, 533, 255,
750 32, 32, 32, 267, 533, 32, 32, 256, 32, 32,
751 268, 32, 32, 269, 252, 32, 266, 32, 32, 32,
752 32, 32, 32, 32, 32, 270, 32, 32, 257, 32,
753 533, 267, 32, 32, 32, 533, 258, 271, 268, 272,
754 32, 269, 252, 273, 533, 32, 274, 275, 276, 277,
755 279, 32, 280, 270, 281, 282, 257, 283, 32, 284,
756 32, 285, 286, 259, 258, 271, 32, 272, 287, 288,
757 533, 273, 32, 533, 274, 275, 276, 277, 279, 533,
759 280, 295, 281, 282, 533, 283, 533, 284, 533, 285,
760 286, 259, 533, 533, 533, 32, 287, 288, 32, 32,
761 533, 289, 289, 289, 289, 289, 289, 289, 32, 295,
762 32, 32, 206, 32, 32, 296, 32, 533, 32, 32,
763 32, 32, 32, 32, 291, 533, 32, 32, 292, 32,
764 290, 32, 32, 32, 32, 32, 32, 297, 32, 32,
765 32, 32, 298, 296, 32, 32, 533, 299, 300, 303,
766 304, 32, 306, 32, 307, 309, 533, 310, 290, 32,
767 312, 32, 308, 314, 317, 297, 32, 318, 319, 320,
768 298, 321, 32, 322, 32, 299, 300, 303, 304, 32,
770 306, 533, 307, 309, 32, 310, 326, 533, 312, 533,
771 308, 314, 317, 327, 328, 318, 319, 320, 330, 321,
772 32, 322, 331, 32, 32, 332, 324, 324, 324, 324,
773 324, 324, 324, 32, 326, 32, 32, 32, 32, 32,
774 32, 327, 328, 32, 32, 333, 330, 334, 533, 335,
775 331, 336, 337, 332, 338, 533, 339, 340, 341, 342,
776 343, 344, 325, 32, 345, 346, 347, 348, 350, 351,
777 352, 353, 533, 333, 533, 334, 32, 335, 32, 336,
778 337, 355, 338, 32, 339, 340, 341, 342, 343, 344,
779 325, 356, 345, 346, 347, 348, 350, 351, 352, 353,
781 32, 357, 32, 32, 32, 32, 32, 358, 359, 355,
782 360, 361, 363, 364, 365, 533, 366, 533, 367, 356,
783 370, 371, 372, 373, 374, 375, 376, 377, 378, 357,
784 533, 381, 382, 383, 384, 358, 359, 354, 360, 361,
785 363, 364, 365, 32, 366, 32, 367, 385, 370, 371,
786 372, 373, 374, 375, 376, 377, 378, 387, 379, 381,
787 382, 383, 384, 388, 32, 354, 380, 32, 32, 389,
788 391, 392, 393, 396, 398, 385, 399, 400, 401, 533,
789 402, 403, 404, 405, 406, 387, 379, 407, 408, 409,
790 410, 388, 411, 412, 380, 413, 414, 389, 391, 392,
792 393, 396, 398, 415, 399, 400, 401, 32, 402, 403,
793 404, 405, 406, 416, 417, 407, 408, 409, 410, 418,
794 411, 412, 419, 413, 414, 420, 421, 422, 423, 424,
795 425, 415, 426, 427, 428, 429, 430, 431, 432, 433,
796 434, 416, 417, 435, 436, 437, 438, 418, 439, 440,
797 419, 441, 442, 420, 421, 422, 423, 424, 425, 443,
798 426, 427, 428, 429, 430, 431, 432, 433, 434, 444,
799 445, 435, 436, 437, 438, 447, 439, 440, 448, 441,
800 442, 452, 453, 454, 455, 456, 457, 443, 459, 460,
801 461, 462, 463, 464, 466, 467, 468, 444, 445, 469,
803 470, 471, 472, 447, 473, 474, 448, 475, 476, 452,
804 453, 454, 455, 456, 457, 477, 459, 460, 461, 462,
805 463, 464, 466, 467, 468, 478, 479, 469, 470, 471,
806 472, 480, 473, 474, 481, 475, 476, 484, 485, 486,
807 487, 489, 490, 477, 491, 492, 493, 494, 495, 496,
808 497, 498, 500, 478, 479, 501, 503, 504, 505, 480,
809 506, 507, 481, 508, 509, 484, 485, 486, 487, 489,
810 490, 510, 491, 492, 493, 494, 495, 496, 497, 498,
811 500, 512, 513, 501, 503, 504, 505, 514, 506, 507,
812 517, 508, 509, 518, 519, 521, 522, 525, 526, 510,
814 527, 528, 529, 530, 531, 533, 533, 533, 533, 512,
815 513, 533, 533, 533, 533, 514, 533, 533, 517, 533,
816 533, 518, 519, 521, 522, 525, 526, 533, 527, 528,
817 529, 530, 531, 27, 27, 54, 54, 87, 87, 3,
818 533, 533, 533, 533, 533, 533, 533, 533, 533, 533,
819 533, 533, 533, 533, 533, 533, 533, 533, 533, 533,
820 533, 533, 533, 533, 533, 533, 533, 533, 533, 533,
821 533, 533, 533, 533, 533, 533, 533, 533, 533, 533,
822 533, 533, 533, 533, 533, 533, 533, 533, 533, 533,
823 533, 533, 533, 533, 533, 533, 533, 533, 533, 533,
825 533, 533, 533, 533, 533, 533, 533, 533, 533, 533,
829 static yyconst flex_int16_t yy_chk
[1815] =
831 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
832 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
833 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
834 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
835 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
836 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
837 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
838 1, 1, 1, 1, 8, 11, 15, 11, 11, 11,
839 11, 11, 11, 11, 12, 12, 12, 12, 12, 12,
840 12, 14, 16, 17, 14, 18, 16, 19, 20, 23,
842 22, 24, 25, 23, 15, 27, 17, 58, 59, 60,
843 61, 22, 62, 64, 67, 68, 8, 22, 69, 14,
844 16, 17, 14, 18, 16, 19, 20, 23, 22, 24,
845 25, 23, 537, 183, 17, 58, 59, 60, 61, 22,
846 62, 64, 67, 68, 183, 22, 69, 27, 30, 30,
847 30, 30, 30, 30, 30, 535, 95, 96, 30, 30,
848 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
849 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
850 30, 30, 30, 30, 95, 96, 30, 30, 30, 30,
851 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
853 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
854 30, 30, 31, 31, 31, 31, 31, 31, 31, 32,
855 530, 33, 32, 32, 33, 33, 519, 33, 33, 33,
856 33, 33, 33, 33, 34, 518, 513, 34, 34, 508,
857 34, 34, 34, 34, 34, 34, 34, 35, 35, 35,
858 35, 35, 35, 35, 36, 507, 37, 36, 36, 37,
859 37, 503, 32, 38, 33, 281, 38, 38, 97, 39,
860 57, 492, 39, 39, 37, 44, 281, 34, 44, 44,
861 38, 40, 57, 36, 40, 40, 41, 98, 39, 41,
862 41, 42, 99, 44, 42, 42, 97, 36, 57, 37,
864 489, 43, 37, 474, 43, 43, 38, 468, 38, 100,
865 57, 36, 39, 41, 40, 98, 39, 102, 44, 45,
866 99, 44, 45, 45, 40, 43, 467, 47, 42, 41,
867 47, 47, 71, 103, 42, 71, 71, 100, 47, 444,
868 437, 41, 40, 428, 43, 102, 48, 427, 45, 48,
869 48, 426, 423, 43, 49, 370, 42, 49, 49, 366,
870 104, 103, 45, 50, 365, 48, 50, 50, 51, 361,
871 47, 51, 51, 106, 357, 71, 45, 46, 46, 46,
872 46, 46, 46, 46, 46, 46, 46, 49, 104, 48,
873 340, 339, 50, 48, 46, 46, 46, 49, 63, 107,
875 52, 106, 51, 52, 52, 53, 50, 108, 53, 53,
876 333, 51, 63, 318, 108, 49, 109, 65, 63, 65,
877 50, 65, 66, 46, 46, 76, 63, 107, 76, 76,
878 51, 66, 66, 52, 105, 108, 110, 105, 66, 112,
879 63, 53, 108, 52, 109, 65, 63, 65, 53, 65,
880 66, 70, 70, 70, 70, 70, 70, 70, 296, 66,
881 66, 52, 105, 288, 110, 105, 66, 112, 76, 53,
882 56, 56, 56, 113, 56, 279, 56, 56, 277, 272,
883 114, 115, 56, 135, 56, 136, 56, 56, 56, 56,
884 56, 74, 74, 74, 74, 74, 74, 74, 56, 56,
886 56, 113, 56, 75, 56, 56, 75, 75, 114, 115,
887 56, 135, 56, 136, 56, 56, 56, 56, 56, 72,
888 269, 268, 72, 72, 261, 72, 72, 72, 72, 72,
889 72, 72, 73, 260, 238, 73, 73, 75, 73, 73,
890 73, 73, 73, 73, 73, 77, 75, 78, 77, 77,
891 78, 78, 79, 224, 203, 79, 79, 80, 138, 139,
892 80, 80, 72, 81, 140, 75, 81, 81, 142, 82,
893 81, 199, 82, 82, 191, 73, 190, 156, 152, 148,
894 83, 77, 79, 83, 83, 143, 138, 139, 77, 82,
895 78, 80, 140, 101, 84, 79, 142, 84, 84, 85,
897 80, 88, 85, 85, 88, 88, 81, 83, 54, 77,
898 79, 29, 82, 143, 26, 144, 21, 82, 90, 80,
899 84, 90, 90, 83, 10, 9, 89, 3, 91, 89,
900 89, 91, 91, 2, 0, 83, 93, 84, 0, 93,
901 93, 0, 85, 144, 88, 0, 90, 91, 84, 86,
902 86, 86, 86, 86, 86, 86, 86, 86, 86, 0,
903 92, 90, 89, 92, 92, 145, 86, 86, 86, 89,
904 0, 91, 111, 93, 90, 91, 137, 141, 94, 93,
905 92, 94, 94, 146, 137, 147, 141, 111, 141, 149,
906 89, 150, 151, 145, 153, 86, 86, 154, 94, 0,
908 111, 93, 0, 92, 137, 141, 134, 155, 92, 134,
909 134, 146, 137, 147, 141, 111, 141, 149, 157, 150,
910 151, 94, 153, 0, 158, 154, 94, 116, 116, 116,
911 116, 116, 116, 116, 117, 155, 0, 117, 117, 0,
912 117, 117, 117, 117, 117, 117, 117, 118, 157, 134,
913 118, 118, 158, 118, 118, 118, 118, 118, 118, 118,
914 119, 0, 0, 119, 119, 0, 119, 119, 119, 119,
915 119, 119, 119, 0, 177, 0, 157, 117, 120, 120,
916 120, 120, 120, 120, 120, 121, 0, 0, 121, 121,
917 118, 122, 178, 123, 122, 122, 123, 123, 0, 179,
919 0, 124, 177, 119, 124, 124, 0, 125, 0, 121,
920 125, 125, 126, 122, 128, 126, 126, 128, 128, 180,
921 178, 124, 0, 125, 181, 182, 123, 179, 121, 127,
922 0, 0, 127, 127, 122, 126, 123, 121, 128, 0,
923 184, 122, 129, 0, 124, 129, 129, 180, 0, 124,
924 125, 125, 181, 182, 123, 126, 130, 128, 131, 130,
925 130, 131, 131, 126, 0, 127, 128, 132, 184, 129,
926 132, 132, 127, 0, 133, 0, 161, 133, 133, 161,
927 161, 0, 0, 164, 185, 129, 164, 164, 131, 0,
928 186, 0, 130, 127, 133, 187, 188, 129, 0, 130,
930 0, 131, 132, 159, 159, 159, 159, 159, 159, 159,
931 132, 163, 185, 0, 163, 163, 131, 133, 186, 161,
932 130, 0, 133, 187, 188, 160, 164, 0, 160, 160,
933 132, 160, 160, 160, 160, 160, 160, 160, 162, 162,
934 162, 162, 162, 162, 162, 163, 165, 0, 166, 165,
935 165, 166, 166, 167, 163, 168, 167, 167, 168, 168,
936 0, 0, 169, 0, 168, 169, 169, 168, 160, 0,
937 0, 170, 0, 163, 170, 170, 0, 171, 0, 172,
938 171, 171, 172, 172, 173, 189, 0, 173, 173, 165,
939 170, 166, 0, 192, 0, 172, 167, 174, 168, 175,
941 174, 174, 175, 175, 176, 169, 171, 176, 176, 0,
942 193, 194, 0, 189, 170, 195, 196, 173, 170, 0,
943 171, 192, 172, 172, 197, 174, 198, 173, 200, 201,
944 202, 204, 201, 219, 171, 220, 221, 176, 193, 194,
945 174, 0, 175, 195, 196, 173, 222, 176, 0, 0,
946 223, 0, 197, 174, 198, 0, 200, 201, 202, 204,
947 201, 219, 0, 220, 221, 176, 205, 205, 205, 205,
948 205, 205, 205, 206, 222, 0, 206, 206, 223, 206,
949 206, 206, 206, 206, 206, 206, 207, 0, 0, 207,
950 207, 0, 207, 207, 207, 207, 207, 207, 207, 209,
952 0, 210, 209, 209, 210, 210, 0, 0, 225, 0,
953 210, 211, 0, 210, 211, 211, 206, 212, 0, 211,
954 212, 212, 214, 227, 0, 214, 214, 212, 213, 207,
955 228, 213, 213, 229, 209, 215, 225, 216, 215, 215,
956 216, 216, 209, 217, 210, 230, 217, 217, 213, 218,
957 0, 227, 218, 218, 211, 0, 214, 231, 228, 232,
958 212, 229, 209, 233, 0, 214, 234, 235, 236, 237,
959 239, 213, 240, 230, 241, 242, 213, 243, 215, 244,
960 216, 245, 246, 218, 214, 231, 217, 232, 247, 248,
961 0, 233, 218, 0, 234, 235, 236, 237, 239, 0,
963 240, 262, 241, 242, 0, 243, 0, 244, 0, 245,
964 246, 218, 0, 0, 0, 250, 247, 248, 250, 250,
965 0, 250, 250, 250, 250, 250, 250, 250, 251, 262,
966 252, 251, 251, 252, 252, 263, 253, 0, 254, 253,
967 253, 254, 254, 255, 253, 0, 255, 255, 254, 256,
968 252, 257, 256, 256, 257, 257, 258, 264, 250, 258,
969 258, 259, 265, 263, 259, 259, 0, 266, 267, 270,
970 271, 251, 273, 252, 274, 275, 0, 276, 252, 253,
971 278, 254, 274, 280, 282, 264, 255, 283, 284, 285,
972 265, 286, 256, 287, 257, 266, 267, 270, 271, 258,
974 273, 0, 274, 275, 259, 276, 293, 0, 278, 0,
975 274, 280, 282, 294, 295, 283, 284, 285, 297, 286,
976 289, 287, 298, 289, 289, 299, 289, 289, 289, 289,
977 289, 289, 289, 290, 293, 291, 290, 290, 291, 291,
978 292, 294, 295, 292, 292, 300, 297, 301, 0, 302,
979 298, 303, 305, 299, 306, 0, 307, 308, 309, 310,
980 311, 312, 290, 289, 314, 315, 315, 317, 319, 320,
981 322, 323, 0, 300, 0, 301, 290, 302, 291, 303,
982 305, 326, 306, 292, 307, 308, 309, 310, 311, 312,
983 290, 327, 314, 315, 315, 317, 319, 320, 322, 323,
985 324, 328, 325, 324, 324, 325, 325, 329, 330, 326,
986 331, 332, 334, 335, 336, 0, 337, 0, 338, 327,
987 341, 342, 343, 344, 345, 346, 347, 348, 349, 328,
988 0, 351, 352, 353, 355, 329, 330, 325, 331, 332,
989 334, 335, 336, 324, 337, 325, 338, 356, 341, 342,
990 343, 344, 345, 346, 347, 348, 349, 358, 350, 351,
991 352, 353, 355, 359, 354, 325, 350, 354, 354, 360,
992 362, 363, 364, 367, 371, 356, 372, 373, 374, 0,
993 375, 376, 377, 378, 379, 358, 350, 380, 381, 383,
994 384, 359, 385, 386, 350, 387, 388, 360, 362, 363,
996 364, 367, 371, 389, 372, 373, 374, 354, 375, 376,
997 377, 378, 379, 390, 391, 380, 381, 383, 384, 392,
998 385, 386, 393, 387, 388, 395, 396, 397, 398, 399,
999 400, 389, 401, 402, 403, 405, 406, 407, 408, 410,
1000 411, 390, 391, 412, 413, 414, 415, 392, 416, 417,
1001 393, 418, 419, 395, 396, 397, 398, 399, 400, 420,
1002 401, 402, 403, 405, 406, 407, 408, 410, 411, 421,
1003 422, 412, 413, 414, 415, 424, 416, 417, 425, 418,
1004 419, 430, 431, 433, 434, 435, 436, 420, 438, 439,
1005 440, 441, 442, 443, 445, 447, 448, 421, 422, 450,
1007 451, 452, 454, 424, 455, 456, 425, 457, 460, 430,
1008 431, 433, 434, 435, 436, 461, 438, 439, 440, 441,
1009 442, 443, 445, 447, 448, 462, 463, 450, 451, 452,
1010 454, 464, 455, 456, 466, 457, 460, 469, 470, 472,
1011 473, 475, 476, 461, 477, 478, 479, 480, 481, 482,
1012 484, 485, 490, 462, 463, 491, 493, 494, 495, 464,
1013 496, 497, 466, 498, 500, 469, 470, 472, 473, 475,
1014 476, 501, 477, 478, 479, 480, 481, 482, 484, 485,
1015 490, 504, 505, 491, 493, 494, 495, 506, 496, 497,
1016 509, 498, 500, 510, 512, 514, 517, 520, 521, 501,
1018 525, 526, 527, 528, 529, 0, 0, 0, 0, 504,
1019 505, 0, 0, 0, 0, 506, 0, 0, 509, 0,
1020 0, 510, 512, 514, 517, 520, 521, 0, 525, 526,
1021 527, 528, 529, 534, 534, 536, 536, 538, 538, 533,
1022 533, 533, 533, 533, 533, 533, 533, 533, 533, 533,
1023 533, 533, 533, 533, 533, 533, 533, 533, 533, 533,
1024 533, 533, 533, 533, 533, 533, 533, 533, 533, 533,
1025 533, 533, 533, 533, 533, 533, 533, 533, 533, 533,
1026 533, 533, 533, 533, 533, 533, 533, 533, 533, 533,
1027 533, 533, 533, 533, 533, 533, 533, 533, 533, 533,
1029 533, 533, 533, 533, 533, 533, 533, 533, 533, 533,
1033 /* The intent behind this definition is that it'll catch
1034 * any uses of REJECT which flex missed.
1036 #define REJECT reject_used_but_not_detected
1037 #define yymore() yymore_used_but_not_detected
1038 #define YY_MORE_ADJ 0
1039 #define YY_RESTORE_YY_MORE_OFFSET
1040 #line 1 "libmemcached/csl/scanner.l"
1041 /* vim:expandtab:shiftwidth=2:tabstop=2:smarttab:
1043 * Libmemcached library
1045 * Copyright (C) 2012 Data Differential, http://datadifferential.com/
1047 * Redistribution and use in source and binary forms, with or without
1048 * modification, are permitted provided that the following conditions are
1051 * * Redistributions of source code must retain the above copyright
1052 * notice, this list of conditions and the following disclaimer.
1054 * * Redistributions in binary form must reproduce the above
1055 * copyright notice, this list of conditions and the following disclaimer
1056 * in the documentation and/or other materials provided with the
1059 * * The names of its contributors may not be used to endorse or
1060 * promote products derived from this software without specific prior
1061 * written permission.
1063 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
1064 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
1065 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
1066 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
1067 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
1068 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
1069 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
1070 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
1071 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
1072 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
1073 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
1077 #line 70 "libmemcached/csl/scanner.l"
1081 #define PARAM config_get_extra(yyscanner)
1083 #define get_lex_chars(buffer, result, max_size, context) \
1085 if (context->pos >= context->length) \
1091 result= (int)(context->length - context->pos); \
1092 (size_t)result > (size_t)max_size ? result= max_size : 0; \
1093 memcpy(buffer, context->buf + context->pos, result); \
1094 context->pos += result; \
1098 #define YY_FATAL_ERROR(msg) \
1103 #define YY_INPUT(buffer, result, max_size) get_lex_chars(buffer, result, max_size, PARAM)
1105 #define YY_NO_INPUT 1
1106 #line 1107 "libmemcached/csl/scanner.cc"
1110 #ifndef YY_NO_UNISTD_H
1111 /* Special case for "unistd.h", since it is non-ANSI. We include it way
1112 * down here because we want the user's section 1 to have been scanned first.
1113 * The user has a chance to override it with an option.
1118 #ifndef YY_EXTRA_TYPE
1119 #define YY_EXTRA_TYPE void *
1122 /* Holds the entire state of the reentrant scanner. */
1126 /* User-defined. Not touched by flex. */
1127 YY_EXTRA_TYPE yyextra_r
;
1129 /* The rest are the same as the globals declared in the non-reentrant scanner. */
1130 FILE *yyin_r
, *yyout_r
;
1131 size_t yy_buffer_stack_top
; /**< index of top of stack. */
1132 size_t yy_buffer_stack_max
; /**< capacity of stack. */
1133 YY_BUFFER_STATE
* yy_buffer_stack
; /**< Stack as an array. */
1135 yy_size_t yy_n_chars
;
1140 int yy_did_buffer_switch_on_eof
;
1141 int yy_start_stack_ptr
;
1142 int yy_start_stack_depth
;
1143 int *yy_start_stack
;
1144 yy_state_type yy_last_accepting_state
;
1145 char* yy_last_accepting_cpos
;
1148 int yy_flex_debug_r
;
1156 }; /* end struct yyguts_t */
1158 static int yy_init_globals (yyscan_t yyscanner
);
1160 /* This must go here because YYSTYPE and YYLTYPE are included
1161 * from bison output in section 1.*/
1162 # define yylval yyg->yylval_r
1164 int config_lex_init (yyscan_t
* scanner
);
1166 int config_lex_init_extra (YY_EXTRA_TYPE user_defined
,yyscan_t
* scanner
);
1168 /* Accessor methods to globals.
1169 These are made visible to non-reentrant scanners for convenience. */
1171 int config_lex_destroy (yyscan_t yyscanner
);
1173 int config_get_debug (yyscan_t yyscanner
);
1175 void config_set_debug (int debug_flag
,yyscan_t yyscanner
);
1177 YY_EXTRA_TYPE
config_get_extra (yyscan_t yyscanner
);
1179 void config_set_extra (YY_EXTRA_TYPE user_defined
,yyscan_t yyscanner
);
1181 FILE *config_get_in (yyscan_t yyscanner
);
1183 void config_set_in (FILE * in_str
,yyscan_t yyscanner
);
1185 FILE *config_get_out (yyscan_t yyscanner
);
1187 void config_set_out (FILE * out_str
,yyscan_t yyscanner
);
1189 yy_size_t
config_get_leng (yyscan_t yyscanner
);
1191 char *config_get_text (yyscan_t yyscanner
);
1193 int config_get_lineno (yyscan_t yyscanner
);
1195 void config_set_lineno (int line_number
,yyscan_t yyscanner
);
1197 YYSTYPE
* config_get_lval (yyscan_t yyscanner
);
1199 void config_set_lval (YYSTYPE
* yylval_param
,yyscan_t yyscanner
);
1201 /* Macros after this point can all be overridden by user definitions in
1205 #ifndef YY_SKIP_YYWRAP
1207 extern "C" int config_wrap (yyscan_t yyscanner
);
1209 extern int config_wrap (yyscan_t yyscanner
);
1214 static void yy_flex_strncpy (char *,yyconst
char *,int ,yyscan_t yyscanner
);
1217 #ifdef YY_NEED_STRLEN
1218 static int yy_flex_strlen (yyconst
char * ,yyscan_t yyscanner
);
1224 static int yyinput (yyscan_t yyscanner
);
1226 static int input (yyscan_t yyscanner
);
1231 /* Amount of stuff to slurp up with each read. */
1232 #ifndef YY_READ_BUF_SIZE
1233 #define YY_READ_BUF_SIZE 8192
1236 /* Copy whatever the last rule matched to the standard output. */
1238 /* This used to be an fputs(), but since the string might contain NUL's,
1239 * we now use fwrite().
1241 #define ECHO fwrite( yytext, yyleng, 1, yyout )
1244 /* Gets input and stuffs it into "buf". number of characters read, or YY_NULL,
1245 * is returned in "result".
1248 #define YY_INPUT(buf,result,max_size) \
1249 if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \
1253 for ( n = 0; n < max_size && \
1254 (c = getc( yyin )) != EOF && c != '\n'; ++n ) \
1255 buf[n] = (char) c; \
1257 buf[n++] = (char) c; \
1258 if ( c == EOF && ferror( yyin ) ) \
1259 YY_FATAL_ERROR( "input in flex scanner failed" ); \
1265 while ( (result = fread(buf, 1, max_size, yyin))==0 && ferror(yyin)) \
1267 if( errno != EINTR) \
1269 YY_FATAL_ERROR( "input in flex scanner failed" ); \
1280 /* No semi-colon after return; correct usage is to write "yyterminate();" -
1281 * we don't want an extra ';' after the "return" because that will cause
1282 * some compilers to complain about unreachable statements.
1285 #define yyterminate() return YY_NULL
1288 /* Number of entries by which start-condition stack grows. */
1289 #ifndef YY_START_STACK_INCR
1290 #define YY_START_STACK_INCR 25
1293 /* Report a fatal error. */
1294 #ifndef YY_FATAL_ERROR
1295 #define YY_FATAL_ERROR(msg) yy_fatal_error( msg , yyscanner)
1298 /* end tables serialization structures and prototypes */
1300 /* Default declaration of generated scanner - a define so the user can
1301 * easily add parameters.
1304 #define YY_DECL_IS_OURS 1
1306 extern int config_lex \
1307 (YYSTYPE
* yylval_param
,yyscan_t yyscanner
);
1309 #define YY_DECL int config_lex \
1310 (YYSTYPE * yylval_param , yyscan_t yyscanner)
1311 #endif /* !YY_DECL */
1313 /* Code executed at the beginning of each rule, after yytext and yyleng
1316 #ifndef YY_USER_ACTION
1317 #define YY_USER_ACTION
1320 /* Code executed at the end of each rule. */
1322 #define YY_BREAK break;
1325 #define YY_RULE_SETUP \
1327 YY_CURRENT_BUFFER_LVALUE->yy_at_bol = \
1328 (yytext[yyleng - 1] == '\n'); \
1331 /** The main scanner function which does all the work.
1335 register yy_state_type yy_current_state
;
1336 register char *yy_cp
, *yy_bp
;
1337 register int yy_act
;
1338 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
1340 #line 112 "libmemcached/csl/scanner.l"
1344 #line 1345 "libmemcached/csl/scanner.cc"
1346 yylval
= yylval_param
;
1348 if ( !yyg
->yy_init
)
1356 if ( ! yyg
->yy_start
)
1357 yyg
->yy_start
= 1; /* first start state */
1365 if ( ! YY_CURRENT_BUFFER
) {
1366 config_ensure_buffer_stack (yyscanner
);
1367 YY_CURRENT_BUFFER_LVALUE
=
1368 config__create_buffer(yyin
,YY_BUF_SIZE
,yyscanner
);
1371 config__load_buffer_state(yyscanner
);
1374 while ( 1 ) /* loops until end-of-file is reached */
1376 yy_cp
= yyg
->yy_c_buf_p
;
1378 /* Support of yytext. */
1379 *yy_cp
= yyg
->yy_hold_char
;
1381 /* yy_bp points to the position in yy_ch_buf of the start of
1386 yy_current_state
= yyg
->yy_start
;
1387 yy_current_state
+= YY_AT_BOL();
1391 register YY_CHAR yy_c
= yy_ec
[YY_SC_TO_UI(*yy_cp
)];
1392 if ( yy_accept
[yy_current_state
] )
1394 yyg
->yy_last_accepting_state
= yy_current_state
;
1395 yyg
->yy_last_accepting_cpos
= yy_cp
;
1397 while ( yy_chk
[yy_base
[yy_current_state
] + yy_c
] != yy_current_state
)
1399 yy_current_state
= (int) yy_def
[yy_current_state
];
1400 if ( yy_current_state
>= 534 )
1401 yy_c
= yy_meta
[(unsigned int) yy_c
];
1403 yy_current_state
= yy_nxt
[yy_base
[yy_current_state
] + (unsigned int) yy_c
];
1406 while ( yy_current_state
!= 533 );
1407 yy_cp
= yyg
->yy_last_accepting_cpos
;
1408 yy_current_state
= yyg
->yy_last_accepting_state
;
1411 yy_act
= yy_accept
[yy_current_state
];
1413 YY_DO_BEFORE_ACTION
;
1415 do_action
: /* This label is used only to access EOF actions. */
1418 { /* beginning of action switch */
1419 case 0: /* must back up */
1420 /* undo the effects of YY_DO_BEFORE_ACTION */
1421 *yy_cp
= yyg
->yy_hold_char
;
1422 yy_cp
= yyg
->yy_last_accepting_cpos
;
1423 yy_current_state
= yyg
->yy_last_accepting_state
;
1424 goto yy_find_action
;
1428 #line 115 "libmemcached/csl/scanner.l"
1429 { return yytext
[0];}
1433 #line 117 "libmemcached/csl/scanner.l"
1434 { yylval
->number
= atoi(yytext
); return (NUMBER
); }
1438 #line 119 "libmemcached/csl/scanner.l"
1439 { yylval
->number
= atoi(yytext
+1); return PORT
; }
1443 #line 121 "libmemcached/csl/scanner.l"
1444 { yylval
->number
= atoi(yytext
+2); return WEIGHT_START
; }
1447 /* rule 5 can match eol */
1449 #line 123 "libmemcached/csl/scanner.l"
1450 ; /* skip whitespace */
1453 *yy_cp
= yyg
->yy_hold_char
; /* undo effects of setting up yytext */
1454 yyg
->yy_c_buf_p
= yy_cp
-= 1;
1455 YY_DO_BEFORE_ACTION
; /* set up yytext again */
1457 #line 126 "libmemcached/csl/scanner.l"
1464 #line 130 "libmemcached/csl/scanner.l"
1465 { yyextra
->begin
= yytext
; yyextra
->set_server(); return yyextra
->previous_token
= SERVER
; }
1469 #line 132 "libmemcached/csl/scanner.l"
1470 { yyextra
->begin
= yytext
; return yyextra
->previous_token
= SOCKET
; }
1474 #line 134 "libmemcached/csl/scanner.l"
1475 { yyextra
->begin
= yytext
; return yyextra
->previous_token
= BINARY_PROTOCOL
; }
1479 #line 135 "libmemcached/csl/scanner.l"
1480 { yyextra
->begin
= yytext
; return yyextra
->previous_token
= BUFFER_REQUESTS
; }
1484 #line 136 "libmemcached/csl/scanner.l"
1485 { yyextra
->begin
= yytext
; return yyextra
->previous_token
= CONFIGURE_FILE
; }
1489 #line 137 "libmemcached/csl/scanner.l"
1490 { yyextra
->begin
= yytext
; return yyextra
->previous_token
= CONNECT_TIMEOUT
; }
1494 #line 138 "libmemcached/csl/scanner.l"
1495 { yyextra
->begin
= yytext
; return yyextra
->previous_token
= DISTRIBUTION
; }
1499 #line 139 "libmemcached/csl/scanner.l"
1500 { yyextra
->begin
= yytext
; return yyextra
->previous_token
= HASH_WITH_NAMESPACE
; }
1504 #line 140 "libmemcached/csl/scanner.l"
1505 { yyextra
->begin
= yytext
; return yyextra
->previous_token
= HASH
; }
1509 #line 141 "libmemcached/csl/scanner.l"
1510 { yyextra
->begin
= yytext
; return yyextra
->previous_token
= IO_BYTES_WATERMARK
; }
1514 #line 142 "libmemcached/csl/scanner.l"
1515 { yyextra
->begin
= yytext
; return yyextra
->previous_token
= IO_KEY_PREFETCH
; }
1519 #line 143 "libmemcached/csl/scanner.l"
1520 { yyextra
->begin
= yytext
; return yyextra
->previous_token
= IO_MSG_WATERMARK
; }
1524 #line 144 "libmemcached/csl/scanner.l"
1525 { yyextra
->begin
= yytext
; return yyextra
->previous_token
= NOREPLY
; }
1529 #line 145 "libmemcached/csl/scanner.l"
1530 { yyextra
->begin
= yytext
; return yyextra
->previous_token
= NUMBER_OF_REPLICAS
; }
1534 #line 146 "libmemcached/csl/scanner.l"
1535 { yyextra
->begin
= yytext
; return yyextra
->previous_token
= POLL_TIMEOUT
; }
1539 #line 147 "libmemcached/csl/scanner.l"
1540 { yyextra
->begin
= yytext
; return yyextra
->previous_token
= RANDOMIZE_REPLICA_READ
; }
1544 #line 148 "libmemcached/csl/scanner.l"
1545 { yyextra
->begin
= yytext
; return yyextra
->previous_token
= RCV_TIMEOUT
; }
1549 #line 149 "libmemcached/csl/scanner.l"
1550 { yyextra
->begin
= yytext
; return yyextra
->previous_token
= REMOVE_FAILED_SERVERS
; }
1554 #line 150 "libmemcached/csl/scanner.l"
1555 { yyextra
->begin
= yytext
; return yyextra
->previous_token
= RETRY_TIMEOUT
; }
1559 #line 151 "libmemcached/csl/scanner.l"
1560 { yyextra
->begin
= yytext
; return yyextra
->previous_token
= SND_TIMEOUT
; }
1564 #line 152 "libmemcached/csl/scanner.l"
1565 { yyextra
->begin
= yytext
; return yyextra
->previous_token
= SOCKET_RECV_SIZE
; }
1569 #line 153 "libmemcached/csl/scanner.l"
1570 { yyextra
->begin
= yytext
; return yyextra
->previous_token
= SOCKET_SEND_SIZE
; }
1574 #line 154 "libmemcached/csl/scanner.l"
1575 { yyextra
->begin
= yytext
; return yyextra
->previous_token
= SORT_HOSTS
; }
1579 #line 155 "libmemcached/csl/scanner.l"
1580 { yyextra
->begin
= yytext
; return yyextra
->previous_token
= SUPPORT_CAS
; }
1584 #line 156 "libmemcached/csl/scanner.l"
1585 { yyextra
->begin
= yytext
; return yyextra
->previous_token
= _TCP_KEEPALIVE
; }
1589 #line 157 "libmemcached/csl/scanner.l"
1590 { yyextra
->begin
= yytext
; return yyextra
->previous_token
= _TCP_KEEPIDLE
; }
1594 #line 158 "libmemcached/csl/scanner.l"
1595 { yyextra
->begin
= yytext
; return yyextra
->previous_token
= _TCP_NODELAY
; }
1599 #line 159 "libmemcached/csl/scanner.l"
1600 { yyextra
->begin
= yytext
; return yyextra
->previous_token
= USE_UDP
; }
1604 #line 160 "libmemcached/csl/scanner.l"
1605 { yyextra
->begin
= yytext
; return yyextra
->previous_token
= USER_DATA
; }
1609 #line 161 "libmemcached/csl/scanner.l"
1610 { yyextra
->begin
= yytext
; return yyextra
->previous_token
= VERIFY_KEY
; }
1614 #line 163 "libmemcached/csl/scanner.l"
1615 { yyextra
->begin
= yytext
; return yyextra
->previous_token
= POOL_MIN
; }
1619 #line 164 "libmemcached/csl/scanner.l"
1620 { yyextra
->begin
= yytext
; return yyextra
->previous_token
= POOL_MAX
; }
1624 #line 166 "libmemcached/csl/scanner.l"
1625 { yyextra
->begin
= yytext
; return yyextra
->previous_token
= NAMESPACE
; }
1629 #line 168 "libmemcached/csl/scanner.l"
1630 { yyextra
->begin
= yytext
; return yyextra
->previous_token
= FETCH_VERSION
; }
1634 #line 170 "libmemcached/csl/scanner.l"
1635 { yyextra
->begin
= yytext
; return yyextra
->previous_token
= INCLUDE
; }
1639 #line 171 "libmemcached/csl/scanner.l"
1640 { yyextra
->begin
= yytext
; return yyextra
->previous_token
= RESET
; }
1644 #line 172 "libmemcached/csl/scanner.l"
1645 { yyextra
->begin
= yytext
; return yyextra
->previous_token
= PARSER_DEBUG
; }
1649 #line 173 "libmemcached/csl/scanner.l"
1650 { yyextra
->begin
= yytext
; return yyextra
->previous_token
= SERVERS
; }
1654 #line 174 "libmemcached/csl/scanner.l"
1655 { yyextra
->begin
= yytext
; return yyextra
->previous_token
= END
; }
1659 #line 175 "libmemcached/csl/scanner.l"
1660 { yyextra
->begin
= yytext
; return yyextra
->previous_token
= ERROR
; }
1664 #line 177 "libmemcached/csl/scanner.l"
1665 { return yyextra
->previous_token
= TRUE
; }
1669 #line 178 "libmemcached/csl/scanner.l"
1670 { return yyextra
->previous_token
= FALSE
; }
1674 #line 181 "libmemcached/csl/scanner.l"
1676 yyextra
->begin
= yytext
;
1677 return UNKNOWN_OPTION
;
1682 #line 186 "libmemcached/csl/scanner.l"
1683 { return CONSISTENT
; }
1687 #line 187 "libmemcached/csl/scanner.l"
1692 #line 188 "libmemcached/csl/scanner.l"
1697 #line 190 "libmemcached/csl/scanner.l"
1702 #line 191 "libmemcached/csl/scanner.l"
1707 #line 192 "libmemcached/csl/scanner.l"
1712 #line 193 "libmemcached/csl/scanner.l"
1713 { return FNV1A_64
; }
1717 #line 194 "libmemcached/csl/scanner.l"
1722 #line 195 "libmemcached/csl/scanner.l"
1723 { return FNV1A_32
; }
1727 #line 196 "libmemcached/csl/scanner.l"
1732 #line 197 "libmemcached/csl/scanner.l"
1737 #line 198 "libmemcached/csl/scanner.l"
1742 #line 200 "libmemcached/csl/scanner.l"
1744 yyextra
->hostname(yytext
, yyleng
, yylval
->server
);
1750 #line 205 "libmemcached/csl/scanner.l"
1752 if (yyextra
->is_server())
1754 yyextra
->hostname(yytext
, yyleng
, yylval
->server
);
1759 yyextra
->string_buffer(yytext
, yyleng
, yylval
->string
);
1765 /* rule 64 can match eol */
1767 #line 218 "libmemcached/csl/scanner.l"
1769 config_get_text(yyscanner
)[yyleng
-1]= 0;
1770 yyextra
->string_buffer(yytext
+1, yyleng
-2, yylval
->string
);
1771 return QUOTED_STRING
;
1776 #line 224 "libmemcached/csl/scanner.l"
1778 yyextra
->begin
= yytext
;
1784 #line 229 "libmemcached/csl/scanner.l"
1787 #line 1788 "libmemcached/csl/scanner.cc"
1788 case YY_STATE_EOF(INITIAL
):
1791 case YY_END_OF_BUFFER
:
1793 /* Amount of text matched not including the EOB char. */
1794 int yy_amount_of_matched_text
= (int) (yy_cp
- yyg
->yytext_ptr
) - 1;
1796 /* Undo the effects of YY_DO_BEFORE_ACTION. */
1797 *yy_cp
= yyg
->yy_hold_char
;
1798 YY_RESTORE_YY_MORE_OFFSET
1800 if ( YY_CURRENT_BUFFER_LVALUE
->yy_buffer_status
== YY_BUFFER_NEW
)
1802 /* We're scanning a new file or input source. It's
1803 * possible that this happened because the user
1804 * just pointed yyin at a new source and called
1805 * config_lex(). If so, then we have to assure
1806 * consistency between YY_CURRENT_BUFFER and our
1807 * globals. Here is the right place to do so, because
1808 * this is the first action (other than possibly a
1809 * back-up) that will match for the new input source.
1811 yyg
->yy_n_chars
= YY_CURRENT_BUFFER_LVALUE
->yy_n_chars
;
1812 YY_CURRENT_BUFFER_LVALUE
->yy_input_file
= yyin
;
1813 YY_CURRENT_BUFFER_LVALUE
->yy_buffer_status
= YY_BUFFER_NORMAL
;
1816 /* Note that here we test for yy_c_buf_p "<=" to the position
1817 * of the first EOB in the buffer, since yy_c_buf_p will
1818 * already have been incremented past the NUL character
1819 * (since all states make transitions on EOB to the
1820 * end-of-buffer state). Contrast this with the test
1823 if ( yyg
->yy_c_buf_p
<= &YY_CURRENT_BUFFER_LVALUE
->yy_ch_buf
[yyg
->yy_n_chars
] )
1824 { /* This was really a NUL. */
1825 yy_state_type yy_next_state
;
1827 yyg
->yy_c_buf_p
= yyg
->yytext_ptr
+ yy_amount_of_matched_text
;
1829 yy_current_state
= yy_get_previous_state( yyscanner
);
1831 /* Okay, we're now positioned to make the NUL
1832 * transition. We couldn't have
1833 * yy_get_previous_state() go ahead and do it
1834 * for us because it doesn't know how to deal
1835 * with the possibility of jamming (and we don't
1836 * want to build jamming into it because then it
1837 * will run more slowly).
1840 yy_next_state
= yy_try_NUL_trans( yy_current_state
, yyscanner
);
1842 yy_bp
= yyg
->yytext_ptr
+ YY_MORE_ADJ
;
1844 if ( yy_next_state
)
1846 /* Consume the NUL. */
1847 yy_cp
= ++yyg
->yy_c_buf_p
;
1848 yy_current_state
= yy_next_state
;
1854 yy_cp
= yyg
->yy_last_accepting_cpos
;
1855 yy_current_state
= yyg
->yy_last_accepting_state
;
1856 goto yy_find_action
;
1860 else switch ( yy_get_next_buffer( yyscanner
) )
1862 case EOB_ACT_END_OF_FILE
:
1864 yyg
->yy_did_buffer_switch_on_eof
= 0;
1866 if ( config_wrap(yyscanner
) )
1868 /* Note: because we've taken care in
1869 * yy_get_next_buffer() to have set up
1870 * yytext, we can now set up
1871 * yy_c_buf_p so that if some total
1872 * hoser (like flex itself) wants to
1873 * call the scanner after we return the
1874 * YY_NULL, it'll still work - another
1875 * YY_NULL will get returned.
1877 yyg
->yy_c_buf_p
= yyg
->yytext_ptr
+ YY_MORE_ADJ
;
1879 yy_act
= YY_STATE_EOF(YY_START
);
1885 if ( ! yyg
->yy_did_buffer_switch_on_eof
)
1891 case EOB_ACT_CONTINUE_SCAN
:
1893 yyg
->yytext_ptr
+ yy_amount_of_matched_text
;
1895 yy_current_state
= yy_get_previous_state( yyscanner
);
1897 yy_cp
= yyg
->yy_c_buf_p
;
1898 yy_bp
= yyg
->yytext_ptr
+ YY_MORE_ADJ
;
1901 case EOB_ACT_LAST_MATCH
:
1903 &YY_CURRENT_BUFFER_LVALUE
->yy_ch_buf
[yyg
->yy_n_chars
];
1905 yy_current_state
= yy_get_previous_state( yyscanner
);
1907 yy_cp
= yyg
->yy_c_buf_p
;
1908 yy_bp
= yyg
->yytext_ptr
+ YY_MORE_ADJ
;
1909 goto yy_find_action
;
1916 "fatal flex scanner internal error--no action found" );
1917 } /* end of action switch */
1918 } /* end of scanning one token */
1919 } /* end of config_lex */
1921 /* yy_get_next_buffer - try to read in a new buffer
1923 * Returns a code representing an action:
1924 * EOB_ACT_LAST_MATCH -
1925 * EOB_ACT_CONTINUE_SCAN - continue scanning from current position
1926 * EOB_ACT_END_OF_FILE - end of file
1928 static int yy_get_next_buffer (yyscan_t yyscanner
)
1930 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
1931 register char *dest
= YY_CURRENT_BUFFER_LVALUE
->yy_ch_buf
;
1932 register char *source
= yyg
->yytext_ptr
;
1933 register int number_to_move
, i
;
1936 if ( yyg
->yy_c_buf_p
> &YY_CURRENT_BUFFER_LVALUE
->yy_ch_buf
[yyg
->yy_n_chars
+ 1] )
1938 "fatal flex scanner internal error--end of buffer missed" );
1940 if ( YY_CURRENT_BUFFER_LVALUE
->yy_fill_buffer
== 0 )
1941 { /* Don't try to fill the buffer, so this is an EOF. */
1942 if ( yyg
->yy_c_buf_p
- yyg
->yytext_ptr
- YY_MORE_ADJ
== 1 )
1944 /* We matched a single character, the EOB, so
1945 * treat this as a final EOF.
1947 return EOB_ACT_END_OF_FILE
;
1952 /* We matched some text prior to the EOB, first
1955 return EOB_ACT_LAST_MATCH
;
1959 /* Try to read more data. */
1961 /* First move last chars to start of buffer. */
1962 number_to_move
= (int) (yyg
->yy_c_buf_p
- yyg
->yytext_ptr
) - 1;
1964 for ( i
= 0; i
< number_to_move
; ++i
)
1965 *(dest
++) = *(source
++);
1967 if ( YY_CURRENT_BUFFER_LVALUE
->yy_buffer_status
== YY_BUFFER_EOF_PENDING
)
1968 /* don't do the read, it's not guaranteed to return an EOF,
1971 YY_CURRENT_BUFFER_LVALUE
->yy_n_chars
= yyg
->yy_n_chars
= 0;
1975 yy_size_t num_to_read
=
1976 YY_CURRENT_BUFFER_LVALUE
->yy_buf_size
- number_to_move
- 1;
1978 while ( num_to_read
<= 0 )
1979 { /* Not enough room in the buffer - grow it. */
1981 /* just a shorter name for the current buffer */
1982 YY_BUFFER_STATE b
= YY_CURRENT_BUFFER
;
1984 int yy_c_buf_p_offset
=
1985 (int) (yyg
->yy_c_buf_p
- b
->yy_ch_buf
);
1987 if ( b
->yy_is_our_buffer
)
1989 yy_size_t new_size
= b
->yy_buf_size
* 2;
1991 if ( new_size
<= 0 )
1992 b
->yy_buf_size
+= b
->yy_buf_size
/ 8;
1994 b
->yy_buf_size
*= 2;
1996 b
->yy_ch_buf
= (char *)
1997 /* Include room in for 2 EOB chars. */
1998 config_realloc((void *) b
->yy_ch_buf
,b
->yy_buf_size
+ 2 ,yyscanner
);
2001 /* Can't grow it, we don't own it. */
2004 if ( ! b
->yy_ch_buf
)
2006 "fatal error - scanner input buffer overflow" );
2008 yyg
->yy_c_buf_p
= &b
->yy_ch_buf
[yy_c_buf_p_offset
];
2010 num_to_read
= YY_CURRENT_BUFFER_LVALUE
->yy_buf_size
-
2015 if ( num_to_read
> YY_READ_BUF_SIZE
)
2016 num_to_read
= YY_READ_BUF_SIZE
;
2018 /* Read in more data. */
2019 YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE
->yy_ch_buf
[number_to_move
]),
2020 yyg
->yy_n_chars
, num_to_read
);
2022 YY_CURRENT_BUFFER_LVALUE
->yy_n_chars
= yyg
->yy_n_chars
;
2025 if ( yyg
->yy_n_chars
== 0 )
2027 if ( number_to_move
== YY_MORE_ADJ
)
2029 ret_val
= EOB_ACT_END_OF_FILE
;
2030 config_restart(yyin
,yyscanner
);
2035 ret_val
= EOB_ACT_LAST_MATCH
;
2036 YY_CURRENT_BUFFER_LVALUE
->yy_buffer_status
=
2037 YY_BUFFER_EOF_PENDING
;
2042 ret_val
= EOB_ACT_CONTINUE_SCAN
;
2044 if ((yy_size_t
) (yyg
->yy_n_chars
+ number_to_move
) > YY_CURRENT_BUFFER_LVALUE
->yy_buf_size
) {
2045 /* Extend the array by 50%, plus the number we really need. */
2046 yy_size_t new_size
= yyg
->yy_n_chars
+ number_to_move
+ (yyg
->yy_n_chars
>> 1);
2047 YY_CURRENT_BUFFER_LVALUE
->yy_ch_buf
= (char *) config_realloc((void *) YY_CURRENT_BUFFER_LVALUE
->yy_ch_buf
,new_size
,yyscanner
);
2048 if ( ! YY_CURRENT_BUFFER_LVALUE
->yy_ch_buf
)
2049 YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" );
2052 yyg
->yy_n_chars
+= number_to_move
;
2053 YY_CURRENT_BUFFER_LVALUE
->yy_ch_buf
[yyg
->yy_n_chars
] = YY_END_OF_BUFFER_CHAR
;
2054 YY_CURRENT_BUFFER_LVALUE
->yy_ch_buf
[yyg
->yy_n_chars
+ 1] = YY_END_OF_BUFFER_CHAR
;
2056 yyg
->yytext_ptr
= &YY_CURRENT_BUFFER_LVALUE
->yy_ch_buf
[0];
2061 /* yy_get_previous_state - get the state just before the EOB char was reached */
2063 static yy_state_type
yy_get_previous_state (yyscan_t yyscanner
)
2065 register yy_state_type yy_current_state
;
2066 register char *yy_cp
;
2067 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
2069 yy_current_state
= yyg
->yy_start
;
2070 yy_current_state
+= YY_AT_BOL();
2072 for ( yy_cp
= yyg
->yytext_ptr
+ YY_MORE_ADJ
; yy_cp
< yyg
->yy_c_buf_p
; ++yy_cp
)
2074 register YY_CHAR yy_c
= (*yy_cp
? yy_ec
[YY_SC_TO_UI(*yy_cp
)] : 1);
2075 if ( yy_accept
[yy_current_state
] )
2077 yyg
->yy_last_accepting_state
= yy_current_state
;
2078 yyg
->yy_last_accepting_cpos
= yy_cp
;
2080 while ( yy_chk
[yy_base
[yy_current_state
] + yy_c
] != yy_current_state
)
2082 yy_current_state
= (int) yy_def
[yy_current_state
];
2083 if ( yy_current_state
>= 534 )
2084 yy_c
= yy_meta
[(unsigned int) yy_c
];
2086 yy_current_state
= yy_nxt
[yy_base
[yy_current_state
] + (unsigned int) yy_c
];
2089 return yy_current_state
;
2092 /* yy_try_NUL_trans - try to make a transition on the NUL character
2095 * next_state = yy_try_NUL_trans( current_state );
2097 static yy_state_type
yy_try_NUL_trans (yy_state_type yy_current_state
, yyscan_t yyscanner
)
2099 register int yy_is_jam
;
2100 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
; /* This var may be unused depending upon options. */
2101 register char *yy_cp
= yyg
->yy_c_buf_p
;
2103 register YY_CHAR yy_c
= 1;
2104 if ( yy_accept
[yy_current_state
] )
2106 yyg
->yy_last_accepting_state
= yy_current_state
;
2107 yyg
->yy_last_accepting_cpos
= yy_cp
;
2109 while ( yy_chk
[yy_base
[yy_current_state
] + yy_c
] != yy_current_state
)
2111 yy_current_state
= (int) yy_def
[yy_current_state
];
2112 if ( yy_current_state
>= 534 )
2113 yy_c
= yy_meta
[(unsigned int) yy_c
];
2115 yy_current_state
= yy_nxt
[yy_base
[yy_current_state
] + (unsigned int) yy_c
];
2116 yy_is_jam
= (yy_current_state
== 533);
2118 return yy_is_jam
? 0 : yy_current_state
;
2123 static int yyinput (yyscan_t yyscanner
)
2125 static int input (yyscan_t yyscanner
)
2130 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
2132 *yyg
->yy_c_buf_p
= yyg
->yy_hold_char
;
2134 if ( *yyg
->yy_c_buf_p
== YY_END_OF_BUFFER_CHAR
)
2136 /* yy_c_buf_p now points to the character we want to return.
2137 * If this occurs *before* the EOB characters, then it's a
2138 * valid NUL; if not, then we've hit the end of the buffer.
2140 if ( yyg
->yy_c_buf_p
< &YY_CURRENT_BUFFER_LVALUE
->yy_ch_buf
[yyg
->yy_n_chars
] )
2141 /* This was really a NUL. */
2142 *yyg
->yy_c_buf_p
= '\0';
2145 { /* need more input */
2146 yy_size_t offset
= yyg
->yy_c_buf_p
- yyg
->yytext_ptr
;
2149 switch ( yy_get_next_buffer( yyscanner
) )
2151 case EOB_ACT_LAST_MATCH
:
2152 /* This happens because yy_g_n_b()
2153 * sees that we've accumulated a
2154 * token and flags that we need to
2155 * try matching the token before
2156 * proceeding. But for input(),
2157 * there's no matching to consider.
2158 * So convert the EOB_ACT_LAST_MATCH
2159 * to EOB_ACT_END_OF_FILE.
2162 /* Reset buffer status. */
2163 config_restart(yyin
,yyscanner
);
2167 case EOB_ACT_END_OF_FILE
:
2169 if ( config_wrap(yyscanner
) )
2172 if ( ! yyg
->yy_did_buffer_switch_on_eof
)
2175 return yyinput(yyscanner
);
2177 return input(yyscanner
);
2181 case EOB_ACT_CONTINUE_SCAN
:
2182 yyg
->yy_c_buf_p
= yyg
->yytext_ptr
+ offset
;
2188 c
= *(unsigned char *) yyg
->yy_c_buf_p
; /* cast for 8-bit char's */
2189 *yyg
->yy_c_buf_p
= '\0'; /* preserve yytext */
2190 yyg
->yy_hold_char
= *++yyg
->yy_c_buf_p
;
2192 YY_CURRENT_BUFFER_LVALUE
->yy_at_bol
= (c
== '\n');
2196 #endif /* ifndef YY_NO_INPUT */
2198 /** Immediately switch to a different input stream.
2199 * @param input_file A readable stream.
2200 * @param yyscanner The scanner object.
2201 * @note This function does not reset the start condition to @c INITIAL .
2203 void config_restart (FILE * input_file
, yyscan_t yyscanner
)
2205 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
2207 if ( ! YY_CURRENT_BUFFER
){
2208 config_ensure_buffer_stack (yyscanner
);
2209 YY_CURRENT_BUFFER_LVALUE
=
2210 config__create_buffer(yyin
,YY_BUF_SIZE
,yyscanner
);
2213 config__init_buffer(YY_CURRENT_BUFFER
,input_file
,yyscanner
);
2214 config__load_buffer_state(yyscanner
);
2217 /** Switch to a different input buffer.
2218 * @param new_buffer The new input buffer.
2219 * @param yyscanner The scanner object.
2221 void config__switch_to_buffer (YY_BUFFER_STATE new_buffer
, yyscan_t yyscanner
)
2223 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
2225 /* TODO. We should be able to replace this entire function body
2227 * config_pop_buffer_state();
2228 * config_push_buffer_state(new_buffer);
2230 config_ensure_buffer_stack (yyscanner
);
2231 if ( YY_CURRENT_BUFFER
== new_buffer
)
2234 if ( YY_CURRENT_BUFFER
)
2236 /* Flush out information for old buffer. */
2237 *yyg
->yy_c_buf_p
= yyg
->yy_hold_char
;
2238 YY_CURRENT_BUFFER_LVALUE
->yy_buf_pos
= yyg
->yy_c_buf_p
;
2239 YY_CURRENT_BUFFER_LVALUE
->yy_n_chars
= yyg
->yy_n_chars
;
2242 YY_CURRENT_BUFFER_LVALUE
= new_buffer
;
2243 config__load_buffer_state(yyscanner
);
2245 /* We don't actually know whether we did this switch during
2246 * EOF (config_wrap()) processing, but the only time this flag
2247 * is looked at is after config_wrap() is called, so it's safe
2248 * to go ahead and always set it.
2250 yyg
->yy_did_buffer_switch_on_eof
= 1;
2253 static void config__load_buffer_state (yyscan_t yyscanner
)
2255 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
2256 yyg
->yy_n_chars
= YY_CURRENT_BUFFER_LVALUE
->yy_n_chars
;
2257 yyg
->yytext_ptr
= yyg
->yy_c_buf_p
= YY_CURRENT_BUFFER_LVALUE
->yy_buf_pos
;
2258 yyin
= YY_CURRENT_BUFFER_LVALUE
->yy_input_file
;
2259 yyg
->yy_hold_char
= *yyg
->yy_c_buf_p
;
2262 /** Allocate and initialize an input buffer state.
2263 * @param file A readable stream.
2264 * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE.
2265 * @param yyscanner The scanner object.
2266 * @return the allocated buffer state.
2268 YY_BUFFER_STATE
config__create_buffer (FILE * file
, int size
, yyscan_t yyscanner
)
2272 b
= (YY_BUFFER_STATE
) config_alloc(sizeof( struct yy_buffer_state
) ,yyscanner
);
2274 YY_FATAL_ERROR( "out of dynamic memory in config__create_buffer()" );
2276 b
->yy_buf_size
= size
;
2278 /* yy_ch_buf has to be 2 characters longer than the size given because
2279 * we need to put in 2 end-of-buffer characters.
2281 b
->yy_ch_buf
= (char *) config_alloc(b
->yy_buf_size
+ 2 ,yyscanner
);
2282 if ( ! b
->yy_ch_buf
)
2283 YY_FATAL_ERROR( "out of dynamic memory in config__create_buffer()" );
2285 b
->yy_is_our_buffer
= 1;
2287 config__init_buffer(b
,file
,yyscanner
);
2292 /** Destroy the buffer.
2293 * @param b a buffer created with config__create_buffer()
2294 * @param yyscanner The scanner object.
2296 void config__delete_buffer (YY_BUFFER_STATE b
, yyscan_t yyscanner
)
2298 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
2303 if ( b
== YY_CURRENT_BUFFER
) /* Not sure if we should pop here. */
2304 YY_CURRENT_BUFFER_LVALUE
= (YY_BUFFER_STATE
) 0;
2306 if ( b
->yy_is_our_buffer
)
2307 config_free((void *) b
->yy_ch_buf
,yyscanner
);
2309 config_free((void *) b
,yyscanner
);
2312 /* Initializes or reinitializes a buffer.
2313 * This function is sometimes called more than once on the same buffer,
2314 * such as during a config_restart() or at EOF.
2316 static void config__init_buffer (YY_BUFFER_STATE b
, FILE * file
, yyscan_t yyscanner
)
2320 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
2322 config__flush_buffer(b
,yyscanner
);
2324 b
->yy_input_file
= file
;
2325 b
->yy_fill_buffer
= 1;
2327 /* If b is the current buffer, then config__init_buffer was _probably_
2328 * called from config_restart() or through yy_get_next_buffer.
2329 * In that case, we don't want to reset the lineno or column.
2331 if (b
!= YY_CURRENT_BUFFER
){
2332 b
->yy_bs_lineno
= 1;
2333 b
->yy_bs_column
= 0;
2336 b
->yy_is_interactive
= 0;
2341 /** Discard all buffered characters. On the next scan, YY_INPUT will be called.
2342 * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER.
2343 * @param yyscanner The scanner object.
2345 void config__flush_buffer (YY_BUFFER_STATE b
, yyscan_t yyscanner
)
2347 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
2353 /* We always need two end-of-buffer characters. The first causes
2354 * a transition to the end-of-buffer state. The second causes
2355 * a jam in that state.
2357 b
->yy_ch_buf
[0] = YY_END_OF_BUFFER_CHAR
;
2358 b
->yy_ch_buf
[1] = YY_END_OF_BUFFER_CHAR
;
2360 b
->yy_buf_pos
= &b
->yy_ch_buf
[0];
2363 b
->yy_buffer_status
= YY_BUFFER_NEW
;
2365 if ( b
== YY_CURRENT_BUFFER
)
2366 config__load_buffer_state(yyscanner
);
2369 /** Pushes the new state onto the stack. The new state becomes
2370 * the current state. This function will allocate the stack
2372 * @param new_buffer The new state.
2373 * @param yyscanner The scanner object.
2375 void config_push_buffer_state (YY_BUFFER_STATE new_buffer
, yyscan_t yyscanner
)
2377 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
2378 if (new_buffer
== NULL
)
2381 config_ensure_buffer_stack(yyscanner
);
2383 /* This block is copied from config__switch_to_buffer. */
2384 if ( YY_CURRENT_BUFFER
)
2386 /* Flush out information for old buffer. */
2387 *yyg
->yy_c_buf_p
= yyg
->yy_hold_char
;
2388 YY_CURRENT_BUFFER_LVALUE
->yy_buf_pos
= yyg
->yy_c_buf_p
;
2389 YY_CURRENT_BUFFER_LVALUE
->yy_n_chars
= yyg
->yy_n_chars
;
2392 /* Only push if top exists. Otherwise, replace top. */
2393 if (YY_CURRENT_BUFFER
)
2394 yyg
->yy_buffer_stack_top
++;
2395 YY_CURRENT_BUFFER_LVALUE
= new_buffer
;
2397 /* copied from config__switch_to_buffer. */
2398 config__load_buffer_state(yyscanner
);
2399 yyg
->yy_did_buffer_switch_on_eof
= 1;
2402 /** Removes and deletes the top of the stack, if present.
2403 * The next element becomes the new top.
2404 * @param yyscanner The scanner object.
2406 void config_pop_buffer_state (yyscan_t yyscanner
)
2408 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
2409 if (!YY_CURRENT_BUFFER
)
2412 config__delete_buffer(YY_CURRENT_BUFFER
,yyscanner
);
2413 YY_CURRENT_BUFFER_LVALUE
= NULL
;
2414 if (yyg
->yy_buffer_stack_top
> 0)
2415 --yyg
->yy_buffer_stack_top
;
2417 if (YY_CURRENT_BUFFER
) {
2418 config__load_buffer_state(yyscanner
);
2419 yyg
->yy_did_buffer_switch_on_eof
= 1;
2423 /* Allocates the stack if it does not exist.
2424 * Guarantees space for at least one push.
2426 static void config_ensure_buffer_stack (yyscan_t yyscanner
)
2428 yy_size_t num_to_alloc
;
2429 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
2431 if (!yyg
->yy_buffer_stack
) {
2433 /* First allocation is just for 2 elements, since we don't know if this
2434 * scanner will even need a stack. We use 2 instead of 1 to avoid an
2435 * immediate realloc on the next call.
2438 yyg
->yy_buffer_stack
= (struct yy_buffer_state
**)config_alloc
2439 (num_to_alloc
* sizeof(struct yy_buffer_state
*)
2441 if ( ! yyg
->yy_buffer_stack
)
2442 YY_FATAL_ERROR( "out of dynamic memory in config_ensure_buffer_stack()" );
2444 memset(yyg
->yy_buffer_stack
, 0, num_to_alloc
* sizeof(struct yy_buffer_state
*));
2446 yyg
->yy_buffer_stack_max
= num_to_alloc
;
2447 yyg
->yy_buffer_stack_top
= 0;
2451 if (yyg
->yy_buffer_stack_top
>= (yyg
->yy_buffer_stack_max
) - 1){
2453 /* Increase the buffer to prepare for a possible push. */
2454 int grow_size
= 8 /* arbitrary grow size */;
2456 num_to_alloc
= yyg
->yy_buffer_stack_max
+ grow_size
;
2457 yyg
->yy_buffer_stack
= (struct yy_buffer_state
**)config_realloc
2458 (yyg
->yy_buffer_stack
,
2459 num_to_alloc
* sizeof(struct yy_buffer_state
*)
2461 if ( ! yyg
->yy_buffer_stack
)
2462 YY_FATAL_ERROR( "out of dynamic memory in config_ensure_buffer_stack()" );
2464 /* zero only the new slots.*/
2465 memset(yyg
->yy_buffer_stack
+ yyg
->yy_buffer_stack_max
, 0, grow_size
* sizeof(struct yy_buffer_state
*));
2466 yyg
->yy_buffer_stack_max
= num_to_alloc
;
2470 /** Setup the input buffer state to scan directly from a user-specified character buffer.
2471 * @param base the character buffer
2472 * @param size the size in bytes of the character buffer
2473 * @param yyscanner The scanner object.
2474 * @return the newly allocated buffer state object.
2476 YY_BUFFER_STATE
config__scan_buffer (char * base
, yy_size_t size
, yyscan_t yyscanner
)
2481 base
[size
-2] != YY_END_OF_BUFFER_CHAR
||
2482 base
[size
-1] != YY_END_OF_BUFFER_CHAR
)
2483 /* They forgot to leave room for the EOB's. */
2486 b
= (YY_BUFFER_STATE
) config_alloc(sizeof( struct yy_buffer_state
) ,yyscanner
);
2488 YY_FATAL_ERROR( "out of dynamic memory in config__scan_buffer()" );
2490 b
->yy_buf_size
= size
- 2; /* "- 2" to take care of EOB's */
2491 b
->yy_buf_pos
= b
->yy_ch_buf
= base
;
2492 b
->yy_is_our_buffer
= 0;
2493 b
->yy_input_file
= 0;
2494 b
->yy_n_chars
= b
->yy_buf_size
;
2495 b
->yy_is_interactive
= 0;
2497 b
->yy_fill_buffer
= 0;
2498 b
->yy_buffer_status
= YY_BUFFER_NEW
;
2500 config__switch_to_buffer(b
,yyscanner
);
2505 /** Setup the input buffer state to scan a string. The next call to config_lex() will
2506 * scan from a @e copy of @a str.
2507 * @param yystr a NUL-terminated string to scan
2508 * @param yyscanner The scanner object.
2509 * @return the newly allocated buffer state object.
2510 * @note If you want to scan bytes that may contain NUL values, then use
2511 * config__scan_bytes() instead.
2513 YY_BUFFER_STATE
config__scan_string (yyconst
char * yystr
, yyscan_t yyscanner
)
2516 return config__scan_bytes(yystr
,strlen(yystr
) ,yyscanner
);
2519 /** Setup the input buffer state to scan the given bytes. The next call to config_lex() will
2520 * scan from a @e copy of @a bytes.
2521 * @param bytes the byte buffer to scan
2522 * @param len the number of bytes in the buffer pointed to by @a bytes.
2523 * @param yyscanner The scanner object.
2524 * @return the newly allocated buffer state object.
2526 YY_BUFFER_STATE
config__scan_bytes (yyconst
char * yybytes
, yy_size_t _yybytes_len
, yyscan_t yyscanner
)
2532 /* Get memory for full buffer, including space for trailing EOB's. */
2533 n
= _yybytes_len
+ 2;
2534 buf
= (char *) config_alloc(n
,yyscanner
);
2536 YY_FATAL_ERROR( "out of dynamic memory in config__scan_bytes()" );
2538 for ( i
= 0; i
< _yybytes_len
; ++i
)
2539 buf
[i
] = yybytes
[i
];
2541 buf
[_yybytes_len
] = buf
[_yybytes_len
+1] = YY_END_OF_BUFFER_CHAR
;
2543 b
= config__scan_buffer(buf
,n
,yyscanner
);
2545 YY_FATAL_ERROR( "bad buffer in config__scan_bytes()" );
2547 /* It's okay to grow etc. this buffer, and we should throw it
2548 * away when we're done.
2550 b
->yy_is_our_buffer
= 1;
2555 #ifndef YY_EXIT_FAILURE
2556 #define YY_EXIT_FAILURE 2
2559 static void yy_fatal_error (yyconst
char* msg
, yyscan_t yyscanner
)
2561 (void) fprintf( stderr
, "%s\n", msg
);
2562 exit( YY_EXIT_FAILURE
);
2565 /* Redefine yyless() so it works in section 3 code. */
2571 /* Undo effects of setting up yytext. */ \
2572 int yyless_macro_arg = (n); \
2573 YY_LESS_LINENO(yyless_macro_arg);\
2574 yytext[yyleng] = yyg->yy_hold_char; \
2575 yyg->yy_c_buf_p = yytext + yyless_macro_arg; \
2576 yyg->yy_hold_char = *yyg->yy_c_buf_p; \
2577 *yyg->yy_c_buf_p = '\0'; \
2578 yyleng = yyless_macro_arg; \
2582 /* Accessor methods (get/set functions) to struct members. */
2584 /** Get the user-defined data for this scanner.
2585 * @param yyscanner The scanner object.
2587 YY_EXTRA_TYPE
config_get_extra (yyscan_t yyscanner
)
2589 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
2593 /** Get the current line number.
2594 * @param yyscanner The scanner object.
2596 int config_get_lineno (yyscan_t yyscanner
)
2598 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
2600 if (! YY_CURRENT_BUFFER
)
2606 /** Get the current column number.
2607 * @param yyscanner The scanner object.
2609 int config_get_column (yyscan_t yyscanner
)
2611 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
2613 if (! YY_CURRENT_BUFFER
)
2619 /** Get the input stream.
2620 * @param yyscanner The scanner object.
2622 FILE *config_get_in (yyscan_t yyscanner
)
2624 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
2628 /** Get the output stream.
2629 * @param yyscanner The scanner object.
2631 FILE *config_get_out (yyscan_t yyscanner
)
2633 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
2637 /** Get the length of the current token.
2638 * @param yyscanner The scanner object.
2640 yy_size_t
config_get_leng (yyscan_t yyscanner
)
2642 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
2646 /** Get the current token.
2647 * @param yyscanner The scanner object.
2650 char *config_get_text (yyscan_t yyscanner
)
2652 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
2656 /** Set the user-defined data. This data is never touched by the scanner.
2657 * @param user_defined The data to be associated with this scanner.
2658 * @param yyscanner The scanner object.
2660 void config_set_extra (YY_EXTRA_TYPE user_defined
, yyscan_t yyscanner
)
2662 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
2663 yyextra
= user_defined
;
2666 /** Set the current line number.
2667 * @param line_number
2668 * @param yyscanner The scanner object.
2670 void config_set_lineno (int line_number
, yyscan_t yyscanner
)
2672 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
2674 /* lineno is only valid if an input buffer exists. */
2675 if (! YY_CURRENT_BUFFER
)
2676 yy_fatal_error( "config_set_lineno called with no buffer" , yyscanner
);
2678 yylineno
= line_number
;
2681 /** Set the current column.
2682 * @param line_number
2683 * @param yyscanner The scanner object.
2685 void config_set_column (int column_no
, yyscan_t yyscanner
)
2687 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
2689 /* column is only valid if an input buffer exists. */
2690 if (! YY_CURRENT_BUFFER
)
2691 yy_fatal_error( "config_set_column called with no buffer" , yyscanner
);
2693 yycolumn
= column_no
;
2696 /** Set the input stream. This does not discard the current
2698 * @param in_str A readable stream.
2699 * @param yyscanner The scanner object.
2700 * @see config__switch_to_buffer
2702 void config_set_in (FILE * in_str
, yyscan_t yyscanner
)
2704 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
2708 void config_set_out (FILE * out_str
, yyscan_t yyscanner
)
2710 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
2714 int config_get_debug (yyscan_t yyscanner
)
2716 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
2717 return yy_flex_debug
;
2720 void config_set_debug (int bdebug
, yyscan_t yyscanner
)
2722 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
2723 yy_flex_debug
= bdebug
;
2726 /* Accessor methods for yylval and yylloc */
2728 YYSTYPE
* config_get_lval (yyscan_t yyscanner
)
2730 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
2734 void config_set_lval (YYSTYPE
* yylval_param
, yyscan_t yyscanner
)
2736 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
2737 yylval
= yylval_param
;
2740 /* User-visible API */
2742 /* config_lex_init is special because it creates the scanner itself, so it is
2743 * the ONLY reentrant function that doesn't take the scanner as the last argument.
2744 * That's why we explicitly handle the declaration, instead of using our macros.
2747 int config_lex_init(yyscan_t
* ptr_yy_globals
)
2750 if (ptr_yy_globals
== NULL
){
2755 *ptr_yy_globals
= (yyscan_t
) config_alloc ( sizeof( struct yyguts_t
), NULL
);
2757 if (*ptr_yy_globals
== NULL
){
2762 /* By setting to 0xAA, we expose bugs in yy_init_globals. Leave at 0x00 for releases. */
2763 memset(*ptr_yy_globals
,0x00,sizeof(struct yyguts_t
));
2765 return yy_init_globals ( *ptr_yy_globals
);
2768 /* config_lex_init_extra has the same functionality as config_lex_init, but follows the
2769 * convention of taking the scanner as the last argument. Note however, that
2770 * this is a *pointer* to a scanner, as it will be allocated by this call (and
2771 * is the reason, too, why this function also must handle its own declaration).
2772 * The user defined value in the first argument will be available to config_alloc in
2773 * the yyextra field.
2776 int config_lex_init_extra(YY_EXTRA_TYPE yy_user_defined
,yyscan_t
* ptr_yy_globals
)
2779 struct yyguts_t dummy_yyguts
;
2781 config_set_extra (yy_user_defined
, &dummy_yyguts
);
2783 if (ptr_yy_globals
== NULL
){
2788 *ptr_yy_globals
= (yyscan_t
) config_alloc ( sizeof( struct yyguts_t
), &dummy_yyguts
);
2790 if (*ptr_yy_globals
== NULL
){
2795 /* By setting to 0xAA, we expose bugs in
2796 yy_init_globals. Leave at 0x00 for releases. */
2797 memset(*ptr_yy_globals
,0x00,sizeof(struct yyguts_t
));
2799 config_set_extra (yy_user_defined
, *ptr_yy_globals
);
2801 return yy_init_globals ( *ptr_yy_globals
);
2804 static int yy_init_globals (yyscan_t yyscanner
)
2806 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
2807 /* Initialization is the same as for the non-reentrant scanner.
2808 * This function is called from config_lex_destroy(), so don't allocate here.
2811 yyg
->yy_buffer_stack
= 0;
2812 yyg
->yy_buffer_stack_top
= 0;
2813 yyg
->yy_buffer_stack_max
= 0;
2814 yyg
->yy_c_buf_p
= (char *) 0;
2818 yyg
->yy_start_stack_ptr
= 0;
2819 yyg
->yy_start_stack_depth
= 0;
2820 yyg
->yy_start_stack
= NULL
;
2822 /* Defined in main.c */
2831 /* For future reference: Set errno on error, since we are called by
2837 /* config_lex_destroy is for both reentrant and non-reentrant scanners. */
2838 int config_lex_destroy (yyscan_t yyscanner
)
2840 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
2842 /* Pop the buffer stack, destroying each element. */
2843 while(YY_CURRENT_BUFFER
){
2844 config__delete_buffer(YY_CURRENT_BUFFER
,yyscanner
);
2845 YY_CURRENT_BUFFER_LVALUE
= NULL
;
2846 config_pop_buffer_state(yyscanner
);
2849 /* Destroy the stack itself. */
2850 config_free(yyg
->yy_buffer_stack
,yyscanner
);
2851 yyg
->yy_buffer_stack
= NULL
;
2853 /* Destroy the start condition stack. */
2854 config_free(yyg
->yy_start_stack
,yyscanner
);
2855 yyg
->yy_start_stack
= NULL
;
2857 /* Reset the globals. This is important in a non-reentrant scanner so the next time
2858 * config_lex() is called, initialization will occur. */
2859 yy_init_globals( yyscanner
);
2861 /* Destroy the main struct (reentrant only). */
2862 config_free ( yyscanner
, yyscanner
);
2868 * Internal utility routines.
2872 static void yy_flex_strncpy (char* s1
, yyconst
char * s2
, int n
, yyscan_t yyscanner
)
2875 for ( i
= 0; i
< n
; ++i
)
2880 #ifdef YY_NEED_STRLEN
2881 static int yy_flex_strlen (yyconst
char * s
, yyscan_t yyscanner
)
2884 for ( n
= 0; s
[n
]; ++n
)
2891 void *config_alloc (yy_size_t size
, yyscan_t yyscanner
)
2893 return (void *) malloc( size
);
2896 void *config_realloc (void * ptr
, yy_size_t size
, yyscan_t yyscanner
)
2898 /* The cast to (char *) in the following accommodates both
2899 * implementations that use char* generic pointers, and those
2900 * that use void* generic pointers. It works with the latter
2901 * because both ANSI C and C++ allow castless assignment from
2902 * any pointer type to void*, and deal with argument conversions
2903 * as though doing an assignment.
2905 return (void *) realloc( (char *) ptr
, size
);
2908 void config_free (void * ptr
, yyscan_t yyscanner
)
2910 free( (char *) ptr
); /* see config_realloc() for (char *) cast */
2913 #define YYTABLES_NAME "yytables"
2915 #line 229 "libmemcached/csl/scanner.l"
2919 void Context::init_scanner()
2921 config_lex_init(&scanner
);
2922 config_set_extra(this,scanner
);
2925 void Context::destroy_scanner()
2927 (void)yy_fatal_error
; // Removes warning about unused yy_fatal_error()
2928 config_lex_destroy(scanner
);