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"
17 #define YY_EXTRA_TYPE Context*
22 #line 23 "libmemcached/csl/scanner.cc"
24 #define YY_INT_ALIGNED short int
26 /* A lexical scanner generated by flex */
31 /* %if-not-reentrant */
37 #define YY_FLEX_MAJOR_VERSION 2
38 #define YY_FLEX_MINOR_VERSION 5
39 #define YY_FLEX_SUBMINOR_VERSION 35
40 #if YY_FLEX_SUBMINOR_VERSION > 0
55 /* First, we deal with platform-specific or compiler-specific issues. */
57 /* begin standard C headers. */
65 /* %if-tables-serialization */
67 /* end standard C headers. */
70 /* flex integer type definitions */
75 /* C99 systems have <inttypes.h>. Non-C99 systems may or may not. */
77 #if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
79 /* C99 says to define __STDC_LIMIT_MACROS before including stdint.h,
80 * if you want the limit (max/min) macros for int types.
82 #ifndef __STDC_LIMIT_MACROS
83 #define __STDC_LIMIT_MACROS 1
87 typedef int8_t flex_int8_t
;
88 typedef uint8_t flex_uint8_t
;
89 typedef int16_t flex_int16_t
;
90 typedef uint16_t flex_uint16_t
;
91 typedef int32_t flex_int32_t
;
92 typedef uint32_t flex_uint32_t
;
94 typedef signed char flex_int8_t
;
95 typedef short int flex_int16_t
;
96 typedef int flex_int32_t
;
97 typedef unsigned char flex_uint8_t
;
98 typedef unsigned short int flex_uint16_t
;
99 typedef unsigned int flex_uint32_t
;
102 /* Limits of integral types. */
104 #define INT8_MIN (-128)
107 #define INT16_MIN (-32767-1)
110 #define INT32_MIN (-2147483647-1)
113 #define INT8_MAX (127)
116 #define INT16_MAX (32767)
119 #define INT32_MAX (2147483647)
122 #define UINT8_MAX (255U)
125 #define UINT16_MAX (65535U)
128 #define UINT32_MAX (4294967295U)
131 #endif /* ! FLEXINT_H */
140 /* The "const" storage-class-modifier is valid. */
143 #else /* ! __cplusplus */
145 /* C99 requires __STDC__ to be defined as 1. */
146 #if defined (__STDC__)
150 #endif /* defined (__STDC__) */
151 #endif /* ! __cplusplus */
154 #define yyconst const
159 /* %not-for-header */
161 /* Returned upon end-of-file. */
165 /* %not-for-header */
167 /* Promotes a possibly negative, possibly signed char to an unsigned
168 * integer for use as an array index. If the signed char is negative,
169 * we want to instead treat it as an 8-bit unsigned char, hence the
172 #define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c)
177 /* An opaque pointer. */
178 #ifndef YY_TYPEDEF_YY_SCANNER_T
179 #define YY_TYPEDEF_YY_SCANNER_T
180 typedef void* yyscan_t
;
183 /* For convenience, these vars (plus the bison vars far below)
184 are macros in the reentrant scanner. */
185 #define yyin yyg->yyin_r
186 #define yyout yyg->yyout_r
187 #define yyextra yyg->yyextra_r
188 #define yyleng yyg->yyleng_r
189 #define yytext yyg->yytext_r
190 #define yylineno (YY_CURRENT_BUFFER_LVALUE->yy_bs_lineno)
191 #define yycolumn (YY_CURRENT_BUFFER_LVALUE->yy_bs_column)
192 #define yy_flex_debug yyg->yy_flex_debug_r
196 /* %if-not-reentrant */
199 /* Enter a start condition. This macro really ought to take a parameter,
200 * but we do it the disgusting crufty way forced on us by the ()-less
201 * definition of BEGIN.
203 #define BEGIN yyg->yy_start = 1 + 2 *
205 /* Translate the current start state into a value that can be later handed
206 * to BEGIN to return to the state. The YYSTATE alias is for lex
209 #define YY_START ((yyg->yy_start - 1) / 2)
210 #define YYSTATE YY_START
212 /* Action number for EOF rule of a given start state. */
213 #define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
215 /* Special action meaning "start processing a new file". */
216 #define YY_NEW_FILE config_restart(yyin ,yyscanner )
218 #define YY_END_OF_BUFFER_CHAR 0
220 /* Size of default input buffer. */
222 #define YY_BUF_SIZE 16384
225 /* The state buf must be large enough to hold one state per character in the main buffer.
227 #define YY_STATE_BUF_SIZE ((YY_BUF_SIZE + 2) * sizeof(yy_state_type))
229 #ifndef YY_TYPEDEF_YY_BUFFER_STATE
230 #define YY_TYPEDEF_YY_BUFFER_STATE
231 typedef struct yy_buffer_state
*YY_BUFFER_STATE
;
234 /* %if-not-reentrant */
238 /* %if-not-reentrant */
242 #define EOB_ACT_CONTINUE_SCAN 0
243 #define EOB_ACT_END_OF_FILE 1
244 #define EOB_ACT_LAST_MATCH 2
246 #define YY_LESS_LINENO(n)
248 /* Return all but the first "n" matched characters back to the input stream. */
252 /* Undo effects of setting up yytext. */ \
253 int yyless_macro_arg = (n); \
254 YY_LESS_LINENO(yyless_macro_arg);\
255 *yy_cp = yyg->yy_hold_char; \
256 YY_RESTORE_YY_MORE_OFFSET \
257 yyg->yy_c_buf_p = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \
258 YY_DO_BEFORE_ACTION; /* set up yytext again */ \
262 #define unput(c) yyunput( c, yyg->yytext_ptr , yyscanner )
264 #ifndef YY_TYPEDEF_YY_SIZE_T
265 #define YY_TYPEDEF_YY_SIZE_T
266 typedef size_t yy_size_t
;
269 #ifndef YY_STRUCT_YY_BUFFER_STATE
270 #define YY_STRUCT_YY_BUFFER_STATE
271 struct yy_buffer_state
280 char *yy_ch_buf
; /* input buffer */
281 char *yy_buf_pos
; /* current position in input buffer */
283 /* Size of input buffer in bytes, not including room for EOB
286 yy_size_t yy_buf_size
;
288 /* Number of characters read into yy_ch_buf, not including EOB
293 /* Whether we "own" the buffer - i.e., we know we created it,
294 * and can realloc() it to grow it, and should free() it to
297 int yy_is_our_buffer
;
299 /* Whether this is an "interactive" input source; if so, and
300 * if we're using stdio for input, then we want to use getc()
301 * instead of fread(), to make sure we stop fetching input after
304 int yy_is_interactive
;
306 /* Whether we're considered to be at the beginning of a line.
307 * If so, '^' rules will be active on the next match, otherwise
312 int yy_bs_lineno
; /**< The line count. */
313 int yy_bs_column
; /**< The column count. */
315 /* Whether to try to fill the input buffer when we reach the
320 int yy_buffer_status
;
322 #define YY_BUFFER_NEW 0
323 #define YY_BUFFER_NORMAL 1
324 /* When an EOF's been seen but there's still some text to process
325 * then we mark the buffer as YY_EOF_PENDING, to indicate that we
326 * shouldn't try reading from the input source any more. We might
327 * still have a bunch of tokens to match, though, because of
328 * possible backing-up.
330 * When we actually see the EOF, we change the status to "new"
331 * (via config_restart()), so that the user can continue scanning by
332 * just pointing yyin at a new input file.
334 #define YY_BUFFER_EOF_PENDING 2
337 #endif /* !YY_STRUCT_YY_BUFFER_STATE */
339 /* %if-c-only Standard (non-C++) definition */
340 /* %not-for-header */
342 /* %if-not-reentrant */
348 /* We provide macros for accessing buffer states in case in the
349 * future we want to put the buffer states in a more general
352 * Returns the top of the stack, or NULL.
354 #define YY_CURRENT_BUFFER ( yyg->yy_buffer_stack \
355 ? yyg->yy_buffer_stack[yyg->yy_buffer_stack_top] \
358 /* Same as previous macro, but useful when we know that the buffer stack is not
359 * NULL or when we need an lvalue. For internal use only.
361 #define YY_CURRENT_BUFFER_LVALUE yyg->yy_buffer_stack[yyg->yy_buffer_stack_top]
363 /* %if-c-only Standard (non-C++) definition */
365 /* %if-not-reentrant */
366 /* %not-for-header */
372 void config_restart (FILE *input_file
,yyscan_t yyscanner
);
373 void config__switch_to_buffer (YY_BUFFER_STATE new_buffer
,yyscan_t yyscanner
);
374 YY_BUFFER_STATE
config__create_buffer (FILE *file
,int size
,yyscan_t yyscanner
);
375 void config__delete_buffer (YY_BUFFER_STATE b
,yyscan_t yyscanner
);
376 void config__flush_buffer (YY_BUFFER_STATE b
,yyscan_t yyscanner
);
377 void config_push_buffer_state (YY_BUFFER_STATE new_buffer
,yyscan_t yyscanner
);
378 void config_pop_buffer_state (yyscan_t yyscanner
);
380 static void config_ensure_buffer_stack (yyscan_t yyscanner
);
381 static void config__load_buffer_state (yyscan_t yyscanner
);
382 static void config__init_buffer (YY_BUFFER_STATE b
,FILE *file
,yyscan_t yyscanner
);
384 #define YY_FLUSH_BUFFER config__flush_buffer(YY_CURRENT_BUFFER ,yyscanner)
386 YY_BUFFER_STATE
config__scan_buffer (char *base
,yy_size_t size
,yyscan_t yyscanner
);
387 YY_BUFFER_STATE
config__scan_string (yyconst
char *yy_str
,yyscan_t yyscanner
);
388 YY_BUFFER_STATE
config__scan_bytes (yyconst
char *bytes
,int len
,yyscan_t yyscanner
);
392 void *config_alloc (yy_size_t
,yyscan_t yyscanner
);
393 void *config_realloc (void *,yy_size_t
,yyscan_t yyscanner
);
394 void config_free (void * ,yyscan_t yyscanner
);
396 #define yy_new_buffer config__create_buffer
398 #define yy_set_interactive(is_interactive) \
400 if ( ! YY_CURRENT_BUFFER ){ \
401 config_ensure_buffer_stack (yyscanner); \
402 YY_CURRENT_BUFFER_LVALUE = \
403 config__create_buffer(yyin,YY_BUF_SIZE ,yyscanner); \
405 YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \
408 #define yy_set_bol(at_bol) \
410 if ( ! YY_CURRENT_BUFFER ){\
411 config_ensure_buffer_stack (yyscanner); \
412 YY_CURRENT_BUFFER_LVALUE = \
413 config__create_buffer(yyin,YY_BUF_SIZE ,yyscanner); \
415 YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \
418 #define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol)
420 /* %% [1.0] yytext/yyin/yyout/yy_state_type/yylineno etc. def's & init go here */
421 /* Begin user sect3 */
423 #define config_wrap(n) 1
424 #define YY_SKIP_YYWRAP
428 typedef unsigned char YY_CHAR
;
430 typedef int yy_state_type
;
432 #define yytext_ptr yytext_r
434 /* %if-c-only Standard (non-C++) definition */
436 static yy_state_type
yy_get_previous_state (yyscan_t yyscanner
);
437 static yy_state_type
yy_try_NUL_trans (yy_state_type current_state
,yyscan_t yyscanner
);
438 static int yy_get_next_buffer (yyscan_t yyscanner
);
439 static void yy_fatal_error (yyconst
char msg
[] ,yyscan_t yyscanner
);
443 /* Done after the current pattern has been matched and before the
444 * corresponding action - sets up yytext.
446 #define YY_DO_BEFORE_ACTION \
447 yyg->yytext_ptr = yy_bp; \
448 /* %% [2.0] code to fiddle yytext and yyleng for yymore() goes here \ */\
449 yyleng = (size_t) (yy_cp - yy_bp); \
450 yyg->yy_hold_char = *yy_cp; \
452 /* %% [3.0] code to copy yytext_ptr to yytext[] goes here, if %array \ */\
453 yyg->yy_c_buf_p = yy_cp;
455 /* %% [4.0] data tables for the DFA and the user's section 1 definitions go here */
456 #define YY_NUM_RULES 65
457 #define YY_END_OF_BUFFER 66
458 /* This struct is not used in this scanner,
459 but its presence is necessary. */
462 flex_int32_t yy_verify
;
465 static yyconst flex_int16_t yy_accept
[521] =
467 0, 0, 66, 64, 5, 5, 1, 64, 64, 64,
468 2, 64, 64, 64, 64, 64, 64, 64, 64, 64,
469 64, 64, 64, 64, 64, 64, 0, 63, 0, 48,
470 0, 0, 0, 2, 3, 0, 0, 0, 0, 0,
471 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
472 0, 0, 0, 0, 6, 48, 48, 48, 48, 48,
473 48, 48, 48, 48, 48, 48, 48, 48, 4, 62,
474 62, 2, 3, 62, 53, 62, 44, 62, 62, 62,
475 62, 62, 62, 63, 0, 62, 52, 62, 62, 62,
476 62, 62, 62, 48, 48, 48, 48, 48, 48, 48,
478 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
479 48, 48, 48, 4, 0, 62, 2, 3, 62, 62,
480 62, 62, 62, 62, 62, 62, 62, 62, 62, 62,
481 62, 46, 48, 48, 48, 48, 48, 0, 48, 48,
482 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
483 48, 48, 48, 48, 48, 4, 62, 62, 3, 62,
484 42, 45, 47, 62, 0, 58, 62, 62, 62, 62,
485 62, 41, 62, 48, 48, 48, 48, 48, 48, 0,
486 0, 0, 48, 48, 48, 48, 48, 48, 0, 48,
487 48, 48, 0, 48, 48, 48, 0, 0, 48, 48,
489 4, 0, 62, 3, 62, 0, 62, 62, 62, 62,
490 50, 59, 51, 62, 48, 48, 48, 48, 48, 0,
491 15, 0, 0, 0, 48, 48, 48, 0, 0, 48,
492 0, 48, 48, 48, 0, 48, 0, 48, 0, 0,
493 0, 0, 48, 4, 61, 62, 62, 62, 62, 56,
494 54, 40, 60, 43, 48, 48, 48, 48, 48, 0,
495 0, 0, 0, 48, 48, 48, 0, 0, 48, 0,
496 48, 0, 48, 0, 48, 0, 48, 0, 0, 0,
497 0, 48, 61, 62, 57, 55, 0, 0, 48, 48,
498 48, 0, 0, 0, 0, 48, 19, 0, 0, 0,
500 0, 48, 0, 0, 0, 7, 0, 0, 8, 0,
501 48, 0, 0, 34, 0, 0, 61, 62, 0, 0,
502 48, 0, 48, 0, 0, 0, 0, 48, 0, 0,
503 0, 0, 48, 0, 0, 0, 0, 0, 0, 0,
504 0, 0, 0, 0, 0, 49, 0, 0, 48, 0,
505 48, 0, 0, 0, 0, 48, 0, 0, 38, 37,
506 48, 0, 0, 0, 0, 0, 0, 0, 0, 0,
507 0, 0, 35, 0, 0, 0, 0, 0, 48, 0,
508 0, 0, 0, 39, 0, 0, 0, 0, 0, 0,
509 0, 0, 0, 29, 0, 0, 0, 0, 36, 0,
511 0, 0, 0, 48, 0, 0, 0, 0, 0, 0,
512 0, 0, 0, 0, 0, 0, 0, 30, 0, 0,
513 33, 0, 0, 0, 0, 48, 0, 0, 0, 0,
514 0, 0, 0, 23, 0, 0, 26, 0, 0, 0,
515 32, 0, 0, 0, 0, 13, 0, 0, 0, 0,
516 0, 21, 0, 0, 0, 0, 0, 31, 0, 0,
517 0, 0, 0, 0, 0, 0, 0, 0, 0, 25,
518 0, 0, 9, 10, 11, 0, 0, 0, 0, 0,
519 0, 0, 0, 0, 0, 12, 0, 0, 17, 0,
520 0, 0, 0, 0, 0, 0, 0, 18, 0, 0,
522 0, 27, 28, 0, 0, 0, 0, 0, 14, 16,
523 20, 0, 0, 0, 0, 0, 0, 22, 24, 0
526 static yyconst flex_int32_t yy_ec
[256] =
528 1, 1, 1, 1, 1, 1, 1, 1, 2, 3,
529 1, 1, 2, 1, 1, 1, 1, 1, 1, 1,
530 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
531 1, 4, 1, 5, 6, 1, 1, 1, 1, 1,
532 1, 1, 1, 7, 8, 9, 10, 11, 12, 13,
533 14, 15, 16, 17, 11, 11, 11, 18, 1, 1,
534 19, 1, 20, 1, 21, 22, 23, 24, 25, 26,
535 27, 28, 29, 30, 31, 32, 33, 34, 35, 36,
536 37, 38, 39, 40, 41, 42, 43, 44, 45, 46,
537 1, 47, 1, 1, 48, 1, 49, 50, 51, 52,
539 53, 54, 55, 56, 57, 58, 59, 60, 61, 62,
540 63, 64, 65, 66, 67, 68, 69, 70, 71, 72,
541 73, 74, 1, 1, 1, 1, 1, 1, 1, 1,
542 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
543 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
544 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
545 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
546 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
547 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
548 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
550 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
551 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
552 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
553 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
554 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
558 static yyconst flex_int32_t yy_meta
[75] =
560 1, 1, 1, 1, 2, 1, 1, 2, 2, 1,
561 2, 2, 2, 2, 2, 2, 2, 1, 1, 1,
562 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
563 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
564 2, 2, 2, 2, 2, 2, 1, 2, 2, 2,
565 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
566 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
570 static yyconst flex_int16_t yy_base
[526] =
572 0, 622, 626, 1711, 1711, 1711, 1711, 70, 617, 597,
573 67, 74, 0, 57, 52, 59, 73, 57, 64, 74,
574 610, 77, 79, 77, 65, 609, 101, 1711, 606, 138,
575 202, 215, 217, 230, 237, 250, 252, 259, 265, 277,
576 282, 287, 297, 271, 315, 377, 323, 342, 350, 359,
577 364, 396, 401, 591, 1711, 449, 242, 73, 80, 89,
578 76, 378, 78, 397, 398, 91, 76, 91, 441, 328,
579 515, 528, 481, 499, 421, 541, 543, 548, 553, 559,
580 565, 576, 590, 595, 649, 0, 597, 622, 614, 624,
581 656, 632, 674, 85, 131, 124, 230, 249, 572, 260,
583 272, 285, 403, 300, 319, 375, 336, 376, 650, 381,
584 401, 415, 436, 717, 730, 743, 756, 768, 781, 787,
585 789, 797, 803, 808, 825, 810, 838, 852, 854, 863,
586 870, 702, 454, 455, 651, 442, 456, 656, 461, 534,
587 538, 533, 537, 562, 571, 581, 628, 642, 570, 655,
588 650, 656, 569, 687, 664, 893, 921, 872, 928, 907,
589 879, 942, 944, 949, 951, 958, 967, 973, 975, 980,
590 993, 995, 1000, 660, 683, 720, 750, 755, 126, 755,
591 795, 786, 787, 805, 860, 567, 564, 856, 856, 855,
592 941, 969, 971, 987, 547, 981, 996, 976, 546, 999,
594 1048, 1062, 1075, 1711, 1088, 1090, 1024, 1097, 1106, 1112,
595 1117, 1124, 1132, 1134, 1012, 1043, 1089, 1095, 1090, 1081,
596 1711, 1087, 1085, 1107, 1099, 1116, 1111, 1110, 1120, 1124,
597 1132, 1139, 527, 1128, 1138, 1128, 1141, 1132, 1146, 1139,
598 1151, 1159, 1139, 1711, 1205, 1182, 1199, 1218, 1220, 1228,
599 1233, 1235, 1240, 1246, 526, 517, 1165, 1192, 1217, 1217,
600 1225, 514, 513, 1235, 1212, 472, 1229, 1240, 1230, 1229,
601 471, 1223, 457, 1231, 258, 1230, 1230, 1246, 1248, 1237,
602 1254, 456, 1297, 1310, 1312, 1317, 1243, 1257, 1258, 451,
603 1263, 1287, 1289, 1293, 1288, 1310, 0, 1299, 1302, 1292,
605 1304, 1293, 1315, 1315, 1313, 1711, 1318, 1308, 1711, 1309,
606 406, 1313, 1325, 1711, 1311, 1321, 1376, 1378, 1316, 1348,
607 1363, 1349, 1351, 1364, 403, 1355, 1373, 1370, 1371, 1374,
608 373, 372, 1375, 1367, 1382, 1371, 1370, 1381, 1382, 1368,
609 1386, 1418, 1378, 1391, 1388, 1406, 1394, 1405, 367, 1414,
610 1415, 362, 1402, 1423, 1409, 346, 352, 1415, 1711, 1711,
611 348, 1410, 1423, 1428, 1414, 1433, 1424, 1420, 1439, 1429,
612 1438, 1442, 1711, 1419, 1425, 1425, 1442, 1436, 1439, 1448,
613 1464, 1469, 1473, 1711, 1461, 1459, 1463, 1463, 1472, 1470,
614 1466, 1465, 1484, 1711, 1470, 1482, 1480, 1469, 1711, 1480,
616 1491, 1488, 1493, 1485, 1499, 1481, 1497, 1486, 1500, 1490,
617 1513, 334, 1516, 1510, 333, 340, 336, 1711, 1512, 1530,
618 1711, 1533, 1518, 1527, 1525, 322, 1528, 1537, 1523, 1531,
619 1529, 321, 1531, 1711, 1544, 1530, 1711, 1532, 1533, 1548,
620 1711, 1539, 1535, 1551, 1536, 1711, 1553, 1542, 1558, 1565,
621 1562, 1711, 1565, 319, 289, 1578, 1581, 1711, 1579, 1573,
622 285, 1573, 1576, 1583, 1589, 1580, 1590, 1591, 1582, 1711,
623 1577, 1578, 1711, 1711, 1711, 282, 1590, 1606, 253, 1597,
624 1606, 1607, 1606, 1607, 1608, 1711, 1613, 1598, 1711, 243,
625 1616, 1621, 1612, 237, 221, 1630, 1632, 1711, 1627, 229,
627 1625, 1711, 1711, 1643, 217, 208, 1631, 1646, 1711, 1711,
628 1711, 1647, 1635, 1653, 1636, 1652, 202, 1711, 1711, 1711,
629 1704, 154, 1706, 131, 1708
632 static yyconst flex_int16_t yy_def
[526] =
634 520, 1, 520, 520, 520, 520, 520, 521, 520, 520,
635 522, 520, 522, 522, 522, 522, 522, 522, 522, 522,
636 522, 522, 522, 522, 522, 523, 521, 520, 521, 520,
637 520, 524, 524, 524, 520, 524, 524, 524, 524, 524,
638 524, 524, 524, 524, 524, 525, 524, 524, 524, 524,
639 524, 524, 524, 523, 520, 30, 56, 56, 56, 56,
640 56, 56, 56, 56, 56, 56, 56, 56, 520, 524,
641 524, 524, 520, 524, 524, 524, 524, 524, 524, 524,
642 524, 524, 524, 524, 525, 85, 524, 524, 524, 524,
643 524, 524, 524, 56, 56, 56, 56, 56, 56, 56,
645 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
646 56, 56, 56, 520, 524, 524, 524, 520, 524, 524,
647 524, 524, 524, 524, 524, 524, 524, 524, 524, 524,
648 524, 524, 56, 56, 56, 56, 56, 520, 56, 56,
649 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
650 56, 56, 56, 56, 56, 520, 524, 524, 520, 524,
651 524, 524, 524, 524, 524, 524, 524, 524, 524, 524,
652 524, 524, 524, 56, 56, 56, 56, 56, 56, 520,
653 520, 520, 56, 56, 56, 56, 56, 56, 520, 56,
654 56, 56, 520, 56, 56, 56, 520, 520, 56, 56,
656 520, 524, 524, 520, 524, 524, 524, 524, 524, 524,
657 524, 524, 524, 524, 56, 56, 56, 56, 56, 520,
658 520, 520, 520, 520, 56, 56, 56, 520, 520, 56,
659 520, 56, 56, 56, 520, 56, 520, 56, 520, 520,
660 520, 520, 56, 520, 524, 524, 524, 524, 524, 524,
661 524, 524, 524, 524, 56, 56, 56, 56, 56, 520,
662 520, 520, 520, 56, 56, 56, 520, 520, 56, 520,
663 56, 520, 56, 520, 56, 520, 56, 520, 520, 520,
664 520, 56, 524, 524, 524, 524, 520, 520, 56, 56,
665 56, 520, 520, 520, 520, 56, 56, 520, 520, 520,
667 520, 56, 520, 520, 520, 520, 520, 520, 520, 520,
668 56, 520, 520, 520, 520, 520, 524, 524, 520, 520,
669 56, 520, 56, 520, 520, 520, 520, 56, 520, 520,
670 520, 520, 56, 520, 520, 520, 520, 520, 520, 520,
671 520, 520, 520, 520, 520, 524, 520, 520, 56, 520,
672 56, 520, 520, 520, 520, 56, 520, 520, 520, 520,
673 56, 520, 520, 520, 520, 520, 520, 520, 520, 520,
674 520, 520, 520, 520, 520, 520, 520, 520, 56, 520,
675 520, 520, 520, 520, 520, 520, 520, 520, 520, 520,
676 520, 520, 520, 520, 520, 520, 520, 520, 520, 520,
678 520, 520, 520, 56, 520, 520, 520, 520, 520, 520,
679 520, 520, 520, 520, 520, 520, 520, 520, 520, 520,
680 520, 520, 520, 520, 520, 56, 520, 520, 520, 520,
681 520, 520, 520, 520, 520, 520, 520, 520, 520, 520,
682 520, 520, 520, 520, 520, 520, 520, 520, 520, 520,
683 520, 520, 520, 520, 520, 520, 520, 520, 520, 520,
684 520, 520, 520, 520, 520, 520, 520, 520, 520, 520,
685 520, 520, 520, 520, 520, 520, 520, 520, 520, 520,
686 520, 520, 520, 520, 520, 520, 520, 520, 520, 520,
687 520, 520, 520, 520, 520, 520, 520, 520, 520, 520,
689 520, 520, 520, 520, 520, 520, 520, 520, 520, 520,
690 520, 520, 520, 520, 520, 520, 520, 520, 520, 0,
691 520, 520, 520, 520, 520
694 static yyconst flex_int16_t yy_nxt
[1786] =
696 4, 5, 6, 7, 8, 4, 7, 9, 4, 10,
697 11, 11, 11, 11, 11, 11, 11, 12, 7, 4,
698 13, 13, 14, 15, 16, 17, 13, 18, 19, 20,
699 13, 21, 22, 13, 13, 13, 13, 23, 24, 25,
700 13, 13, 13, 13, 13, 13, 4, 4, 13, 13,
701 14, 15, 16, 17, 13, 18, 19, 20, 13, 21,
702 22, 13, 13, 13, 13, 23, 24, 25, 13, 13,
703 13, 13, 13, 13, 28, 33, 38, 34, 34, 34,
704 34, 34, 34, 34, 35, 35, 35, 35, 35, 35,
705 35, 36, 39, 41, 37, 43, 40, 44, 45, 50,
707 47, 52, 53, 51, 38, 28, 42, 96, 97, 98,
708 99, 48, 103, 111, 112, 113, 29, 49, 133, 36,
709 39, 41, 37, 43, 40, 44, 45, 50, 47, 52,
710 53, 51, 70, 220, 42, 96, 97, 98, 99, 48,
711 103, 111, 112, 113, 221, 49, 133, 29, 56, 56,
712 56, 56, 56, 56, 56, 32, 134, 135, 56, 57,
713 58, 59, 56, 56, 56, 60, 61, 56, 56, 56,
714 56, 62, 56, 63, 56, 64, 65, 66, 67, 68,
715 56, 56, 56, 56, 134, 135, 56, 57, 58, 59,
716 56, 56, 56, 60, 61, 56, 56, 56, 56, 62,
718 56, 63, 56, 64, 65, 66, 67, 68, 56, 56,
719 56, 56, 69, 69, 69, 69, 69, 69, 69, 32,
720 519, 32, 32, 32, 32, 32, 511, 71, 71, 71,
721 71, 71, 71, 71, 32, 510, 507, 32, 33, 503,
722 72, 72, 72, 72, 72, 72, 72, 73, 73, 73,
723 73, 73, 73, 73, 32, 502, 32, 32, 32, 32,
724 32, 498, 32, 32, 32, 308, 32, 32, 136, 32,
725 94, 489, 32, 32, 75, 32, 309, 32, 32, 32,
726 76, 32, 95, 74, 32, 32, 32, 137, 77, 32,
727 32, 32, 139, 82, 32, 32, 136, 32, 94, 32,
729 486, 32, 75, 475, 32, 32, 32, 470, 76, 140,
730 95, 74, 32, 79, 78, 137, 77, 141, 32, 32,
731 139, 82, 32, 32, 32, 81, 469, 32, 80, 32,
732 32, 32, 32, 144, 32, 32, 32, 140, 87, 452,
733 446, 79, 78, 439, 32, 141, 32, 438, 83, 32,
734 32, 437, 434, 81, 32, 387, 80, 32, 32, 385,
735 145, 144, 32, 32, 384, 88, 32, 32, 32, 380,
736 32, 32, 32, 148, 377, 32, 83, 27, 27, 27,
737 27, 84, 27, 27, 85, 85, 27, 89, 145, 32,
738 360, 359, 90, 88, 27, 27, 27, 32, 100, 149,
740 32, 148, 91, 32, 32, 32, 32, 146, 32, 32,
741 353, 32, 101, 341, 147, 89, 152, 104, 102, 105,
742 90, 106, 107, 29, 85, 32, 100, 149, 32, 32,
743 91, 108, 109, 92, 142, 146, 153, 143, 110, 154,
744 101, 93, 147, 32, 152, 104, 102, 105, 32, 106,
745 107, 114, 114, 114, 114, 114, 114, 114, 322, 108,
746 109, 92, 142, 316, 153, 143, 110, 154, 32, 93,
747 56, 56, 56, 155, 174, 306, 56, 56, 304, 298,
748 175, 178, 56, 179, 56, 183, 56, 56, 56, 56,
749 56, 118, 118, 118, 118, 118, 118, 118, 56, 56,
751 56, 155, 174, 32, 56, 56, 32, 32, 175, 178,
752 56, 179, 56, 183, 56, 56, 56, 56, 56, 32,
753 295, 294, 32, 115, 288, 116, 116, 116, 116, 116,
754 116, 116, 32, 287, 272, 32, 33, 119, 117, 117,
755 117, 117, 117, 117, 117, 32, 32, 32, 32, 32,
756 32, 32, 32, 242, 237, 32, 32, 32, 184, 185,
757 32, 32, 32, 32, 186, 119, 32, 32, 187, 32,
758 123, 229, 32, 32, 228, 32, 197, 193, 189, 138,
759 32, 120, 121, 32, 32, 188, 184, 185, 32, 124,
760 32, 122, 186, 55, 32, 32, 187, 32, 32, 32,
762 32, 32, 32, 32, 32, 32, 32, 125, 520, 120,
763 121, 55, 32, 188, 46, 190, 31, 124, 32, 122,
764 126, 32, 32, 32, 30, 520, 32, 26, 32, 32,
765 32, 32, 32, 520, 520, 125, 32, 32, 520, 32,
766 32, 520, 32, 190, 32, 520, 128, 129, 126, 27,
767 27, 27, 27, 84, 27, 27, 85, 85, 27, 520,
768 32, 32, 127, 32, 32, 191, 27, 27, 27, 32,
769 520, 32, 150, 131, 128, 129, 176, 180, 32, 32,
770 130, 32, 32, 192, 177, 194, 181, 151, 182, 195,
771 127, 196, 200, 191, 198, 29, 85, 215, 132, 520,
773 150, 131, 520, 32, 176, 180, 32, 216, 130, 32,
774 32, 192, 177, 194, 181, 151, 182, 195, 520, 196,
775 200, 32, 520, 520, 199, 215, 132, 156, 156, 156,
776 156, 156, 156, 156, 32, 216, 520, 32, 32, 520,
777 157, 157, 157, 157, 157, 157, 157, 32, 217, 32,
778 32, 115, 199, 158, 158, 158, 158, 158, 158, 158,
779 32, 520, 520, 32, 32, 520, 117, 117, 117, 117,
780 117, 117, 117, 520, 218, 520, 217, 32, 159, 159,
781 159, 159, 159, 159, 159, 32, 520, 520, 32, 32,
782 32, 32, 219, 32, 32, 32, 32, 32, 520, 222,
784 520, 32, 218, 32, 32, 32, 520, 32, 520, 160,
785 32, 32, 32, 161, 32, 32, 32, 32, 32, 223,
786 219, 163, 520, 164, 224, 225, 162, 222, 32, 32,
787 520, 520, 32, 32, 32, 166, 32, 160, 168, 520,
788 226, 161, 32, 520, 32, 32, 32, 223, 520, 163,
789 165, 164, 224, 225, 162, 32, 32, 32, 32, 32,
790 32, 32, 32, 166, 520, 167, 168, 32, 226, 169,
791 32, 32, 32, 520, 32, 520, 32, 32, 32, 32,
792 115, 520, 520, 32, 227, 32, 32, 32, 171, 520,
793 230, 520, 170, 167, 173, 231, 232, 169, 520, 32,
795 520, 32, 172, 201, 201, 201, 201, 201, 201, 201,
796 32, 32, 227, 520, 32, 32, 171, 32, 230, 32,
797 170, 520, 173, 231, 232, 32, 32, 520, 32, 202,
798 172, 203, 203, 203, 203, 203, 203, 203, 204, 204,
799 204, 204, 204, 204, 204, 205, 32, 520, 32, 32,
800 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
801 520, 520, 32, 520, 207, 32, 32, 208, 32, 520,
802 520, 32, 520, 205, 32, 32, 520, 32, 520, 32,
803 32, 32, 32, 32, 32, 233, 520, 32, 32, 32,
804 209, 32, 520, 234, 520, 211, 206, 32, 32, 32,
806 32, 32, 32, 32, 32, 32, 210, 32, 32, 520,
807 235, 236, 520, 233, 32, 238, 241, 212, 209, 520,
808 32, 234, 32, 211, 243, 213, 239, 32, 32, 240,
809 520, 32, 32, 520, 210, 520, 250, 214, 235, 236,
810 32, 520, 32, 238, 241, 212, 520, 32, 520, 520,
811 520, 520, 243, 213, 239, 520, 255, 240, 244, 244,
812 244, 244, 244, 244, 244, 214, 32, 520, 520, 32,
813 32, 32, 245, 245, 245, 245, 245, 245, 245, 32,
814 256, 520, 32, 202, 255, 246, 246, 246, 246, 246,
815 246, 246, 32, 520, 32, 32, 32, 32, 32, 520,
817 520, 32, 520, 248, 32, 32, 249, 520, 256, 32,
818 32, 251, 520, 32, 32, 257, 32, 258, 259, 32,
819 32, 32, 32, 260, 32, 32, 261, 247, 32, 262,
820 252, 32, 32, 263, 264, 32, 32, 32, 32, 32,
821 32, 32, 32, 257, 32, 258, 259, 265, 266, 267,
822 253, 260, 268, 32, 261, 247, 269, 262, 252, 32,
823 270, 263, 264, 271, 32, 273, 274, 275, 276, 277,
824 278, 32, 254, 279, 280, 265, 266, 267, 253, 32,
825 268, 32, 281, 282, 269, 520, 32, 520, 270, 32,
826 202, 271, 520, 273, 274, 275, 276, 277, 278, 520,
828 254, 279, 280, 32, 520, 289, 32, 32, 520, 32,
829 281, 282, 32, 32, 520, 283, 283, 283, 283, 283,
830 283, 283, 32, 284, 32, 32, 32, 32, 32, 32,
831 285, 290, 32, 289, 286, 32, 32, 32, 291, 32,
832 32, 32, 32, 32, 32, 292, 32, 32, 32, 293,
833 32, 284, 32, 32, 32, 296, 297, 299, 302, 290,
834 300, 303, 305, 307, 310, 32, 291, 32, 301, 311,
835 312, 313, 314, 292, 315, 32, 520, 293, 319, 520,
836 32, 520, 32, 296, 297, 299, 302, 32, 300, 303,
837 305, 307, 310, 32, 320, 321, 301, 311, 312, 313,
839 314, 32, 315, 323, 32, 32, 319, 317, 317, 317,
840 317, 317, 317, 317, 32, 520, 32, 32, 32, 32,
841 32, 32, 320, 321, 32, 32, 324, 325, 326, 520,
842 327, 323, 328, 329, 330, 331, 520, 332, 333, 334,
843 335, 336, 337, 318, 32, 338, 339, 340, 342, 343,
844 344, 345, 520, 347, 324, 325, 326, 32, 327, 32,
845 328, 329, 330, 331, 32, 332, 333, 334, 335, 336,
846 337, 318, 348, 338, 339, 340, 342, 343, 344, 345,
847 32, 347, 32, 32, 32, 32, 32, 349, 350, 520,
848 351, 352, 354, 355, 356, 520, 357, 520, 358, 361,
850 348, 362, 363, 364, 365, 366, 367, 368, 369, 372,
851 32, 373, 374, 32, 32, 349, 350, 346, 351, 352,
852 354, 355, 356, 32, 357, 32, 358, 361, 375, 362,
853 363, 364, 365, 366, 367, 368, 369, 372, 370, 373,
854 374, 376, 378, 379, 381, 346, 371, 382, 383, 386,
855 388, 389, 390, 32, 391, 392, 375, 393, 394, 395,
856 396, 397, 398, 399, 400, 401, 370, 402, 403, 376,
857 378, 379, 381, 404, 371, 382, 383, 386, 388, 389,
858 390, 405, 391, 392, 406, 393, 394, 395, 396, 397,
859 398, 399, 400, 401, 407, 402, 403, 408, 409, 410,
861 411, 404, 412, 413, 414, 415, 416, 417, 418, 405,
862 419, 420, 406, 421, 422, 423, 424, 425, 426, 427,
863 428, 429, 407, 430, 431, 408, 409, 410, 411, 432,
864 412, 413, 414, 415, 416, 417, 418, 433, 419, 420,
865 435, 421, 422, 423, 424, 425, 426, 427, 428, 429,
866 436, 430, 431, 440, 441, 442, 443, 432, 444, 445,
867 447, 448, 449, 450, 451, 433, 453, 454, 435, 455,
868 456, 457, 458, 459, 460, 461, 462, 463, 436, 464,
869 465, 440, 441, 442, 443, 466, 444, 445, 447, 448,
870 449, 450, 451, 467, 453, 454, 468, 455, 456, 457,
872 458, 459, 460, 461, 462, 463, 471, 464, 465, 472,
873 473, 474, 476, 466, 477, 478, 479, 480, 481, 482,
874 483, 467, 484, 485, 468, 487, 488, 490, 491, 492,
875 493, 494, 495, 496, 471, 497, 499, 472, 473, 474,
876 476, 500, 477, 478, 479, 480, 481, 482, 483, 501,
877 484, 485, 504, 487, 488, 490, 491, 492, 493, 494,
878 495, 496, 505, 497, 499, 506, 508, 509, 512, 500,
879 513, 514, 515, 516, 517, 518, 520, 501, 520, 520,
880 504, 520, 520, 520, 520, 520, 520, 520, 520, 520,
881 505, 520, 520, 506, 508, 509, 512, 520, 513, 514,
883 515, 516, 517, 518, 27, 27, 54, 54, 86, 86,
884 3, 520, 520, 520, 520, 520, 520, 520, 520, 520,
885 520, 520, 520, 520, 520, 520, 520, 520, 520, 520,
886 520, 520, 520, 520, 520, 520, 520, 520, 520, 520,
887 520, 520, 520, 520, 520, 520, 520, 520, 520, 520,
888 520, 520, 520, 520, 520, 520, 520, 520, 520, 520,
889 520, 520, 520, 520, 520, 520, 520, 520, 520, 520,
890 520, 520, 520, 520, 520, 520, 520, 520, 520, 520,
891 520, 520, 520, 520, 520
894 static yyconst flex_int16_t yy_chk
[1786] =
896 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
897 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
898 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
899 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
900 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
901 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
902 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
903 1, 1, 1, 1, 8, 11, 15, 11, 11, 11,
904 11, 11, 11, 11, 12, 12, 12, 12, 12, 12,
905 12, 14, 16, 17, 14, 18, 16, 19, 20, 23,
907 22, 24, 25, 23, 15, 27, 17, 58, 59, 60,
908 61, 22, 63, 66, 67, 68, 8, 22, 94, 14,
909 16, 17, 14, 18, 16, 19, 20, 23, 22, 24,
910 25, 23, 524, 179, 17, 58, 59, 60, 61, 22,
911 63, 66, 67, 68, 179, 22, 94, 27, 30, 30,
912 30, 30, 30, 30, 30, 522, 95, 96, 30, 30,
913 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
914 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
915 30, 30, 30, 30, 95, 96, 30, 30, 30, 30,
916 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
918 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
919 30, 30, 31, 31, 31, 31, 31, 31, 31, 32,
920 517, 33, 32, 32, 33, 33, 506, 33, 33, 33,
921 33, 33, 33, 33, 34, 505, 500, 34, 34, 495,
922 34, 34, 34, 34, 34, 34, 34, 35, 35, 35,
923 35, 35, 35, 35, 36, 494, 37, 36, 36, 37,
924 37, 490, 32, 38, 33, 275, 38, 38, 97, 39,
925 57, 479, 39, 39, 37, 44, 275, 34, 44, 44,
926 38, 40, 57, 36, 40, 40, 41, 98, 39, 41,
927 41, 42, 100, 44, 42, 42, 97, 36, 57, 37,
929 476, 43, 37, 461, 43, 43, 38, 455, 38, 101,
930 57, 36, 39, 41, 40, 98, 39, 102, 44, 45,
931 100, 44, 45, 45, 40, 43, 454, 47, 42, 41,
932 47, 47, 70, 104, 42, 70, 70, 101, 47, 432,
933 426, 41, 40, 417, 43, 102, 48, 416, 45, 48,
934 48, 415, 412, 43, 49, 361, 42, 49, 49, 357,
935 105, 104, 45, 50, 356, 48, 50, 50, 51, 352,
936 47, 51, 51, 107, 349, 70, 45, 46, 46, 46,
937 46, 46, 46, 46, 46, 46, 46, 49, 105, 48,
938 332, 331, 50, 48, 46, 46, 46, 49, 62, 108,
940 52, 107, 51, 52, 52, 53, 50, 106, 53, 53,
941 325, 51, 62, 311, 106, 49, 110, 64, 62, 64,
942 50, 64, 65, 46, 46, 75, 62, 108, 75, 75,
943 51, 65, 65, 52, 103, 106, 111, 103, 65, 112,
944 62, 53, 106, 52, 110, 64, 62, 64, 53, 64,
945 65, 69, 69, 69, 69, 69, 69, 69, 290, 65,
946 65, 52, 103, 282, 111, 103, 65, 112, 75, 53,
947 56, 56, 56, 113, 133, 273, 56, 56, 271, 266,
948 134, 136, 56, 137, 56, 139, 56, 56, 56, 56,
949 56, 73, 73, 73, 73, 73, 73, 73, 56, 56,
951 56, 113, 133, 74, 56, 56, 74, 74, 134, 136,
952 56, 137, 56, 139, 56, 56, 56, 56, 56, 71,
953 263, 262, 71, 71, 256, 71, 71, 71, 71, 71,
954 71, 71, 72, 255, 233, 72, 72, 74, 72, 72,
955 72, 72, 72, 72, 72, 76, 74, 77, 76, 76,
956 77, 77, 78, 199, 195, 78, 78, 79, 140, 141,
957 79, 79, 71, 80, 142, 74, 80, 80, 143, 81,
958 80, 187, 81, 81, 186, 72, 153, 149, 145, 99,
959 82, 76, 78, 82, 82, 144, 140, 141, 76, 81,
960 77, 79, 142, 54, 83, 78, 143, 83, 83, 84,
962 79, 87, 84, 84, 87, 87, 80, 82, 29, 76,
963 78, 26, 81, 144, 21, 146, 10, 81, 89, 79,
964 83, 89, 89, 82, 9, 3, 88, 2, 90, 88,
965 88, 90, 90, 0, 0, 82, 92, 83, 0, 92,
966 92, 0, 84, 146, 87, 0, 89, 90, 83, 85,
967 85, 85, 85, 85, 85, 85, 85, 85, 85, 0,
968 91, 89, 88, 91, 91, 147, 85, 85, 85, 88,
969 0, 90, 109, 92, 89, 90, 135, 138, 93, 92,
970 91, 93, 93, 148, 135, 150, 138, 109, 138, 151,
971 88, 152, 155, 147, 154, 85, 85, 174, 93, 0,
973 109, 92, 0, 91, 135, 138, 132, 175, 91, 132,
974 132, 148, 135, 150, 138, 109, 138, 151, 0, 152,
975 155, 93, 0, 0, 154, 174, 93, 114, 114, 114,
976 114, 114, 114, 114, 115, 175, 0, 115, 115, 0,
977 115, 115, 115, 115, 115, 115, 115, 116, 176, 132,
978 116, 116, 154, 116, 116, 116, 116, 116, 116, 116,
979 117, 0, 0, 117, 117, 0, 117, 117, 117, 117,
980 117, 117, 117, 0, 177, 0, 176, 115, 118, 118,
981 118, 118, 118, 118, 118, 119, 0, 0, 119, 119,
982 116, 120, 178, 121, 120, 120, 121, 121, 0, 180,
984 0, 122, 177, 117, 122, 122, 0, 123, 0, 119,
985 123, 123, 124, 120, 126, 124, 124, 126, 126, 181,
986 178, 122, 0, 123, 182, 183, 121, 180, 119, 125,
987 0, 0, 125, 125, 120, 124, 121, 119, 126, 0,
988 184, 120, 127, 0, 122, 127, 127, 181, 0, 122,
989 123, 123, 182, 183, 121, 124, 128, 126, 129, 128,
990 128, 129, 129, 124, 0, 125, 126, 130, 184, 127,
991 130, 130, 125, 0, 131, 0, 158, 131, 131, 158,
992 158, 0, 0, 161, 185, 127, 161, 161, 129, 0,
993 188, 0, 128, 125, 131, 189, 190, 127, 0, 128,
995 0, 129, 130, 156, 156, 156, 156, 156, 156, 156,
996 130, 160, 185, 0, 160, 160, 129, 131, 188, 158,
997 128, 0, 131, 189, 190, 157, 161, 0, 157, 157,
998 130, 157, 157, 157, 157, 157, 157, 157, 159, 159,
999 159, 159, 159, 159, 159, 160, 162, 0, 163, 162,
1000 162, 163, 163, 164, 160, 165, 164, 164, 165, 165,
1001 0, 0, 166, 0, 165, 166, 166, 165, 157, 0,
1002 0, 167, 0, 160, 167, 167, 0, 168, 0, 169,
1003 168, 168, 169, 169, 170, 191, 0, 170, 170, 162,
1004 167, 163, 0, 192, 0, 169, 164, 171, 165, 172,
1006 171, 171, 172, 172, 173, 166, 168, 173, 173, 0,
1007 193, 194, 0, 191, 167, 196, 198, 170, 167, 0,
1008 168, 192, 169, 169, 200, 171, 197, 170, 207, 197,
1009 0, 207, 207, 0, 168, 0, 207, 173, 193, 194,
1010 171, 0, 172, 196, 198, 170, 0, 173, 0, 0,
1011 0, 0, 200, 171, 197, 0, 215, 197, 201, 201,
1012 201, 201, 201, 201, 201, 173, 202, 0, 0, 202,
1013 202, 207, 202, 202, 202, 202, 202, 202, 202, 203,
1014 216, 0, 203, 203, 215, 203, 203, 203, 203, 203,
1015 203, 203, 205, 0, 206, 205, 205, 206, 206, 0,
1017 0, 208, 0, 206, 208, 208, 206, 0, 216, 202,
1018 209, 208, 0, 209, 209, 217, 210, 218, 219, 210,
1019 210, 211, 203, 220, 211, 211, 222, 205, 212, 223,
1020 209, 212, 212, 224, 225, 205, 213, 206, 214, 213,
1021 213, 214, 214, 217, 208, 218, 219, 226, 227, 228,
1022 210, 220, 229, 209, 222, 205, 230, 223, 209, 210,
1023 231, 224, 225, 232, 211, 234, 235, 236, 237, 238,
1024 239, 212, 214, 240, 241, 226, 227, 228, 210, 213,
1025 229, 214, 242, 243, 230, 0, 246, 0, 231, 246,
1026 246, 232, 0, 234, 235, 236, 237, 238, 239, 0,
1028 214, 240, 241, 247, 0, 257, 247, 247, 0, 245,
1029 242, 243, 245, 245, 0, 245, 245, 245, 245, 245,
1030 245, 245, 248, 247, 249, 248, 248, 249, 249, 246,
1031 248, 258, 250, 257, 249, 250, 250, 251, 259, 252,
1032 251, 251, 252, 252, 253, 260, 247, 253, 253, 261,
1033 254, 247, 245, 254, 254, 264, 265, 267, 269, 258,
1034 268, 270, 272, 274, 276, 248, 259, 249, 268, 277,
1035 278, 279, 280, 260, 281, 250, 0, 261, 287, 0,
1036 251, 0, 252, 264, 265, 267, 269, 253, 268, 270,
1037 272, 274, 276, 254, 288, 289, 268, 277, 278, 279,
1039 280, 283, 281, 291, 283, 283, 287, 283, 283, 283,
1040 283, 283, 283, 283, 284, 0, 285, 284, 284, 285,
1041 285, 286, 288, 289, 286, 286, 292, 293, 294, 0,
1042 295, 291, 296, 298, 299, 300, 0, 301, 302, 303,
1043 304, 305, 307, 284, 283, 308, 308, 310, 312, 313,
1044 315, 316, 0, 319, 292, 293, 294, 284, 295, 285,
1045 296, 298, 299, 300, 286, 301, 302, 303, 304, 305,
1046 307, 284, 320, 308, 308, 310, 312, 313, 315, 316,
1047 317, 319, 318, 317, 317, 318, 318, 321, 322, 0,
1048 323, 324, 326, 327, 328, 0, 329, 0, 330, 333,
1050 320, 334, 335, 336, 337, 338, 339, 340, 341, 343,
1051 346, 344, 345, 346, 346, 321, 322, 318, 323, 324,
1052 326, 327, 328, 317, 329, 318, 330, 333, 347, 334,
1053 335, 336, 337, 338, 339, 340, 341, 343, 342, 344,
1054 345, 348, 350, 351, 353, 318, 342, 354, 355, 358,
1055 362, 363, 364, 346, 365, 366, 347, 367, 368, 369,
1056 370, 371, 372, 374, 375, 376, 342, 377, 378, 348,
1057 350, 351, 353, 379, 342, 354, 355, 358, 362, 363,
1058 364, 380, 365, 366, 381, 367, 368, 369, 370, 371,
1059 372, 374, 375, 376, 382, 377, 378, 383, 385, 386,
1061 387, 379, 388, 389, 390, 391, 392, 393, 395, 380,
1062 396, 397, 381, 398, 400, 401, 402, 403, 404, 405,
1063 406, 407, 382, 408, 409, 383, 385, 386, 387, 410,
1064 388, 389, 390, 391, 392, 393, 395, 411, 396, 397,
1065 413, 398, 400, 401, 402, 403, 404, 405, 406, 407,
1066 414, 408, 409, 419, 420, 422, 423, 410, 424, 425,
1067 427, 428, 429, 430, 431, 411, 433, 435, 413, 436,
1068 438, 439, 440, 442, 443, 444, 445, 447, 414, 448,
1069 449, 419, 420, 422, 423, 450, 424, 425, 427, 428,
1070 429, 430, 431, 451, 433, 435, 453, 436, 438, 439,
1072 440, 442, 443, 444, 445, 447, 456, 448, 449, 457,
1073 459, 460, 462, 450, 463, 464, 465, 466, 467, 468,
1074 469, 451, 471, 472, 453, 477, 478, 480, 481, 482,
1075 483, 484, 485, 487, 456, 488, 491, 457, 459, 460,
1076 462, 492, 463, 464, 465, 466, 467, 468, 469, 493,
1077 471, 472, 496, 477, 478, 480, 481, 482, 483, 484,
1078 485, 487, 497, 488, 491, 499, 501, 504, 507, 492,
1079 508, 512, 513, 514, 515, 516, 0, 493, 0, 0,
1080 496, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1081 497, 0, 0, 499, 501, 504, 507, 0, 508, 512,
1083 513, 514, 515, 516, 521, 521, 523, 523, 525, 525,
1084 520, 520, 520, 520, 520, 520, 520, 520, 520, 520,
1085 520, 520, 520, 520, 520, 520, 520, 520, 520, 520,
1086 520, 520, 520, 520, 520, 520, 520, 520, 520, 520,
1087 520, 520, 520, 520, 520, 520, 520, 520, 520, 520,
1088 520, 520, 520, 520, 520, 520, 520, 520, 520, 520,
1089 520, 520, 520, 520, 520, 520, 520, 520, 520, 520,
1090 520, 520, 520, 520, 520, 520, 520, 520, 520, 520,
1091 520, 520, 520, 520, 520
1094 static yyconst flex_int16_t yy_rule_linenum
[65] =
1096 98, 100, 102, 104, 106, 109, 113, 115, 117, 118,
1097 119, 120, 121, 122, 123, 124, 125, 126, 127, 128,
1098 129, 130, 131, 132, 133, 134, 135, 136, 137, 138,
1099 139, 140, 141, 142, 143, 144, 146, 147, 149, 151,
1100 152, 153, 154, 155, 156, 158, 159, 162, 167, 168,
1101 169, 171, 172, 173, 174, 175, 176, 177, 178, 179,
1105 /* The intent behind this definition is that it'll catch
1106 * any uses of REJECT which flex missed.
1108 #define REJECT reject_used_but_not_detected
1109 #define yymore() yymore_used_but_not_detected
1110 #define YY_MORE_ADJ 0
1111 #define YY_RESTORE_YY_MORE_OFFSET
1112 #line 1 "libmemcached/csl/scanner.l"
1113 /* vim:expandtab:shiftwidth=2:tabstop=2:smarttab:
1115 * Libmemcached library
1117 * Copyright (C) 2012 Data Differential, http://datadifferential.com/
1119 * Redistribution and use in source and binary forms, with or without
1120 * modification, are permitted provided that the following conditions are
1123 * * Redistributions of source code must retain the above copyright
1124 * notice, this list of conditions and the following disclaimer.
1126 * * Redistributions in binary form must reproduce the above
1127 * copyright notice, this list of conditions and the following disclaimer
1128 * in the documentation and/or other materials provided with the
1131 * * The names of its contributors may not be used to endorse or
1132 * promote products derived from this software without specific prior
1133 * written permission.
1135 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
1136 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
1137 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
1138 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
1139 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
1140 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
1141 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
1142 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
1143 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
1144 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
1145 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
1149 #line 59 "libmemcached/csl/scanner.l"
1153 #define PARAM config_get_extra(yyscanner)
1155 #define get_lex_chars(buffer, result, max_size, context) \
1157 if (context->pos >= context->length) \
1163 result= (int)(context->length - context->pos); \
1164 (size_t)result > (size_t)max_size ? result= max_size : 0; \
1165 memcpy(buffer, context->buf + context->pos, result); \
1166 context->pos += result; \
1171 #define YY_INPUT(buffer, result, max_size) get_lex_chars(buffer, result, max_size, PARAM)
1173 #line 1174 "libmemcached/csl/scanner.cc"
1177 #ifndef YY_NO_UNISTD_H
1178 /* Special case for "unistd.h", since it is non-ANSI. We include it way
1179 * down here because we want the user's section 1 to have been scanned first.
1180 * The user has a chance to override it with an option.
1189 #ifndef YY_EXTRA_TYPE
1190 #define YY_EXTRA_TYPE void *
1193 /* %if-c-only Reentrant structure and macros (non-C++). */
1196 /* Holds the entire state of the reentrant scanner. */
1200 /* User-defined. Not touched by flex. */
1201 YY_EXTRA_TYPE yyextra_r
;
1203 /* The rest are the same as the globals declared in the non-reentrant scanner. */
1204 FILE *yyin_r
, *yyout_r
;
1205 size_t yy_buffer_stack_top
; /**< index of top of stack. */
1206 size_t yy_buffer_stack_max
; /**< capacity of stack. */
1207 YY_BUFFER_STATE
* yy_buffer_stack
; /**< Stack as an array. */
1214 int yy_did_buffer_switch_on_eof
;
1215 int yy_start_stack_ptr
;
1216 int yy_start_stack_depth
;
1217 int *yy_start_stack
;
1218 yy_state_type yy_last_accepting_state
;
1219 char* yy_last_accepting_cpos
;
1222 int yy_flex_debug_r
;
1230 }; /* end struct yyguts_t */
1234 static int yy_init_globals (yyscan_t yyscanner
);
1240 /* This must go here because YYSTYPE and YYLTYPE are included
1241 * from bison output in section 1.*/
1242 # define yylval yyg->yylval_r
1244 int config_lex_init (yyscan_t
* scanner
);
1246 int config_lex_init_extra (YY_EXTRA_TYPE user_defined
,yyscan_t
* scanner
);
1250 /* %endif End reentrant structures and macros. */
1252 /* Accessor methods to globals.
1253 These are made visible to non-reentrant scanners for convenience. */
1255 int config_lex_destroy (yyscan_t yyscanner
);
1257 int config_get_debug (yyscan_t yyscanner
);
1259 void config_set_debug (int debug_flag
,yyscan_t yyscanner
);
1261 YY_EXTRA_TYPE
config_get_extra (yyscan_t yyscanner
);
1263 void config_set_extra (YY_EXTRA_TYPE user_defined
,yyscan_t yyscanner
);
1265 FILE *config_get_in (yyscan_t yyscanner
);
1267 void config_set_in (FILE * in_str
,yyscan_t yyscanner
);
1269 FILE *config_get_out (yyscan_t yyscanner
);
1271 void config_set_out (FILE * out_str
,yyscan_t yyscanner
);
1273 int config_get_leng (yyscan_t yyscanner
);
1275 char *config_get_text (yyscan_t yyscanner
);
1277 int config_get_lineno (yyscan_t yyscanner
);
1279 void config_set_lineno (int line_number
,yyscan_t yyscanner
);
1281 int config_get_column (yyscan_t yyscanner
);
1283 void config_set_column (int column_no
,yyscan_t yyscanner
);
1285 /* %if-bison-bridge */
1287 YYSTYPE
* config_get_lval (yyscan_t yyscanner
);
1289 void config_set_lval (YYSTYPE
* yylval_param
,yyscan_t yyscanner
);
1293 /* Macros after this point can all be overridden by user definitions in
1297 #ifndef YY_SKIP_YYWRAP
1299 extern "C" int config_wrap (yyscan_t yyscanner
);
1301 extern int config_wrap (yyscan_t yyscanner
);
1305 /* %not-for-header */
1307 /* %ok-for-header */
1312 static void yy_flex_strncpy (char *,yyconst
char *,int ,yyscan_t yyscanner
);
1315 #ifdef YY_NEED_STRLEN
1316 static int yy_flex_strlen (yyconst
char * ,yyscan_t yyscanner
);
1320 /* %if-c-only Standard (non-C++) definition */
1321 /* %not-for-header */
1324 static int yyinput (yyscan_t yyscanner
);
1326 static int input (yyscan_t yyscanner
);
1328 /* %ok-for-header */
1337 /* Amount of stuff to slurp up with each read. */
1338 #ifndef YY_READ_BUF_SIZE
1339 #define YY_READ_BUF_SIZE 8192
1342 /* Copy whatever the last rule matched to the standard output. */
1344 /* %if-c-only Standard (non-C++) definition */
1345 /* This used to be an fputs(), but since the string might contain NUL's,
1346 * we now use fwrite().
1348 #define ECHO do { if (fwrite( yytext, yyleng, 1, yyout )) {} } while (0)
1350 /* %if-c++-only C++ definition */
1354 /* Gets input and stuffs it into "buf". number of characters read, or YY_NULL,
1355 * is returned in "result".
1358 #define YY_INPUT(buf,result,max_size) \
1359 /* %% [5.0] fread()/read() definition of YY_INPUT goes here unless we're doing C++ \ */\
1360 if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \
1364 for ( n = 0; n < max_size && \
1365 (c = getc( yyin )) != EOF && c != '\n'; ++n ) \
1366 buf[n] = (char) c; \
1368 buf[n++] = (char) c; \
1369 if ( c == EOF && ferror( yyin ) ) \
1370 YY_FATAL_ERROR( "input in flex scanner failed" ); \
1376 while ( (result = fread(buf, 1, max_size, yyin))==0 && ferror(yyin)) \
1378 if( errno != EINTR) \
1380 YY_FATAL_ERROR( "input in flex scanner failed" ); \
1388 /* %if-c++-only C++ definition \ */\
1393 /* No semi-colon after return; correct usage is to write "yyterminate();" -
1394 * we don't want an extra ';' after the "return" because that will cause
1395 * some compilers to complain about unreachable statements.
1398 #define yyterminate() return YY_NULL
1401 /* Number of entries by which start-condition stack grows. */
1402 #ifndef YY_START_STACK_INCR
1403 #define YY_START_STACK_INCR 25
1406 /* Report a fatal error. */
1407 #ifndef YY_FATAL_ERROR
1409 #define YY_FATAL_ERROR(msg) yy_fatal_error( msg , yyscanner)
1415 /* %if-tables-serialization structures and prototypes */
1416 /* %not-for-header */
1418 /* %ok-for-header */
1420 /* %not-for-header */
1422 /* %tables-yydmap generated elements */
1424 /* end tables serialization structures and prototypes */
1426 /* %ok-for-header */
1428 /* Default declaration of generated scanner - a define so the user can
1429 * easily add parameters.
1432 #define YY_DECL_IS_OURS 1
1433 /* %if-c-only Standard (non-C++) definition */
1435 extern int config_lex \
1436 (YYSTYPE
* yylval_param
,yyscan_t yyscanner
);
1438 #define YY_DECL int config_lex \
1439 (YYSTYPE * yylval_param , yyscan_t yyscanner)
1441 /* %if-c++-only C++ definition */
1443 #endif /* !YY_DECL */
1445 /* Code executed at the beginning of each rule, after yytext and yyleng
1448 #ifndef YY_USER_ACTION
1449 #define YY_USER_ACTION
1452 /* Code executed at the end of each rule. */
1454 #define YY_BREAK break;
1457 /* %% [6.0] YY_RULE_SETUP definition goes here */
1458 #define YY_RULE_SETUP \
1460 YY_CURRENT_BUFFER_LVALUE->yy_at_bol = \
1461 (yytext[yyleng - 1] == '\n'); \
1464 /* %not-for-header */
1466 /** The main scanner function which does all the work.
1470 register yy_state_type yy_current_state
;
1471 register char *yy_cp
, *yy_bp
;
1472 register int yy_act
;
1473 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
1475 /* %% [7.0] user's declarations go here */
1476 #line 95 "libmemcached/csl/scanner.l"
1480 #line 1481 "libmemcached/csl/scanner.cc"
1482 yylval
= yylval_param
;
1484 if ( !yyg
->yy_init
)
1492 if ( ! yyg
->yy_start
)
1493 yyg
->yy_start
= 1; /* first start state */
1509 if ( ! YY_CURRENT_BUFFER
) {
1510 config_ensure_buffer_stack (yyscanner
);
1511 YY_CURRENT_BUFFER_LVALUE
=
1512 config__create_buffer(yyin
,YY_BUF_SIZE
,yyscanner
);
1515 config__load_buffer_state(yyscanner
);
1518 while ( 1 ) /* loops until end-of-file is reached */
1520 /* %% [8.0] yymore()-related code goes here */
1521 yy_cp
= yyg
->yy_c_buf_p
;
1523 /* Support of yytext. */
1524 *yy_cp
= yyg
->yy_hold_char
;
1526 /* yy_bp points to the position in yy_ch_buf of the start of
1531 /* %% [9.0] code to set up and find next match goes here */
1532 yy_current_state
= yyg
->yy_start
;
1533 yy_current_state
+= YY_AT_BOL();
1537 register YY_CHAR yy_c
= yy_ec
[YY_SC_TO_UI(*yy_cp
)];
1538 if ( yy_accept
[yy_current_state
] )
1540 yyg
->yy_last_accepting_state
= yy_current_state
;
1541 yyg
->yy_last_accepting_cpos
= yy_cp
;
1543 while ( yy_chk
[yy_base
[yy_current_state
] + yy_c
] != yy_current_state
)
1545 yy_current_state
= (int) yy_def
[yy_current_state
];
1546 if ( yy_current_state
>= 521 )
1547 yy_c
= yy_meta
[(unsigned int) yy_c
];
1549 yy_current_state
= yy_nxt
[yy_base
[yy_current_state
] + (unsigned int) yy_c
];
1552 while ( yy_base
[yy_current_state
] != 1711 );
1555 /* %% [10.0] code to find the action number goes here */
1556 yy_act
= yy_accept
[yy_current_state
];
1558 { /* have to back up */
1559 yy_cp
= yyg
->yy_last_accepting_cpos
;
1560 yy_current_state
= yyg
->yy_last_accepting_state
;
1561 yy_act
= yy_accept
[yy_current_state
];
1564 YY_DO_BEFORE_ACTION
;
1566 /* %% [11.0] code for yylineno update goes here */
1568 do_action
: /* This label is used only to access EOF actions. */
1570 /* %% [12.0] debug code goes here */
1571 if ( yy_flex_debug
)
1574 fprintf( stderr
, "--scanner backing up\n" );
1575 else if ( yy_act
< 65 )
1576 fprintf( stderr
, "--accepting rule at line %ld (\"%s\")\n",
1577 (long)yy_rule_linenum
[yy_act
], yytext
);
1578 else if ( yy_act
== 65 )
1579 fprintf( stderr
, "--accepting default rule (\"%s\")\n",
1581 else if ( yy_act
== 66 )
1582 fprintf( stderr
, "--(end of buffer or a NUL)\n" );
1584 fprintf( stderr
, "--EOF (start condition %d)\n", YY_START
);
1588 { /* beginning of action switch */
1589 /* %% [13.0] actions go here */
1590 case 0: /* must back up */
1591 /* undo the effects of YY_DO_BEFORE_ACTION */
1592 *yy_cp
= yyg
->yy_hold_char
;
1593 yy_cp
= yyg
->yy_last_accepting_cpos
;
1594 yy_current_state
= yyg
->yy_last_accepting_state
;
1595 goto yy_find_action
;
1599 #line 98 "libmemcached/csl/scanner.l"
1600 { return yytext
[0];}
1604 #line 100 "libmemcached/csl/scanner.l"
1605 { yylval
->number
= atoi(yytext
); return (NUMBER
); }
1609 #line 102 "libmemcached/csl/scanner.l"
1610 { yylval
->number
= atoi(yytext
+1); return PORT
; }
1614 #line 104 "libmemcached/csl/scanner.l"
1615 { yylval
->number
= atoi(yytext
+2); return WEIGHT_START
; }
1618 /* rule 5 can match eol */
1620 #line 106 "libmemcached/csl/scanner.l"
1621 ; /* skip whitespace */
1624 *yy_cp
= yyg
->yy_hold_char
; /* undo effects of setting up yytext */
1625 yyg
->yy_c_buf_p
= yy_cp
-= 1;
1626 YY_DO_BEFORE_ACTION
; /* set up yytext again */
1628 #line 109 "libmemcached/csl/scanner.l"
1635 #line 113 "libmemcached/csl/scanner.l"
1636 { yyextra
->begin
= yytext
; yyextra
->set_server(); return yyextra
->previous_token
= SERVER
; }
1640 #line 115 "libmemcached/csl/scanner.l"
1641 { yyextra
->begin
= yytext
; return yyextra
->previous_token
= SOCKET
; }
1645 #line 117 "libmemcached/csl/scanner.l"
1646 { yyextra
->begin
= yytext
; return yyextra
->previous_token
= BINARY_PROTOCOL
; }
1650 #line 118 "libmemcached/csl/scanner.l"
1651 { yyextra
->begin
= yytext
; return yyextra
->previous_token
= BUFFER_REQUESTS
; }
1655 #line 119 "libmemcached/csl/scanner.l"
1656 { yyextra
->begin
= yytext
; return yyextra
->previous_token
= CONFIGURE_FILE
; }
1660 #line 120 "libmemcached/csl/scanner.l"
1661 { yyextra
->begin
= yytext
; return yyextra
->previous_token
= CONNECT_TIMEOUT
; }
1665 #line 121 "libmemcached/csl/scanner.l"
1666 { yyextra
->begin
= yytext
; return yyextra
->previous_token
= DISTRIBUTION
; }
1670 #line 122 "libmemcached/csl/scanner.l"
1671 { yyextra
->begin
= yytext
; return yyextra
->previous_token
= HASH_WITH_NAMESPACE
; }
1675 #line 123 "libmemcached/csl/scanner.l"
1676 { yyextra
->begin
= yytext
; return yyextra
->previous_token
= HASH
; }
1680 #line 124 "libmemcached/csl/scanner.l"
1681 { yyextra
->begin
= yytext
; return yyextra
->previous_token
= IO_BYTES_WATERMARK
; }
1685 #line 125 "libmemcached/csl/scanner.l"
1686 { yyextra
->begin
= yytext
; return yyextra
->previous_token
= IO_KEY_PREFETCH
; }
1690 #line 126 "libmemcached/csl/scanner.l"
1691 { yyextra
->begin
= yytext
; return yyextra
->previous_token
= IO_MSG_WATERMARK
; }
1695 #line 127 "libmemcached/csl/scanner.l"
1696 { yyextra
->begin
= yytext
; return yyextra
->previous_token
= NOREPLY
; }
1700 #line 128 "libmemcached/csl/scanner.l"
1701 { yyextra
->begin
= yytext
; return yyextra
->previous_token
= NUMBER_OF_REPLICAS
; }
1705 #line 129 "libmemcached/csl/scanner.l"
1706 { yyextra
->begin
= yytext
; return yyextra
->previous_token
= POLL_TIMEOUT
; }
1710 #line 130 "libmemcached/csl/scanner.l"
1711 { yyextra
->begin
= yytext
; return yyextra
->previous_token
= RANDOMIZE_REPLICA_READ
; }
1715 #line 131 "libmemcached/csl/scanner.l"
1716 { yyextra
->begin
= yytext
; return yyextra
->previous_token
= RCV_TIMEOUT
; }
1720 #line 132 "libmemcached/csl/scanner.l"
1721 { yyextra
->begin
= yytext
; return yyextra
->previous_token
= REMOVE_FAILED_SERVERS
; }
1725 #line 133 "libmemcached/csl/scanner.l"
1726 { yyextra
->begin
= yytext
; return yyextra
->previous_token
= RETRY_TIMEOUT
; }
1730 #line 134 "libmemcached/csl/scanner.l"
1731 { yyextra
->begin
= yytext
; return yyextra
->previous_token
= SND_TIMEOUT
; }
1735 #line 135 "libmemcached/csl/scanner.l"
1736 { yyextra
->begin
= yytext
; return yyextra
->previous_token
= SOCKET_RECV_SIZE
; }
1740 #line 136 "libmemcached/csl/scanner.l"
1741 { yyextra
->begin
= yytext
; return yyextra
->previous_token
= SOCKET_SEND_SIZE
; }
1745 #line 137 "libmemcached/csl/scanner.l"
1746 { yyextra
->begin
= yytext
; return yyextra
->previous_token
= SORT_HOSTS
; }
1750 #line 138 "libmemcached/csl/scanner.l"
1751 { yyextra
->begin
= yytext
; return yyextra
->previous_token
= SUPPORT_CAS
; }
1755 #line 139 "libmemcached/csl/scanner.l"
1756 { yyextra
->begin
= yytext
; return yyextra
->previous_token
= _TCP_KEEPALIVE
; }
1760 #line 140 "libmemcached/csl/scanner.l"
1761 { yyextra
->begin
= yytext
; return yyextra
->previous_token
= _TCP_KEEPIDLE
; }
1765 #line 141 "libmemcached/csl/scanner.l"
1766 { yyextra
->begin
= yytext
; return yyextra
->previous_token
= _TCP_NODELAY
; }
1770 #line 142 "libmemcached/csl/scanner.l"
1771 { yyextra
->begin
= yytext
; return yyextra
->previous_token
= USE_UDP
; }
1775 #line 143 "libmemcached/csl/scanner.l"
1776 { yyextra
->begin
= yytext
; return yyextra
->previous_token
= USER_DATA
; }
1780 #line 144 "libmemcached/csl/scanner.l"
1781 { yyextra
->begin
= yytext
; return yyextra
->previous_token
= VERIFY_KEY
; }
1785 #line 146 "libmemcached/csl/scanner.l"
1786 { yyextra
->begin
= yytext
; return yyextra
->previous_token
= POOL_MIN
; }
1790 #line 147 "libmemcached/csl/scanner.l"
1791 { yyextra
->begin
= yytext
; return yyextra
->previous_token
= POOL_MAX
; }
1795 #line 149 "libmemcached/csl/scanner.l"
1796 { yyextra
->begin
= yytext
; return yyextra
->previous_token
= NAMESPACE
; }
1800 #line 151 "libmemcached/csl/scanner.l"
1801 { yyextra
->begin
= yytext
; return yyextra
->previous_token
= INCLUDE
; }
1805 #line 152 "libmemcached/csl/scanner.l"
1806 { yyextra
->begin
= yytext
; return yyextra
->previous_token
= RESET
; }
1810 #line 153 "libmemcached/csl/scanner.l"
1811 { yyextra
->begin
= yytext
; return yyextra
->previous_token
= PARSER_DEBUG
; }
1815 #line 154 "libmemcached/csl/scanner.l"
1816 { yyextra
->begin
= yytext
; return yyextra
->previous_token
= SERVERS
; }
1820 #line 155 "libmemcached/csl/scanner.l"
1821 { yyextra
->begin
= yytext
; return yyextra
->previous_token
= END
; }
1825 #line 156 "libmemcached/csl/scanner.l"
1826 { yyextra
->begin
= yytext
; return yyextra
->previous_token
= ERROR
; }
1830 #line 158 "libmemcached/csl/scanner.l"
1831 { return yyextra
->previous_token
= TRUE
; }
1835 #line 159 "libmemcached/csl/scanner.l"
1836 { return yyextra
->previous_token
= FALSE
; }
1840 #line 162 "libmemcached/csl/scanner.l"
1842 yyextra
->begin
= yytext
;
1843 return UNKNOWN_OPTION
;
1848 #line 167 "libmemcached/csl/scanner.l"
1849 { return CONSISTENT
; }
1853 #line 168 "libmemcached/csl/scanner.l"
1858 #line 169 "libmemcached/csl/scanner.l"
1863 #line 171 "libmemcached/csl/scanner.l"
1868 #line 172 "libmemcached/csl/scanner.l"
1873 #line 173 "libmemcached/csl/scanner.l"
1878 #line 174 "libmemcached/csl/scanner.l"
1879 { return FNV1A_64
; }
1883 #line 175 "libmemcached/csl/scanner.l"
1888 #line 176 "libmemcached/csl/scanner.l"
1889 { return FNV1A_32
; }
1893 #line 177 "libmemcached/csl/scanner.l"
1898 #line 178 "libmemcached/csl/scanner.l"
1903 #line 179 "libmemcached/csl/scanner.l"
1908 #line 181 "libmemcached/csl/scanner.l"
1910 yylval
->server
.port
= MEMCACHED_DEFAULT_PORT
;
1911 yylval
->server
.weight
= 1;
1912 yylval
->server
.c_str
= yyextra
->set_hostname(yytext
, yyleng
);
1913 if (yylval
->server
.c_str
)
1914 yylval
->server
.size
= yyleng
;
1920 #line 190 "libmemcached/csl/scanner.l"
1922 if (yyextra
->is_server())
1924 yylval
->server
.port
= MEMCACHED_DEFAULT_PORT
;
1925 yylval
->server
.weight
= 1;
1926 yylval
->server
.c_str
= yyextra
->set_hostname(yytext
, yyleng
);
1927 if (yylval
->server
.c_str
)
1928 yylval
->server
.size
= yyleng
;
1933 yylval
->string
.c_str
= yytext
;
1934 yylval
->string
.size
= yyleng
;
1940 /* rule 63 can match eol */
1942 #line 208 "libmemcached/csl/scanner.l"
1944 config_get_text(yyscanner
)[yyleng
-1]= 0;
1945 yylval
->string
.c_str
= yytext
+1;
1946 yylval
->string
.size
= yyleng
-2;
1947 return QUOTED_STRING
;
1952 #line 215 "libmemcached/csl/scanner.l"
1954 yyextra
->begin
= yytext
;
1960 #line 220 "libmemcached/csl/scanner.l"
1963 #line 1964 "libmemcached/csl/scanner.cc"
1964 case YY_STATE_EOF(INITIAL
):
1967 case YY_END_OF_BUFFER
:
1969 /* Amount of text matched not including the EOB char. */
1970 int yy_amount_of_matched_text
= (int) (yy_cp
- yyg
->yytext_ptr
) - 1;
1972 /* Undo the effects of YY_DO_BEFORE_ACTION. */
1973 *yy_cp
= yyg
->yy_hold_char
;
1974 YY_RESTORE_YY_MORE_OFFSET
1976 if ( YY_CURRENT_BUFFER_LVALUE
->yy_buffer_status
== YY_BUFFER_NEW
)
1978 /* We're scanning a new file or input source. It's
1979 * possible that this happened because the user
1980 * just pointed yyin at a new source and called
1981 * config_lex(). If so, then we have to assure
1982 * consistency between YY_CURRENT_BUFFER and our
1983 * globals. Here is the right place to do so, because
1984 * this is the first action (other than possibly a
1985 * back-up) that will match for the new input source.
1987 yyg
->yy_n_chars
= YY_CURRENT_BUFFER_LVALUE
->yy_n_chars
;
1988 YY_CURRENT_BUFFER_LVALUE
->yy_input_file
= yyin
;
1989 YY_CURRENT_BUFFER_LVALUE
->yy_buffer_status
= YY_BUFFER_NORMAL
;
1992 /* Note that here we test for yy_c_buf_p "<=" to the position
1993 * of the first EOB in the buffer, since yy_c_buf_p will
1994 * already have been incremented past the NUL character
1995 * (since all states make transitions on EOB to the
1996 * end-of-buffer state). Contrast this with the test
1999 if ( yyg
->yy_c_buf_p
<= &YY_CURRENT_BUFFER_LVALUE
->yy_ch_buf
[yyg
->yy_n_chars
] )
2000 { /* This was really a NUL. */
2001 yy_state_type yy_next_state
;
2003 yyg
->yy_c_buf_p
= yyg
->yytext_ptr
+ yy_amount_of_matched_text
;
2005 yy_current_state
= yy_get_previous_state( yyscanner
);
2007 /* Okay, we're now positioned to make the NUL
2008 * transition. We couldn't have
2009 * yy_get_previous_state() go ahead and do it
2010 * for us because it doesn't know how to deal
2011 * with the possibility of jamming (and we don't
2012 * want to build jamming into it because then it
2013 * will run more slowly).
2016 yy_next_state
= yy_try_NUL_trans( yy_current_state
, yyscanner
);
2018 yy_bp
= yyg
->yytext_ptr
+ YY_MORE_ADJ
;
2020 if ( yy_next_state
)
2022 /* Consume the NUL. */
2023 yy_cp
= ++yyg
->yy_c_buf_p
;
2024 yy_current_state
= yy_next_state
;
2030 /* %% [14.0] code to do back-up for compressed tables and set up yy_cp goes here */
2031 yy_cp
= yyg
->yy_c_buf_p
;
2032 goto yy_find_action
;
2036 else switch ( yy_get_next_buffer( yyscanner
) )
2038 case EOB_ACT_END_OF_FILE
:
2040 yyg
->yy_did_buffer_switch_on_eof
= 0;
2042 if ( config_wrap(yyscanner
) )
2044 /* Note: because we've taken care in
2045 * yy_get_next_buffer() to have set up
2046 * yytext, we can now set up
2047 * yy_c_buf_p so that if some total
2048 * hoser (like flex itself) wants to
2049 * call the scanner after we return the
2050 * YY_NULL, it'll still work - another
2051 * YY_NULL will get returned.
2053 yyg
->yy_c_buf_p
= yyg
->yytext_ptr
+ YY_MORE_ADJ
;
2055 yy_act
= YY_STATE_EOF(YY_START
);
2061 if ( ! yyg
->yy_did_buffer_switch_on_eof
)
2067 case EOB_ACT_CONTINUE_SCAN
:
2069 yyg
->yytext_ptr
+ yy_amount_of_matched_text
;
2071 yy_current_state
= yy_get_previous_state( yyscanner
);
2073 yy_cp
= yyg
->yy_c_buf_p
;
2074 yy_bp
= yyg
->yytext_ptr
+ YY_MORE_ADJ
;
2077 case EOB_ACT_LAST_MATCH
:
2079 &YY_CURRENT_BUFFER_LVALUE
->yy_ch_buf
[yyg
->yy_n_chars
];
2081 yy_current_state
= yy_get_previous_state( yyscanner
);
2083 yy_cp
= yyg
->yy_c_buf_p
;
2084 yy_bp
= yyg
->yytext_ptr
+ YY_MORE_ADJ
;
2085 goto yy_find_action
;
2092 "fatal flex scanner internal error--no action found" );
2093 } /* end of action switch */
2094 } /* end of scanning one token */
2095 } /* end of config_lex */
2096 /* %ok-for-header */
2099 /* %not-for-header */
2101 /* %ok-for-header */
2105 /* yy_get_next_buffer - try to read in a new buffer
2107 * Returns a code representing an action:
2108 * EOB_ACT_LAST_MATCH -
2109 * EOB_ACT_CONTINUE_SCAN - continue scanning from current position
2110 * EOB_ACT_END_OF_FILE - end of file
2113 static int yy_get_next_buffer (yyscan_t yyscanner
)
2118 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
2119 register char *dest
= YY_CURRENT_BUFFER_LVALUE
->yy_ch_buf
;
2120 register char *source
= yyg
->yytext_ptr
;
2121 register int number_to_move
, i
;
2124 if ( yyg
->yy_c_buf_p
> &YY_CURRENT_BUFFER_LVALUE
->yy_ch_buf
[yyg
->yy_n_chars
+ 1] )
2126 "fatal flex scanner internal error--end of buffer missed" );
2128 if ( YY_CURRENT_BUFFER_LVALUE
->yy_fill_buffer
== 0 )
2129 { /* Don't try to fill the buffer, so this is an EOF. */
2130 if ( yyg
->yy_c_buf_p
- yyg
->yytext_ptr
- YY_MORE_ADJ
== 1 )
2132 /* We matched a single character, the EOB, so
2133 * treat this as a final EOF.
2135 return EOB_ACT_END_OF_FILE
;
2140 /* We matched some text prior to the EOB, first
2143 return EOB_ACT_LAST_MATCH
;
2147 /* Try to read more data. */
2149 /* First move last chars to start of buffer. */
2150 number_to_move
= (int) (yyg
->yy_c_buf_p
- yyg
->yytext_ptr
) - 1;
2152 for ( i
= 0; i
< number_to_move
; ++i
)
2153 *(dest
++) = *(source
++);
2155 if ( YY_CURRENT_BUFFER_LVALUE
->yy_buffer_status
== YY_BUFFER_EOF_PENDING
)
2156 /* don't do the read, it's not guaranteed to return an EOF,
2159 YY_CURRENT_BUFFER_LVALUE
->yy_n_chars
= yyg
->yy_n_chars
= 0;
2164 YY_CURRENT_BUFFER_LVALUE
->yy_buf_size
- number_to_move
- 1;
2166 while ( num_to_read
<= 0 )
2167 { /* Not enough room in the buffer - grow it. */
2169 /* just a shorter name for the current buffer */
2170 YY_BUFFER_STATE b
= YY_CURRENT_BUFFER
;
2172 int yy_c_buf_p_offset
=
2173 (int) (yyg
->yy_c_buf_p
- b
->yy_ch_buf
);
2175 if ( b
->yy_is_our_buffer
)
2177 int new_size
= b
->yy_buf_size
* 2;
2179 if ( new_size
<= 0 )
2180 b
->yy_buf_size
+= b
->yy_buf_size
/ 8;
2182 b
->yy_buf_size
*= 2;
2184 b
->yy_ch_buf
= (char *)
2185 /* Include room in for 2 EOB chars. */
2186 config_realloc((void *) b
->yy_ch_buf
,b
->yy_buf_size
+ 2 ,yyscanner
);
2189 /* Can't grow it, we don't own it. */
2192 if ( ! b
->yy_ch_buf
)
2194 "fatal error - scanner input buffer overflow" );
2196 yyg
->yy_c_buf_p
= &b
->yy_ch_buf
[yy_c_buf_p_offset
];
2198 num_to_read
= YY_CURRENT_BUFFER_LVALUE
->yy_buf_size
-
2203 if ( num_to_read
> YY_READ_BUF_SIZE
)
2204 num_to_read
= YY_READ_BUF_SIZE
;
2206 /* Read in more data. */
2207 YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE
->yy_ch_buf
[number_to_move
]),
2208 yyg
->yy_n_chars
, (size_t) num_to_read
);
2210 YY_CURRENT_BUFFER_LVALUE
->yy_n_chars
= yyg
->yy_n_chars
;
2213 if ( yyg
->yy_n_chars
== 0 )
2215 if ( number_to_move
== YY_MORE_ADJ
)
2217 ret_val
= EOB_ACT_END_OF_FILE
;
2218 config_restart(yyin
,yyscanner
);
2223 ret_val
= EOB_ACT_LAST_MATCH
;
2224 YY_CURRENT_BUFFER_LVALUE
->yy_buffer_status
=
2225 YY_BUFFER_EOF_PENDING
;
2230 ret_val
= EOB_ACT_CONTINUE_SCAN
;
2232 if ((yy_size_t
) (yyg
->yy_n_chars
+ number_to_move
) > YY_CURRENT_BUFFER_LVALUE
->yy_buf_size
) {
2233 /* Extend the array by 50%, plus the number we really need. */
2234 yy_size_t new_size
= yyg
->yy_n_chars
+ number_to_move
+ (yyg
->yy_n_chars
>> 1);
2235 YY_CURRENT_BUFFER_LVALUE
->yy_ch_buf
= (char *) config_realloc((void *) YY_CURRENT_BUFFER_LVALUE
->yy_ch_buf
,new_size
,yyscanner
);
2236 if ( ! YY_CURRENT_BUFFER_LVALUE
->yy_ch_buf
)
2237 YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" );
2240 yyg
->yy_n_chars
+= number_to_move
;
2241 YY_CURRENT_BUFFER_LVALUE
->yy_ch_buf
[yyg
->yy_n_chars
] = YY_END_OF_BUFFER_CHAR
;
2242 YY_CURRENT_BUFFER_LVALUE
->yy_ch_buf
[yyg
->yy_n_chars
+ 1] = YY_END_OF_BUFFER_CHAR
;
2244 yyg
->yytext_ptr
= &YY_CURRENT_BUFFER_LVALUE
->yy_ch_buf
[0];
2249 /* yy_get_previous_state - get the state just before the EOB char was reached */
2252 /* %not-for-header */
2254 static yy_state_type
yy_get_previous_state (yyscan_t yyscanner
)
2259 register yy_state_type yy_current_state
;
2260 register char *yy_cp
;
2261 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
2263 /* %% [15.0] code to get the start state into yy_current_state goes here */
2264 yy_current_state
= yyg
->yy_start
;
2265 yy_current_state
+= YY_AT_BOL();
2267 for ( yy_cp
= yyg
->yytext_ptr
+ YY_MORE_ADJ
; yy_cp
< yyg
->yy_c_buf_p
; ++yy_cp
)
2269 /* %% [16.0] code to find the next state goes here */
2270 register YY_CHAR yy_c
= (*yy_cp
? yy_ec
[YY_SC_TO_UI(*yy_cp
)] : 1);
2271 if ( yy_accept
[yy_current_state
] )
2273 yyg
->yy_last_accepting_state
= yy_current_state
;
2274 yyg
->yy_last_accepting_cpos
= yy_cp
;
2276 while ( yy_chk
[yy_base
[yy_current_state
] + yy_c
] != yy_current_state
)
2278 yy_current_state
= (int) yy_def
[yy_current_state
];
2279 if ( yy_current_state
>= 521 )
2280 yy_c
= yy_meta
[(unsigned int) yy_c
];
2282 yy_current_state
= yy_nxt
[yy_base
[yy_current_state
] + (unsigned int) yy_c
];
2285 return yy_current_state
;
2288 /* yy_try_NUL_trans - try to make a transition on the NUL character
2291 * next_state = yy_try_NUL_trans( current_state );
2294 static yy_state_type
yy_try_NUL_trans (yy_state_type yy_current_state
, yyscan_t yyscanner
)
2299 register int yy_is_jam
;
2300 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
; /* This var may be unused depending upon options. */
2301 /* %% [17.0] code to find the next state, and perhaps do backing up, goes here */
2302 register char *yy_cp
= yyg
->yy_c_buf_p
;
2304 register YY_CHAR yy_c
= 1;
2305 if ( yy_accept
[yy_current_state
] )
2307 yyg
->yy_last_accepting_state
= yy_current_state
;
2308 yyg
->yy_last_accepting_cpos
= yy_cp
;
2310 while ( yy_chk
[yy_base
[yy_current_state
] + yy_c
] != yy_current_state
)
2312 yy_current_state
= (int) yy_def
[yy_current_state
];
2313 if ( yy_current_state
>= 521 )
2314 yy_c
= yy_meta
[(unsigned int) yy_c
];
2316 yy_current_state
= yy_nxt
[yy_base
[yy_current_state
] + (unsigned int) yy_c
];
2317 yy_is_jam
= (yy_current_state
== 520);
2319 return yy_is_jam
? 0 : yy_current_state
;
2329 static int yyinput (yyscan_t yyscanner
)
2331 static int input (yyscan_t yyscanner
)
2339 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
2341 *yyg
->yy_c_buf_p
= yyg
->yy_hold_char
;
2343 if ( *yyg
->yy_c_buf_p
== YY_END_OF_BUFFER_CHAR
)
2345 /* yy_c_buf_p now points to the character we want to return.
2346 * If this occurs *before* the EOB characters, then it's a
2347 * valid NUL; if not, then we've hit the end of the buffer.
2349 if ( yyg
->yy_c_buf_p
< &YY_CURRENT_BUFFER_LVALUE
->yy_ch_buf
[yyg
->yy_n_chars
] )
2350 /* This was really a NUL. */
2351 *yyg
->yy_c_buf_p
= '\0';
2354 { /* need more input */
2355 int offset
= yyg
->yy_c_buf_p
- yyg
->yytext_ptr
;
2358 switch ( yy_get_next_buffer( yyscanner
) )
2360 case EOB_ACT_LAST_MATCH
:
2361 /* This happens because yy_g_n_b()
2362 * sees that we've accumulated a
2363 * token and flags that we need to
2364 * try matching the token before
2365 * proceeding. But for input(),
2366 * there's no matching to consider.
2367 * So convert the EOB_ACT_LAST_MATCH
2368 * to EOB_ACT_END_OF_FILE.
2371 /* Reset buffer status. */
2372 config_restart(yyin
,yyscanner
);
2376 case EOB_ACT_END_OF_FILE
:
2378 if ( config_wrap(yyscanner
) )
2381 if ( ! yyg
->yy_did_buffer_switch_on_eof
)
2384 return yyinput(yyscanner
);
2386 return input(yyscanner
);
2390 case EOB_ACT_CONTINUE_SCAN
:
2391 yyg
->yy_c_buf_p
= yyg
->yytext_ptr
+ offset
;
2397 c
= *(unsigned char *) yyg
->yy_c_buf_p
; /* cast for 8-bit char's */
2398 *yyg
->yy_c_buf_p
= '\0'; /* preserve yytext */
2399 yyg
->yy_hold_char
= *++yyg
->yy_c_buf_p
;
2401 /* %% [19.0] update BOL and yylineno */
2402 YY_CURRENT_BUFFER_LVALUE
->yy_at_bol
= (c
== '\n');
2407 #endif /* ifndef YY_NO_INPUT */
2410 /** Immediately switch to a different input stream.
2411 * @param input_file A readable stream.
2412 * @param yyscanner The scanner object.
2413 * @note This function does not reset the start condition to @c INITIAL .
2416 void config_restart (FILE * input_file
, yyscan_t yyscanner
)
2421 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
2423 if ( ! YY_CURRENT_BUFFER
){
2424 config_ensure_buffer_stack (yyscanner
);
2425 YY_CURRENT_BUFFER_LVALUE
=
2426 config__create_buffer(yyin
,YY_BUF_SIZE
,yyscanner
);
2429 config__init_buffer(YY_CURRENT_BUFFER
,input_file
,yyscanner
);
2430 config__load_buffer_state(yyscanner
);
2433 /** Switch to a different input buffer.
2434 * @param new_buffer The new input buffer.
2435 * @param yyscanner The scanner object.
2438 void config__switch_to_buffer (YY_BUFFER_STATE new_buffer
, yyscan_t yyscanner
)
2443 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
2445 /* TODO. We should be able to replace this entire function body
2447 * config_pop_buffer_state();
2448 * config_push_buffer_state(new_buffer);
2450 config_ensure_buffer_stack (yyscanner
);
2451 if ( YY_CURRENT_BUFFER
== new_buffer
)
2454 if ( YY_CURRENT_BUFFER
)
2456 /* Flush out information for old buffer. */
2457 *yyg
->yy_c_buf_p
= yyg
->yy_hold_char
;
2458 YY_CURRENT_BUFFER_LVALUE
->yy_buf_pos
= yyg
->yy_c_buf_p
;
2459 YY_CURRENT_BUFFER_LVALUE
->yy_n_chars
= yyg
->yy_n_chars
;
2462 YY_CURRENT_BUFFER_LVALUE
= new_buffer
;
2463 config__load_buffer_state(yyscanner
);
2465 /* We don't actually know whether we did this switch during
2466 * EOF (config_wrap()) processing, but the only time this flag
2467 * is looked at is after config_wrap() is called, so it's safe
2468 * to go ahead and always set it.
2470 yyg
->yy_did_buffer_switch_on_eof
= 1;
2474 static void config__load_buffer_state (yyscan_t yyscanner
)
2479 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
2480 yyg
->yy_n_chars
= YY_CURRENT_BUFFER_LVALUE
->yy_n_chars
;
2481 yyg
->yytext_ptr
= yyg
->yy_c_buf_p
= YY_CURRENT_BUFFER_LVALUE
->yy_buf_pos
;
2482 yyin
= YY_CURRENT_BUFFER_LVALUE
->yy_input_file
;
2483 yyg
->yy_hold_char
= *yyg
->yy_c_buf_p
;
2486 /** Allocate and initialize an input buffer state.
2487 * @param file A readable stream.
2488 * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE.
2489 * @param yyscanner The scanner object.
2490 * @return the allocated buffer state.
2493 YY_BUFFER_STATE
config__create_buffer (FILE * file
, int size
, yyscan_t yyscanner
)
2500 b
= (YY_BUFFER_STATE
) config_alloc(sizeof( struct yy_buffer_state
) ,yyscanner
);
2502 YY_FATAL_ERROR( "out of dynamic memory in config__create_buffer()" );
2504 b
->yy_buf_size
= size
;
2506 /* yy_ch_buf has to be 2 characters longer than the size given because
2507 * we need to put in 2 end-of-buffer characters.
2509 b
->yy_ch_buf
= (char *) config_alloc(b
->yy_buf_size
+ 2 ,yyscanner
);
2510 if ( ! b
->yy_ch_buf
)
2511 YY_FATAL_ERROR( "out of dynamic memory in config__create_buffer()" );
2513 b
->yy_is_our_buffer
= 1;
2515 config__init_buffer(b
,file
,yyscanner
);
2520 /** Destroy the buffer.
2521 * @param b a buffer created with config__create_buffer()
2522 * @param yyscanner The scanner object.
2525 void config__delete_buffer (YY_BUFFER_STATE b
, yyscan_t yyscanner
)
2530 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
2535 if ( b
== YY_CURRENT_BUFFER
) /* Not sure if we should pop here. */
2536 YY_CURRENT_BUFFER_LVALUE
= (YY_BUFFER_STATE
) 0;
2538 if ( b
->yy_is_our_buffer
)
2539 config_free((void *) b
->yy_ch_buf
,yyscanner
);
2541 config_free((void *) b
,yyscanner
);
2547 extern int isatty (int );
2548 #endif /* __cplusplus */
2555 /* Initializes or reinitializes a buffer.
2556 * This function is sometimes called more than once on the same buffer,
2557 * such as during a config_restart() or at EOF.
2560 static void config__init_buffer (YY_BUFFER_STATE b
, FILE * file
, yyscan_t yyscanner
)
2567 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
2569 config__flush_buffer(b
,yyscanner
);
2571 b
->yy_input_file
= file
;
2572 b
->yy_fill_buffer
= 1;
2574 /* If b is the current buffer, then config__init_buffer was _probably_
2575 * called from config_restart() or through yy_get_next_buffer.
2576 * In that case, we don't want to reset the lineno or column.
2578 if (b
!= YY_CURRENT_BUFFER
){
2579 b
->yy_bs_lineno
= 1;
2580 b
->yy_bs_column
= 0;
2585 b
->yy_is_interactive
= file
? (isatty( fileno(file
) ) > 0) : 0;
2593 /** Discard all buffered characters. On the next scan, YY_INPUT will be called.
2594 * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER.
2595 * @param yyscanner The scanner object.
2598 void config__flush_buffer (YY_BUFFER_STATE b
, yyscan_t yyscanner
)
2603 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
2609 /* We always need two end-of-buffer characters. The first causes
2610 * a transition to the end-of-buffer state. The second causes
2611 * a jam in that state.
2613 b
->yy_ch_buf
[0] = YY_END_OF_BUFFER_CHAR
;
2614 b
->yy_ch_buf
[1] = YY_END_OF_BUFFER_CHAR
;
2616 b
->yy_buf_pos
= &b
->yy_ch_buf
[0];
2619 b
->yy_buffer_status
= YY_BUFFER_NEW
;
2621 if ( b
== YY_CURRENT_BUFFER
)
2622 config__load_buffer_state(yyscanner
);
2626 /** Pushes the new state onto the stack. The new state becomes
2627 * the current state. This function will allocate the stack
2629 * @param new_buffer The new state.
2630 * @param yyscanner The scanner object.
2633 void config_push_buffer_state (YY_BUFFER_STATE new_buffer
, yyscan_t yyscanner
)
2638 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
2639 if (new_buffer
== NULL
)
2642 config_ensure_buffer_stack(yyscanner
);
2644 /* This block is copied from config__switch_to_buffer. */
2645 if ( YY_CURRENT_BUFFER
)
2647 /* Flush out information for old buffer. */
2648 *yyg
->yy_c_buf_p
= yyg
->yy_hold_char
;
2649 YY_CURRENT_BUFFER_LVALUE
->yy_buf_pos
= yyg
->yy_c_buf_p
;
2650 YY_CURRENT_BUFFER_LVALUE
->yy_n_chars
= yyg
->yy_n_chars
;
2653 /* Only push if top exists. Otherwise, replace top. */
2654 if (YY_CURRENT_BUFFER
)
2655 yyg
->yy_buffer_stack_top
++;
2656 YY_CURRENT_BUFFER_LVALUE
= new_buffer
;
2658 /* copied from config__switch_to_buffer. */
2659 config__load_buffer_state(yyscanner
);
2660 yyg
->yy_did_buffer_switch_on_eof
= 1;
2665 /** Removes and deletes the top of the stack, if present.
2666 * The next element becomes the new top.
2667 * @param yyscanner The scanner object.
2670 void config_pop_buffer_state (yyscan_t yyscanner
)
2675 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
2676 if (!YY_CURRENT_BUFFER
)
2679 config__delete_buffer(YY_CURRENT_BUFFER
,yyscanner
);
2680 YY_CURRENT_BUFFER_LVALUE
= NULL
;
2681 if (yyg
->yy_buffer_stack_top
> 0)
2682 --yyg
->yy_buffer_stack_top
;
2684 if (YY_CURRENT_BUFFER
) {
2685 config__load_buffer_state(yyscanner
);
2686 yyg
->yy_did_buffer_switch_on_eof
= 1;
2692 /* Allocates the stack if it does not exist.
2693 * Guarantees space for at least one push.
2696 static void config_ensure_buffer_stack (yyscan_t yyscanner
)
2702 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
2704 if (!yyg
->yy_buffer_stack
) {
2706 /* First allocation is just for 2 elements, since we don't know if this
2707 * scanner will even need a stack. We use 2 instead of 1 to avoid an
2708 * immediate realloc on the next call.
2711 yyg
->yy_buffer_stack
= (struct yy_buffer_state
**)config_alloc
2712 (num_to_alloc
* sizeof(struct yy_buffer_state
*)
2714 if ( ! yyg
->yy_buffer_stack
)
2715 YY_FATAL_ERROR( "out of dynamic memory in config_ensure_buffer_stack()" );
2717 memset(yyg
->yy_buffer_stack
, 0, num_to_alloc
* sizeof(struct yy_buffer_state
*));
2719 yyg
->yy_buffer_stack_max
= num_to_alloc
;
2720 yyg
->yy_buffer_stack_top
= 0;
2724 if (yyg
->yy_buffer_stack_top
>= (yyg
->yy_buffer_stack_max
) - 1){
2726 /* Increase the buffer to prepare for a possible push. */
2727 int grow_size
= 8 /* arbitrary grow size */;
2729 num_to_alloc
= yyg
->yy_buffer_stack_max
+ grow_size
;
2730 yyg
->yy_buffer_stack
= (struct yy_buffer_state
**)config_realloc
2731 (yyg
->yy_buffer_stack
,
2732 num_to_alloc
* sizeof(struct yy_buffer_state
*)
2734 if ( ! yyg
->yy_buffer_stack
)
2735 YY_FATAL_ERROR( "out of dynamic memory in config_ensure_buffer_stack()" );
2737 /* zero only the new slots.*/
2738 memset(yyg
->yy_buffer_stack
+ yyg
->yy_buffer_stack_max
, 0, grow_size
* sizeof(struct yy_buffer_state
*));
2739 yyg
->yy_buffer_stack_max
= num_to_alloc
;
2745 /** Setup the input buffer state to scan directly from a user-specified character buffer.
2746 * @param base the character buffer
2747 * @param size the size in bytes of the character buffer
2748 * @param yyscanner The scanner object.
2749 * @return the newly allocated buffer state object.
2751 YY_BUFFER_STATE
config__scan_buffer (char * base
, yy_size_t size
, yyscan_t yyscanner
)
2756 base
[size
-2] != YY_END_OF_BUFFER_CHAR
||
2757 base
[size
-1] != YY_END_OF_BUFFER_CHAR
)
2758 /* They forgot to leave room for the EOB's. */
2761 b
= (YY_BUFFER_STATE
) config_alloc(sizeof( struct yy_buffer_state
) ,yyscanner
);
2763 YY_FATAL_ERROR( "out of dynamic memory in config__scan_buffer()" );
2765 b
->yy_buf_size
= size
- 2; /* "- 2" to take care of EOB's */
2766 b
->yy_buf_pos
= b
->yy_ch_buf
= base
;
2767 b
->yy_is_our_buffer
= 0;
2768 b
->yy_input_file
= 0;
2769 b
->yy_n_chars
= b
->yy_buf_size
;
2770 b
->yy_is_interactive
= 0;
2772 b
->yy_fill_buffer
= 0;
2773 b
->yy_buffer_status
= YY_BUFFER_NEW
;
2775 config__switch_to_buffer(b
,yyscanner
);
2782 /** Setup the input buffer state to scan a string. The next call to config_lex() will
2783 * scan from a @e copy of @a str.
2784 * @param yystr a NUL-terminated string to scan
2785 * @param yyscanner The scanner object.
2786 * @return the newly allocated buffer state object.
2787 * @note If you want to scan bytes that may contain NUL values, then use
2788 * config__scan_bytes() instead.
2790 YY_BUFFER_STATE
config__scan_string (yyconst
char * yystr
, yyscan_t yyscanner
)
2793 return config__scan_bytes(yystr
,strlen(yystr
) ,yyscanner
);
2798 /** Setup the input buffer state to scan the given bytes. The next call to config_lex() will
2799 * scan from a @e copy of @a bytes.
2800 * @param bytes the byte buffer to scan
2801 * @param len the number of bytes in the buffer pointed to by @a bytes.
2802 * @param yyscanner The scanner object.
2803 * @return the newly allocated buffer state object.
2805 YY_BUFFER_STATE
config__scan_bytes (yyconst
char * yybytes
, int _yybytes_len
, yyscan_t yyscanner
)
2812 /* Get memory for full buffer, including space for trailing EOB's. */
2813 n
= _yybytes_len
+ 2;
2814 buf
= (char *) config_alloc(n
,yyscanner
);
2816 YY_FATAL_ERROR( "out of dynamic memory in config__scan_bytes()" );
2818 for ( i
= 0; i
< _yybytes_len
; ++i
)
2819 buf
[i
] = yybytes
[i
];
2821 buf
[_yybytes_len
] = buf
[_yybytes_len
+1] = YY_END_OF_BUFFER_CHAR
;
2823 b
= config__scan_buffer(buf
,n
,yyscanner
);
2825 YY_FATAL_ERROR( "bad buffer in config__scan_bytes()" );
2827 /* It's okay to grow etc. this buffer, and we should throw it
2828 * away when we're done.
2830 b
->yy_is_our_buffer
= 1;
2836 #ifndef YY_EXIT_FAILURE
2837 #define YY_EXIT_FAILURE 2
2841 static void yy_fatal_error (yyconst
char* msg
, yyscan_t yyscanner
)
2843 (void) fprintf( stderr
, "%s\n", msg
);
2844 exit( YY_EXIT_FAILURE
);
2850 /* Redefine yyless() so it works in section 3 code. */
2856 /* Undo effects of setting up yytext. */ \
2857 int yyless_macro_arg = (n); \
2858 YY_LESS_LINENO(yyless_macro_arg);\
2859 yytext[yyleng] = yyg->yy_hold_char; \
2860 yyg->yy_c_buf_p = yytext + yyless_macro_arg; \
2861 yyg->yy_hold_char = *yyg->yy_c_buf_p; \
2862 *yyg->yy_c_buf_p = '\0'; \
2863 yyleng = yyless_macro_arg; \
2867 /* Accessor methods (get/set functions) to struct members. */
2872 /** Get the user-defined data for this scanner.
2873 * @param yyscanner The scanner object.
2875 YY_EXTRA_TYPE
config_get_extra (yyscan_t yyscanner
)
2877 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
2883 /** Get the current line number.
2884 * @param yyscanner The scanner object.
2886 int config_get_lineno (yyscan_t yyscanner
)
2888 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
2890 if (! YY_CURRENT_BUFFER
)
2896 /** Get the current column number.
2897 * @param yyscanner The scanner object.
2899 int config_get_column (yyscan_t yyscanner
)
2901 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
2903 if (! YY_CURRENT_BUFFER
)
2909 /** Get the input stream.
2910 * @param yyscanner The scanner object.
2912 FILE *config_get_in (yyscan_t yyscanner
)
2914 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
2918 /** Get the output stream.
2919 * @param yyscanner The scanner object.
2921 FILE *config_get_out (yyscan_t yyscanner
)
2923 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
2927 /** Get the length of the current token.
2928 * @param yyscanner The scanner object.
2930 int config_get_leng (yyscan_t yyscanner
)
2932 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
2936 /** Get the current token.
2937 * @param yyscanner The scanner object.
2940 char *config_get_text (yyscan_t yyscanner
)
2942 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
2948 /** Set the user-defined data. This data is never touched by the scanner.
2949 * @param user_defined The data to be associated with this scanner.
2950 * @param yyscanner The scanner object.
2952 void config_set_extra (YY_EXTRA_TYPE user_defined
, yyscan_t yyscanner
)
2954 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
2955 yyextra
= user_defined
;
2960 /** Set the current line number.
2961 * @param line_number
2962 * @param yyscanner The scanner object.
2964 void config_set_lineno (int line_number
, yyscan_t yyscanner
)
2966 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
2968 /* lineno is only valid if an input buffer exists. */
2969 if (! YY_CURRENT_BUFFER
)
2970 yy_fatal_error( "config_set_lineno called with no buffer" , yyscanner
);
2972 yylineno
= line_number
;
2975 /** Set the current column.
2976 * @param line_number
2977 * @param yyscanner The scanner object.
2979 void config_set_column (int column_no
, yyscan_t yyscanner
)
2981 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
2983 /* column is only valid if an input buffer exists. */
2984 if (! YY_CURRENT_BUFFER
)
2985 yy_fatal_error( "config_set_column called with no buffer" , yyscanner
);
2987 yycolumn
= column_no
;
2990 /** Set the input stream. This does not discard the current
2992 * @param in_str A readable stream.
2993 * @param yyscanner The scanner object.
2994 * @see config__switch_to_buffer
2996 void config_set_in (FILE * in_str
, yyscan_t yyscanner
)
2998 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
3002 void config_set_out (FILE * out_str
, yyscan_t yyscanner
)
3004 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
3008 int config_get_debug (yyscan_t yyscanner
)
3010 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
3011 return yy_flex_debug
;
3014 void config_set_debug (int bdebug
, yyscan_t yyscanner
)
3016 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
3017 yy_flex_debug
= bdebug
;
3023 /* Accessor methods for yylval and yylloc */
3025 /* %if-bison-bridge */
3027 YYSTYPE
* config_get_lval (yyscan_t yyscanner
)
3029 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
3033 void config_set_lval (YYSTYPE
* yylval_param
, yyscan_t yyscanner
)
3035 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
3036 yylval
= yylval_param
;
3041 /* User-visible API */
3043 /* config_lex_init is special because it creates the scanner itself, so it is
3044 * the ONLY reentrant function that doesn't take the scanner as the last argument.
3045 * That's why we explicitly handle the declaration, instead of using our macros.
3048 int config_lex_init(yyscan_t
* ptr_yy_globals
)
3051 if (ptr_yy_globals
== NULL
){
3056 *ptr_yy_globals
= (yyscan_t
) config_alloc ( sizeof( struct yyguts_t
), NULL
);
3058 if (*ptr_yy_globals
== NULL
){
3063 /* By setting to 0xAA, we expose bugs in yy_init_globals. Leave at 0x00 for releases. */
3064 memset(*ptr_yy_globals
,0x00,sizeof(struct yyguts_t
));
3066 return yy_init_globals ( *ptr_yy_globals
);
3069 /* config_lex_init_extra has the same functionality as config_lex_init, but follows the
3070 * convention of taking the scanner as the last argument. Note however, that
3071 * this is a *pointer* to a scanner, as it will be allocated by this call (and
3072 * is the reason, too, why this function also must handle its own declaration).
3073 * The user defined value in the first argument will be available to config_alloc in
3074 * the yyextra field.
3077 int config_lex_init_extra(YY_EXTRA_TYPE yy_user_defined
,yyscan_t
* ptr_yy_globals
)
3080 struct yyguts_t dummy_yyguts
;
3082 config_set_extra (yy_user_defined
, &dummy_yyguts
);
3084 if (ptr_yy_globals
== NULL
){
3089 *ptr_yy_globals
= (yyscan_t
) config_alloc ( sizeof( struct yyguts_t
), &dummy_yyguts
);
3091 if (*ptr_yy_globals
== NULL
){
3096 /* By setting to 0xAA, we expose bugs in
3097 yy_init_globals. Leave at 0x00 for releases. */
3098 memset(*ptr_yy_globals
,0x00,sizeof(struct yyguts_t
));
3100 config_set_extra (yy_user_defined
, *ptr_yy_globals
);
3102 return yy_init_globals ( *ptr_yy_globals
);
3105 /* %endif if-c-only */
3108 static int yy_init_globals (yyscan_t yyscanner
)
3110 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
3111 /* Initialization is the same as for the non-reentrant scanner.
3112 * This function is called from config_lex_destroy(), so don't allocate here.
3115 yyg
->yy_buffer_stack
= 0;
3116 yyg
->yy_buffer_stack_top
= 0;
3117 yyg
->yy_buffer_stack_max
= 0;
3118 yyg
->yy_c_buf_p
= (char *) 0;
3122 yyg
->yy_start_stack_ptr
= 0;
3123 yyg
->yy_start_stack_depth
= 0;
3124 yyg
->yy_start_stack
= NULL
;
3126 /* Defined in main.c */
3135 /* For future reference: Set errno on error, since we are called by
3142 /* %if-c-only SNIP! this currently causes conflicts with the c++ scanner */
3143 /* config_lex_destroy is for both reentrant and non-reentrant scanners. */
3144 int config_lex_destroy (yyscan_t yyscanner
)
3146 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
3148 /* Pop the buffer stack, destroying each element. */
3149 while(YY_CURRENT_BUFFER
){
3150 config__delete_buffer(YY_CURRENT_BUFFER
,yyscanner
);
3151 YY_CURRENT_BUFFER_LVALUE
= NULL
;
3152 config_pop_buffer_state(yyscanner
);
3155 /* Destroy the stack itself. */
3156 config_free(yyg
->yy_buffer_stack
,yyscanner
);
3157 yyg
->yy_buffer_stack
= NULL
;
3159 /* Destroy the start condition stack. */
3160 config_free(yyg
->yy_start_stack
,yyscanner
);
3161 yyg
->yy_start_stack
= NULL
;
3163 /* Reset the globals. This is important in a non-reentrant scanner so the next time
3164 * config_lex() is called, initialization will occur. */
3165 yy_init_globals( yyscanner
);
3168 /* Destroy the main struct (reentrant only). */
3169 config_free ( yyscanner
, yyscanner
);
3177 * Internal utility routines.
3181 static void yy_flex_strncpy (char* s1
, yyconst
char * s2
, int n
, yyscan_t yyscanner
)
3184 for ( i
= 0; i
< n
; ++i
)
3189 #ifdef YY_NEED_STRLEN
3190 static int yy_flex_strlen (yyconst
char * s
, yyscan_t yyscanner
)
3193 for ( n
= 0; s
[n
]; ++n
)
3200 void *config_alloc (yy_size_t size
, yyscan_t yyscanner
)
3202 return (void *) malloc( size
);
3205 void *config_realloc (void * ptr
, yy_size_t size
, yyscan_t yyscanner
)
3207 /* The cast to (char *) in the following accommodates both
3208 * implementations that use char* generic pointers, and those
3209 * that use void* generic pointers. It works with the latter
3210 * because both ANSI C and C++ allow castless assignment from
3211 * any pointer type to void*, and deal with argument conversions
3212 * as though doing an assignment.
3214 return (void *) realloc( (char *) ptr
, size
);
3217 void config_free (void * ptr
, yyscan_t yyscanner
)
3219 free( (char *) ptr
); /* see config_realloc() for (char *) cast */
3222 /* %if-tables-serialization definitions */
3223 /* %define-yytables The name for this specific scanner's tables. */
3224 #define YYTABLES_NAME "yytables"
3227 /* %ok-for-header */
3229 #line 220 "libmemcached/csl/scanner.l"
3233 void Context::init_scanner()
3235 config_lex_init(&scanner
);
3236 config_set_extra(this,scanner
);
3239 void Context::destroy_scanner()
3241 config_lex_destroy(scanner
);