1 #line 2 "libmemcached/csl/scanner.cc"
2 #line 22 "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"
15 #define YY_EXTRA_TYPE Context*
20 #line 21 "libmemcached/csl/scanner.cc"
22 #define YY_INT_ALIGNED short int
24 /* A lexical scanner generated by flex */
29 /* %if-not-reentrant */
35 #define YY_FLEX_MAJOR_VERSION 2
36 #define YY_FLEX_MINOR_VERSION 5
37 #define YY_FLEX_SUBMINOR_VERSION 35
38 #if YY_FLEX_SUBMINOR_VERSION > 0
53 /* First, we deal with platform-specific or compiler-specific issues. */
55 /* begin standard C headers. */
63 /* %if-tables-serialization */
65 /* end standard C headers. */
68 /* flex integer type definitions */
73 /* C99 systems have <inttypes.h>. Non-C99 systems may or may not. */
75 #if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
77 /* C99 says to define __STDC_LIMIT_MACROS before including stdint.h,
78 * if you want the limit (max/min) macros for int types.
80 #ifndef __STDC_LIMIT_MACROS
81 #define __STDC_LIMIT_MACROS 1
85 typedef int8_t flex_int8_t
;
86 typedef uint8_t flex_uint8_t
;
87 typedef int16_t flex_int16_t
;
88 typedef uint16_t flex_uint16_t
;
89 typedef int32_t flex_int32_t
;
90 typedef uint32_t flex_uint32_t
;
92 typedef signed char flex_int8_t
;
93 typedef short int flex_int16_t
;
94 typedef int flex_int32_t
;
95 typedef unsigned char flex_uint8_t
;
96 typedef unsigned short int flex_uint16_t
;
97 typedef unsigned int flex_uint32_t
;
100 /* Limits of integral types. */
102 #define INT8_MIN (-128)
105 #define INT16_MIN (-32767-1)
108 #define INT32_MIN (-2147483647-1)
111 #define INT8_MAX (127)
114 #define INT16_MAX (32767)
117 #define INT32_MAX (2147483647)
120 #define UINT8_MAX (255U)
123 #define UINT16_MAX (65535U)
126 #define UINT32_MAX (4294967295U)
129 #endif /* ! FLEXINT_H */
138 /* The "const" storage-class-modifier is valid. */
141 #else /* ! __cplusplus */
143 /* C99 requires __STDC__ to be defined as 1. */
144 #if defined (__STDC__)
148 #endif /* defined (__STDC__) */
149 #endif /* ! __cplusplus */
152 #define yyconst const
157 /* %not-for-header */
159 /* Returned upon end-of-file. */
163 /* %not-for-header */
165 /* Promotes a possibly negative, possibly signed char to an unsigned
166 * integer for use as an array index. If the signed char is negative,
167 * we want to instead treat it as an 8-bit unsigned char, hence the
170 #define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c)
175 /* An opaque pointer. */
176 #ifndef YY_TYPEDEF_YY_SCANNER_T
177 #define YY_TYPEDEF_YY_SCANNER_T
178 typedef void* yyscan_t
;
181 /* For convenience, these vars (plus the bison vars far below)
182 are macros in the reentrant scanner. */
183 #define yyin yyg->yyin_r
184 #define yyout yyg->yyout_r
185 #define yyextra yyg->yyextra_r
186 #define yyleng yyg->yyleng_r
187 #define yytext yyg->yytext_r
188 #define yylineno (YY_CURRENT_BUFFER_LVALUE->yy_bs_lineno)
189 #define yycolumn (YY_CURRENT_BUFFER_LVALUE->yy_bs_column)
190 #define yy_flex_debug yyg->yy_flex_debug_r
194 /* %if-not-reentrant */
197 /* Enter a start condition. This macro really ought to take a parameter,
198 * but we do it the disgusting crufty way forced on us by the ()-less
199 * definition of BEGIN.
201 #define BEGIN yyg->yy_start = 1 + 2 *
203 /* Translate the current start state into a value that can be later handed
204 * to BEGIN to return to the state. The YYSTATE alias is for lex
207 #define YY_START ((yyg->yy_start - 1) / 2)
208 #define YYSTATE YY_START
210 /* Action number for EOF rule of a given start state. */
211 #define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
213 /* Special action meaning "start processing a new file". */
214 #define YY_NEW_FILE config_restart(yyin ,yyscanner )
216 #define YY_END_OF_BUFFER_CHAR 0
218 /* Size of default input buffer. */
220 #define YY_BUF_SIZE 16384
223 /* The state buf must be large enough to hold one state per character in the main buffer.
225 #define YY_STATE_BUF_SIZE ((YY_BUF_SIZE + 2) * sizeof(yy_state_type))
227 #ifndef YY_TYPEDEF_YY_BUFFER_STATE
228 #define YY_TYPEDEF_YY_BUFFER_STATE
229 typedef struct yy_buffer_state
*YY_BUFFER_STATE
;
232 #ifndef YY_TYPEDEF_YY_SIZE_T
233 #define YY_TYPEDEF_YY_SIZE_T
234 typedef size_t yy_size_t
;
237 /* %if-not-reentrant */
241 /* %if-not-reentrant */
245 #define EOB_ACT_CONTINUE_SCAN 0
246 #define EOB_ACT_END_OF_FILE 1
247 #define EOB_ACT_LAST_MATCH 2
249 #define YY_LESS_LINENO(n)
251 /* Return all but the first "n" matched characters back to the input stream. */
255 /* Undo effects of setting up yytext. */ \
256 int yyless_macro_arg = (n); \
257 YY_LESS_LINENO(yyless_macro_arg);\
258 *yy_cp = yyg->yy_hold_char; \
259 YY_RESTORE_YY_MORE_OFFSET \
260 yyg->yy_c_buf_p = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \
261 YY_DO_BEFORE_ACTION; /* set up yytext again */ \
265 #define unput(c) yyunput( c, yyg->yytext_ptr , yyscanner )
267 #ifndef YY_STRUCT_YY_BUFFER_STATE
268 #define YY_STRUCT_YY_BUFFER_STATE
269 struct yy_buffer_state
278 char *yy_ch_buf
; /* input buffer */
279 char *yy_buf_pos
; /* current position in input buffer */
281 /* Size of input buffer in bytes, not including room for EOB
284 yy_size_t yy_buf_size
;
286 /* Number of characters read into yy_ch_buf, not including EOB
289 yy_size_t yy_n_chars
;
291 /* Whether we "own" the buffer - i.e., we know we created it,
292 * and can realloc() it to grow it, and should free() it to
295 int yy_is_our_buffer
;
297 /* Whether this is an "interactive" input source; if so, and
298 * if we're using stdio for input, then we want to use getc()
299 * instead of fread(), to make sure we stop fetching input after
302 int yy_is_interactive
;
304 /* Whether we're considered to be at the beginning of a line.
305 * If so, '^' rules will be active on the next match, otherwise
310 int yy_bs_lineno
; /**< The line count. */
311 int yy_bs_column
; /**< The column count. */
313 /* Whether to try to fill the input buffer when we reach the
318 int yy_buffer_status
;
320 #define YY_BUFFER_NEW 0
321 #define YY_BUFFER_NORMAL 1
322 /* When an EOF's been seen but there's still some text to process
323 * then we mark the buffer as YY_EOF_PENDING, to indicate that we
324 * shouldn't try reading from the input source any more. We might
325 * still have a bunch of tokens to match, though, because of
326 * possible backing-up.
328 * When we actually see the EOF, we change the status to "new"
329 * (via config_restart()), so that the user can continue scanning by
330 * just pointing yyin at a new input file.
332 #define YY_BUFFER_EOF_PENDING 2
335 #endif /* !YY_STRUCT_YY_BUFFER_STATE */
337 /* %if-c-only Standard (non-C++) definition */
338 /* %not-for-header */
340 /* %if-not-reentrant */
346 /* We provide macros for accessing buffer states in case in the
347 * future we want to put the buffer states in a more general
350 * Returns the top of the stack, or NULL.
352 #define YY_CURRENT_BUFFER ( yyg->yy_buffer_stack \
353 ? yyg->yy_buffer_stack[yyg->yy_buffer_stack_top] \
356 /* Same as previous macro, but useful when we know that the buffer stack is not
357 * NULL or when we need an lvalue. For internal use only.
359 #define YY_CURRENT_BUFFER_LVALUE yyg->yy_buffer_stack[yyg->yy_buffer_stack_top]
361 /* %if-c-only Standard (non-C++) definition */
363 /* %if-not-reentrant */
364 /* %not-for-header */
370 void config_restart (FILE *input_file
,yyscan_t yyscanner
);
371 void config__switch_to_buffer (YY_BUFFER_STATE new_buffer
,yyscan_t yyscanner
);
372 YY_BUFFER_STATE
config__create_buffer (FILE *file
,int size
,yyscan_t yyscanner
);
373 void config__delete_buffer (YY_BUFFER_STATE b
,yyscan_t yyscanner
);
374 void config__flush_buffer (YY_BUFFER_STATE b
,yyscan_t yyscanner
);
375 void config_push_buffer_state (YY_BUFFER_STATE new_buffer
,yyscan_t yyscanner
);
376 void config_pop_buffer_state (yyscan_t yyscanner
);
378 static void config_ensure_buffer_stack (yyscan_t yyscanner
);
379 static void config__load_buffer_state (yyscan_t yyscanner
);
380 static void config__init_buffer (YY_BUFFER_STATE b
,FILE *file
,yyscan_t yyscanner
);
382 #define YY_FLUSH_BUFFER config__flush_buffer(YY_CURRENT_BUFFER ,yyscanner)
384 YY_BUFFER_STATE
config__scan_buffer (char *base
,yy_size_t size
,yyscan_t yyscanner
);
385 YY_BUFFER_STATE
config__scan_string (yyconst
char *yy_str
,yyscan_t yyscanner
);
386 YY_BUFFER_STATE
config__scan_bytes (yyconst
char *bytes
,yy_size_t len
,yyscan_t yyscanner
);
390 void *config_alloc (yy_size_t
,yyscan_t yyscanner
);
391 void *config_realloc (void *,yy_size_t
,yyscan_t yyscanner
);
392 void config_free (void * ,yyscan_t yyscanner
);
394 #define yy_new_buffer config__create_buffer
396 #define yy_set_interactive(is_interactive) \
398 if ( ! YY_CURRENT_BUFFER ){ \
399 config_ensure_buffer_stack (yyscanner); \
400 YY_CURRENT_BUFFER_LVALUE = \
401 config__create_buffer(yyin,YY_BUF_SIZE ,yyscanner); \
403 YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \
406 #define yy_set_bol(at_bol) \
408 if ( ! YY_CURRENT_BUFFER ){\
409 config_ensure_buffer_stack (yyscanner); \
410 YY_CURRENT_BUFFER_LVALUE = \
411 config__create_buffer(yyin,YY_BUF_SIZE ,yyscanner); \
413 YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \
416 #define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol)
418 /* %% [1.0] yytext/yyin/yyout/yy_state_type/yylineno etc. def's & init go here */
419 /* Begin user sect3 */
421 #define config_wrap(n) 1
422 #define YY_SKIP_YYWRAP
426 typedef unsigned char YY_CHAR
;
428 typedef int yy_state_type
;
430 #define yytext_ptr yytext_r
432 /* %if-c-only Standard (non-C++) definition */
434 static yy_state_type
yy_get_previous_state (yyscan_t yyscanner
);
435 static yy_state_type
yy_try_NUL_trans (yy_state_type current_state
,yyscan_t yyscanner
);
436 static int yy_get_next_buffer (yyscan_t yyscanner
);
437 static void yy_fatal_error (yyconst
char msg
[] ,yyscan_t yyscanner
);
441 /* Done after the current pattern has been matched and before the
442 * corresponding action - sets up yytext.
444 #define YY_DO_BEFORE_ACTION \
445 yyg->yytext_ptr = yy_bp; \
446 /* %% [2.0] code to fiddle yytext and yyleng for yymore() goes here \ */\
447 yyleng = (size_t) (yy_cp - yy_bp); \
448 yyg->yy_hold_char = *yy_cp; \
450 /* %% [3.0] code to copy yytext_ptr to yytext[] goes here, if %array \ */\
451 yyg->yy_c_buf_p = yy_cp;
453 /* %% [4.0] data tables for the DFA and the user's section 1 definitions go here */
454 #define YY_NUM_RULES 65
455 #define YY_END_OF_BUFFER 66
456 /* This struct is not used in this scanner,
457 but its presence is necessary. */
460 flex_int32_t yy_verify
;
463 static yyconst flex_int16_t yy_accept
[521] =
465 0, 0, 66, 64, 5, 5, 1, 64, 64, 64,
466 2, 64, 64, 64, 64, 64, 64, 64, 64, 64,
467 64, 64, 64, 64, 64, 64, 0, 63, 0, 48,
468 0, 0, 0, 2, 3, 0, 0, 0, 0, 0,
469 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
470 0, 0, 0, 0, 6, 48, 48, 48, 48, 48,
471 48, 48, 48, 48, 48, 48, 48, 48, 4, 62,
472 62, 2, 3, 62, 53, 62, 44, 62, 62, 62,
473 62, 62, 62, 63, 0, 62, 52, 62, 62, 62,
474 62, 62, 62, 48, 48, 48, 48, 48, 48, 48,
476 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
477 48, 48, 48, 4, 0, 62, 2, 3, 62, 62,
478 62, 62, 62, 62, 62, 62, 62, 62, 62, 62,
479 62, 46, 48, 48, 48, 48, 48, 0, 48, 48,
480 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
481 48, 48, 48, 48, 48, 4, 62, 62, 3, 62,
482 42, 45, 47, 62, 0, 58, 62, 62, 62, 62,
483 62, 41, 62, 48, 48, 48, 48, 48, 48, 0,
484 0, 0, 48, 48, 48, 48, 48, 48, 0, 48,
485 48, 48, 0, 48, 48, 48, 0, 0, 48, 48,
487 4, 0, 62, 3, 62, 0, 62, 62, 62, 62,
488 50, 59, 51, 62, 48, 48, 48, 48, 48, 0,
489 15, 0, 0, 0, 48, 48, 48, 0, 0, 48,
490 0, 48, 48, 48, 0, 48, 0, 48, 0, 0,
491 0, 0, 48, 4, 61, 62, 62, 62, 62, 56,
492 54, 40, 60, 43, 48, 48, 48, 48, 48, 0,
493 0, 0, 0, 48, 48, 48, 0, 0, 48, 0,
494 48, 0, 48, 0, 48, 0, 48, 0, 0, 0,
495 0, 48, 61, 62, 57, 55, 0, 0, 48, 48,
496 48, 0, 0, 0, 0, 48, 19, 0, 0, 0,
498 0, 48, 0, 0, 0, 7, 0, 0, 8, 0,
499 48, 0, 0, 34, 0, 0, 61, 62, 0, 0,
500 48, 0, 48, 0, 0, 0, 0, 48, 0, 0,
501 0, 0, 48, 0, 0, 0, 0, 0, 0, 0,
502 0, 0, 0, 0, 0, 49, 0, 0, 48, 0,
503 48, 0, 0, 0, 0, 48, 0, 0, 38, 37,
504 48, 0, 0, 0, 0, 0, 0, 0, 0, 0,
505 0, 0, 35, 0, 0, 0, 0, 0, 48, 0,
506 0, 0, 0, 39, 0, 0, 0, 0, 0, 0,
507 0, 0, 0, 29, 0, 0, 0, 0, 36, 0,
509 0, 0, 0, 48, 0, 0, 0, 0, 0, 0,
510 0, 0, 0, 0, 0, 0, 0, 30, 0, 0,
511 33, 0, 0, 0, 0, 48, 0, 0, 0, 0,
512 0, 0, 0, 23, 0, 0, 26, 0, 0, 0,
513 32, 0, 0, 0, 0, 13, 0, 0, 0, 0,
514 0, 21, 0, 0, 0, 0, 0, 31, 0, 0,
515 0, 0, 0, 0, 0, 0, 0, 0, 0, 25,
516 0, 0, 9, 10, 11, 0, 0, 0, 0, 0,
517 0, 0, 0, 0, 0, 12, 0, 0, 17, 0,
518 0, 0, 0, 0, 0, 0, 0, 18, 0, 0,
520 0, 27, 28, 0, 0, 0, 0, 0, 14, 16,
521 20, 0, 0, 0, 0, 0, 0, 22, 24, 0
524 static yyconst flex_int32_t yy_ec
[256] =
526 1, 1, 1, 1, 1, 1, 1, 1, 2, 3,
527 1, 1, 2, 1, 1, 1, 1, 1, 1, 1,
528 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
529 1, 4, 1, 5, 6, 1, 1, 1, 1, 1,
530 1, 1, 1, 7, 8, 9, 10, 11, 12, 13,
531 14, 15, 16, 17, 11, 11, 11, 18, 1, 1,
532 19, 1, 20, 1, 21, 22, 23, 24, 25, 26,
533 27, 28, 29, 30, 31, 32, 33, 34, 35, 36,
534 37, 38, 39, 40, 41, 42, 43, 44, 45, 46,
535 1, 47, 1, 1, 48, 1, 49, 50, 51, 52,
537 53, 54, 55, 56, 57, 58, 59, 60, 61, 62,
538 63, 64, 65, 66, 67, 68, 69, 70, 71, 72,
539 73, 74, 1, 1, 1, 1, 1, 1, 1, 1,
540 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
541 1, 1, 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,
548 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
549 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,
556 static yyconst flex_int32_t yy_meta
[75] =
558 1, 1, 1, 1, 2, 1, 1, 2, 2, 1,
559 2, 2, 2, 2, 2, 2, 2, 1, 1, 1,
560 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
561 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
562 2, 2, 2, 2, 2, 2, 1, 2, 2, 2,
563 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
564 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
568 static yyconst flex_int16_t yy_base
[526] =
570 0, 622, 626, 1711, 1711, 1711, 1711, 70, 617, 597,
571 67, 74, 0, 57, 52, 59, 73, 57, 64, 74,
572 610, 77, 79, 77, 65, 609, 101, 1711, 606, 138,
573 202, 215, 217, 230, 237, 250, 252, 259, 265, 277,
574 282, 287, 297, 271, 315, 377, 323, 342, 350, 359,
575 364, 396, 401, 591, 1711, 449, 242, 73, 80, 89,
576 76, 378, 78, 397, 398, 91, 76, 91, 441, 328,
577 515, 528, 481, 499, 421, 541, 543, 548, 553, 559,
578 565, 576, 590, 595, 649, 0, 597, 622, 614, 624,
579 656, 632, 674, 85, 131, 124, 230, 249, 572, 260,
581 272, 285, 403, 300, 319, 375, 336, 376, 650, 381,
582 401, 415, 436, 717, 730, 743, 756, 768, 781, 787,
583 789, 797, 803, 808, 825, 810, 838, 852, 854, 863,
584 870, 702, 454, 455, 651, 442, 456, 656, 461, 534,
585 538, 533, 537, 562, 571, 581, 628, 642, 570, 655,
586 650, 656, 569, 687, 664, 893, 921, 872, 928, 907,
587 879, 942, 944, 949, 951, 958, 967, 973, 975, 980,
588 993, 995, 1000, 660, 683, 720, 750, 755, 126, 755,
589 795, 786, 787, 805, 860, 567, 564, 856, 856, 855,
590 941, 969, 971, 987, 547, 981, 996, 976, 546, 999,
592 1048, 1062, 1075, 1711, 1088, 1090, 1024, 1097, 1106, 1112,
593 1117, 1124, 1132, 1134, 1012, 1043, 1089, 1095, 1090, 1081,
594 1711, 1087, 1085, 1107, 1099, 1116, 1111, 1110, 1120, 1124,
595 1132, 1139, 527, 1128, 1138, 1128, 1141, 1132, 1146, 1139,
596 1151, 1159, 1139, 1711, 1205, 1182, 1199, 1218, 1220, 1228,
597 1233, 1235, 1240, 1246, 526, 517, 1165, 1192, 1217, 1217,
598 1225, 514, 513, 1235, 1212, 472, 1229, 1240, 1230, 1229,
599 471, 1223, 457, 1231, 258, 1230, 1230, 1246, 1248, 1237,
600 1254, 456, 1297, 1310, 1312, 1317, 1243, 1257, 1258, 451,
601 1263, 1287, 1289, 1293, 1288, 1310, 0, 1299, 1302, 1292,
603 1304, 1293, 1315, 1315, 1313, 1711, 1318, 1308, 1711, 1309,
604 406, 1313, 1325, 1711, 1311, 1321, 1376, 1378, 1316, 1348,
605 1363, 1349, 1351, 1364, 403, 1355, 1373, 1370, 1371, 1374,
606 373, 372, 1375, 1367, 1382, 1371, 1370, 1381, 1382, 1368,
607 1386, 1418, 1378, 1391, 1388, 1406, 1394, 1405, 367, 1414,
608 1415, 362, 1402, 1423, 1409, 346, 352, 1415, 1711, 1711,
609 348, 1410, 1423, 1428, 1414, 1433, 1424, 1420, 1439, 1429,
610 1438, 1442, 1711, 1419, 1425, 1425, 1442, 1436, 1439, 1448,
611 1464, 1469, 1473, 1711, 1461, 1459, 1463, 1463, 1472, 1470,
612 1466, 1465, 1484, 1711, 1470, 1482, 1480, 1469, 1711, 1480,
614 1491, 1488, 1493, 1485, 1499, 1481, 1497, 1486, 1500, 1490,
615 1513, 334, 1516, 1510, 333, 340, 336, 1711, 1512, 1530,
616 1711, 1533, 1518, 1527, 1525, 322, 1528, 1537, 1523, 1531,
617 1529, 321, 1531, 1711, 1544, 1530, 1711, 1532, 1533, 1548,
618 1711, 1539, 1535, 1551, 1536, 1711, 1553, 1542, 1558, 1565,
619 1562, 1711, 1565, 319, 289, 1578, 1581, 1711, 1579, 1573,
620 285, 1573, 1576, 1583, 1589, 1580, 1590, 1591, 1582, 1711,
621 1577, 1578, 1711, 1711, 1711, 282, 1590, 1606, 253, 1597,
622 1606, 1607, 1606, 1607, 1608, 1711, 1613, 1598, 1711, 243,
623 1616, 1621, 1612, 237, 221, 1630, 1632, 1711, 1627, 229,
625 1625, 1711, 1711, 1643, 217, 208, 1631, 1646, 1711, 1711,
626 1711, 1647, 1635, 1653, 1636, 1652, 202, 1711, 1711, 1711,
627 1704, 154, 1706, 131, 1708
630 static yyconst flex_int16_t yy_def
[526] =
632 520, 1, 520, 520, 520, 520, 520, 521, 520, 520,
633 522, 520, 522, 522, 522, 522, 522, 522, 522, 522,
634 522, 522, 522, 522, 522, 523, 521, 520, 521, 520,
635 520, 524, 524, 524, 520, 524, 524, 524, 524, 524,
636 524, 524, 524, 524, 524, 525, 524, 524, 524, 524,
637 524, 524, 524, 523, 520, 30, 56, 56, 56, 56,
638 56, 56, 56, 56, 56, 56, 56, 56, 520, 524,
639 524, 524, 520, 524, 524, 524, 524, 524, 524, 524,
640 524, 524, 524, 524, 525, 85, 524, 524, 524, 524,
641 524, 524, 524, 56, 56, 56, 56, 56, 56, 56,
643 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
644 56, 56, 56, 520, 524, 524, 524, 520, 524, 524,
645 524, 524, 524, 524, 524, 524, 524, 524, 524, 524,
646 524, 524, 56, 56, 56, 56, 56, 520, 56, 56,
647 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
648 56, 56, 56, 56, 56, 520, 524, 524, 520, 524,
649 524, 524, 524, 524, 524, 524, 524, 524, 524, 524,
650 524, 524, 524, 56, 56, 56, 56, 56, 56, 520,
651 520, 520, 56, 56, 56, 56, 56, 56, 520, 56,
652 56, 56, 520, 56, 56, 56, 520, 520, 56, 56,
654 520, 524, 524, 520, 524, 524, 524, 524, 524, 524,
655 524, 524, 524, 524, 56, 56, 56, 56, 56, 520,
656 520, 520, 520, 520, 56, 56, 56, 520, 520, 56,
657 520, 56, 56, 56, 520, 56, 520, 56, 520, 520,
658 520, 520, 56, 520, 524, 524, 524, 524, 524, 524,
659 524, 524, 524, 524, 56, 56, 56, 56, 56, 520,
660 520, 520, 520, 56, 56, 56, 520, 520, 56, 520,
661 56, 520, 56, 520, 56, 520, 56, 520, 520, 520,
662 520, 56, 524, 524, 524, 524, 520, 520, 56, 56,
663 56, 520, 520, 520, 520, 56, 56, 520, 520, 520,
665 520, 56, 520, 520, 520, 520, 520, 520, 520, 520,
666 56, 520, 520, 520, 520, 520, 524, 524, 520, 520,
667 56, 520, 56, 520, 520, 520, 520, 56, 520, 520,
668 520, 520, 56, 520, 520, 520, 520, 520, 520, 520,
669 520, 520, 520, 520, 520, 524, 520, 520, 56, 520,
670 56, 520, 520, 520, 520, 56, 520, 520, 520, 520,
671 56, 520, 520, 520, 520, 520, 520, 520, 520, 520,
672 520, 520, 520, 520, 520, 520, 520, 520, 56, 520,
673 520, 520, 520, 520, 520, 520, 520, 520, 520, 520,
674 520, 520, 520, 520, 520, 520, 520, 520, 520, 520,
676 520, 520, 520, 56, 520, 520, 520, 520, 520, 520,
677 520, 520, 520, 520, 520, 520, 520, 520, 520, 520,
678 520, 520, 520, 520, 520, 56, 520, 520, 520, 520,
679 520, 520, 520, 520, 520, 520, 520, 520, 520, 520,
680 520, 520, 520, 520, 520, 520, 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,
687 520, 520, 520, 520, 520, 520, 520, 520, 520, 520,
688 520, 520, 520, 520, 520, 520, 520, 520, 520, 0,
689 520, 520, 520, 520, 520
692 static yyconst flex_int16_t yy_nxt
[1786] =
694 4, 5, 6, 7, 8, 4, 7, 9, 4, 10,
695 11, 11, 11, 11, 11, 11, 11, 12, 7, 4,
696 13, 13, 14, 15, 16, 17, 13, 18, 19, 20,
697 13, 21, 22, 13, 13, 13, 13, 23, 24, 25,
698 13, 13, 13, 13, 13, 13, 4, 4, 13, 13,
699 14, 15, 16, 17, 13, 18, 19, 20, 13, 21,
700 22, 13, 13, 13, 13, 23, 24, 25, 13, 13,
701 13, 13, 13, 13, 28, 33, 38, 34, 34, 34,
702 34, 34, 34, 34, 35, 35, 35, 35, 35, 35,
703 35, 36, 39, 41, 37, 43, 40, 44, 45, 50,
705 47, 52, 53, 51, 38, 28, 42, 96, 97, 98,
706 99, 48, 103, 111, 112, 113, 29, 49, 133, 36,
707 39, 41, 37, 43, 40, 44, 45, 50, 47, 52,
708 53, 51, 70, 220, 42, 96, 97, 98, 99, 48,
709 103, 111, 112, 113, 221, 49, 133, 29, 56, 56,
710 56, 56, 56, 56, 56, 32, 134, 135, 56, 57,
711 58, 59, 56, 56, 56, 60, 61, 56, 56, 56,
712 56, 62, 56, 63, 56, 64, 65, 66, 67, 68,
713 56, 56, 56, 56, 134, 135, 56, 57, 58, 59,
714 56, 56, 56, 60, 61, 56, 56, 56, 56, 62,
716 56, 63, 56, 64, 65, 66, 67, 68, 56, 56,
717 56, 56, 69, 69, 69, 69, 69, 69, 69, 32,
718 519, 32, 32, 32, 32, 32, 511, 71, 71, 71,
719 71, 71, 71, 71, 32, 510, 507, 32, 33, 503,
720 72, 72, 72, 72, 72, 72, 72, 73, 73, 73,
721 73, 73, 73, 73, 32, 502, 32, 32, 32, 32,
722 32, 498, 32, 32, 32, 308, 32, 32, 136, 32,
723 94, 489, 32, 32, 75, 32, 309, 32, 32, 32,
724 76, 32, 95, 74, 32, 32, 32, 137, 77, 32,
725 32, 32, 139, 82, 32, 32, 136, 32, 94, 32,
727 486, 32, 75, 475, 32, 32, 32, 470, 76, 140,
728 95, 74, 32, 79, 78, 137, 77, 141, 32, 32,
729 139, 82, 32, 32, 32, 81, 469, 32, 80, 32,
730 32, 32, 32, 144, 32, 32, 32, 140, 87, 452,
731 446, 79, 78, 439, 32, 141, 32, 438, 83, 32,
732 32, 437, 434, 81, 32, 387, 80, 32, 32, 385,
733 145, 144, 32, 32, 384, 88, 32, 32, 32, 380,
734 32, 32, 32, 148, 377, 32, 83, 27, 27, 27,
735 27, 84, 27, 27, 85, 85, 27, 89, 145, 32,
736 360, 359, 90, 88, 27, 27, 27, 32, 100, 149,
738 32, 148, 91, 32, 32, 32, 32, 146, 32, 32,
739 353, 32, 101, 341, 147, 89, 152, 104, 102, 105,
740 90, 106, 107, 29, 85, 32, 100, 149, 32, 32,
741 91, 108, 109, 92, 142, 146, 153, 143, 110, 154,
742 101, 93, 147, 32, 152, 104, 102, 105, 32, 106,
743 107, 114, 114, 114, 114, 114, 114, 114, 322, 108,
744 109, 92, 142, 316, 153, 143, 110, 154, 32, 93,
745 56, 56, 56, 155, 174, 306, 56, 56, 304, 298,
746 175, 178, 56, 179, 56, 183, 56, 56, 56, 56,
747 56, 118, 118, 118, 118, 118, 118, 118, 56, 56,
749 56, 155, 174, 32, 56, 56, 32, 32, 175, 178,
750 56, 179, 56, 183, 56, 56, 56, 56, 56, 32,
751 295, 294, 32, 115, 288, 116, 116, 116, 116, 116,
752 116, 116, 32, 287, 272, 32, 33, 119, 117, 117,
753 117, 117, 117, 117, 117, 32, 32, 32, 32, 32,
754 32, 32, 32, 242, 237, 32, 32, 32, 184, 185,
755 32, 32, 32, 32, 186, 119, 32, 32, 187, 32,
756 123, 229, 32, 32, 228, 32, 197, 193, 189, 138,
757 32, 120, 121, 32, 32, 188, 184, 185, 32, 124,
758 32, 122, 186, 55, 32, 32, 187, 32, 32, 32,
760 32, 32, 32, 32, 32, 32, 32, 125, 520, 120,
761 121, 55, 32, 188, 46, 190, 31, 124, 32, 122,
762 126, 32, 32, 32, 30, 520, 32, 26, 32, 32,
763 32, 32, 32, 520, 520, 125, 32, 32, 520, 32,
764 32, 520, 32, 190, 32, 520, 128, 129, 126, 27,
765 27, 27, 27, 84, 27, 27, 85, 85, 27, 520,
766 32, 32, 127, 32, 32, 191, 27, 27, 27, 32,
767 520, 32, 150, 131, 128, 129, 176, 180, 32, 32,
768 130, 32, 32, 192, 177, 194, 181, 151, 182, 195,
769 127, 196, 200, 191, 198, 29, 85, 215, 132, 520,
771 150, 131, 520, 32, 176, 180, 32, 216, 130, 32,
772 32, 192, 177, 194, 181, 151, 182, 195, 520, 196,
773 200, 32, 520, 520, 199, 215, 132, 156, 156, 156,
774 156, 156, 156, 156, 32, 216, 520, 32, 32, 520,
775 157, 157, 157, 157, 157, 157, 157, 32, 217, 32,
776 32, 115, 199, 158, 158, 158, 158, 158, 158, 158,
777 32, 520, 520, 32, 32, 520, 117, 117, 117, 117,
778 117, 117, 117, 520, 218, 520, 217, 32, 159, 159,
779 159, 159, 159, 159, 159, 32, 520, 520, 32, 32,
780 32, 32, 219, 32, 32, 32, 32, 32, 520, 222,
782 520, 32, 218, 32, 32, 32, 520, 32, 520, 160,
783 32, 32, 32, 161, 32, 32, 32, 32, 32, 223,
784 219, 163, 520, 164, 224, 225, 162, 222, 32, 32,
785 520, 520, 32, 32, 32, 166, 32, 160, 168, 520,
786 226, 161, 32, 520, 32, 32, 32, 223, 520, 163,
787 165, 164, 224, 225, 162, 32, 32, 32, 32, 32,
788 32, 32, 32, 166, 520, 167, 168, 32, 226, 169,
789 32, 32, 32, 520, 32, 520, 32, 32, 32, 32,
790 115, 520, 520, 32, 227, 32, 32, 32, 171, 520,
791 230, 520, 170, 167, 173, 231, 232, 169, 520, 32,
793 520, 32, 172, 201, 201, 201, 201, 201, 201, 201,
794 32, 32, 227, 520, 32, 32, 171, 32, 230, 32,
795 170, 520, 173, 231, 232, 32, 32, 520, 32, 202,
796 172, 203, 203, 203, 203, 203, 203, 203, 204, 204,
797 204, 204, 204, 204, 204, 205, 32, 520, 32, 32,
798 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
799 520, 520, 32, 520, 207, 32, 32, 208, 32, 520,
800 520, 32, 520, 205, 32, 32, 520, 32, 520, 32,
801 32, 32, 32, 32, 32, 233, 520, 32, 32, 32,
802 209, 32, 520, 234, 520, 211, 206, 32, 32, 32,
804 32, 32, 32, 32, 32, 32, 210, 32, 32, 520,
805 235, 236, 520, 233, 32, 238, 241, 212, 209, 520,
806 32, 234, 32, 211, 243, 213, 239, 32, 32, 240,
807 520, 32, 32, 520, 210, 520, 250, 214, 235, 236,
808 32, 520, 32, 238, 241, 212, 520, 32, 520, 520,
809 520, 520, 243, 213, 239, 520, 255, 240, 244, 244,
810 244, 244, 244, 244, 244, 214, 32, 520, 520, 32,
811 32, 32, 245, 245, 245, 245, 245, 245, 245, 32,
812 256, 520, 32, 202, 255, 246, 246, 246, 246, 246,
813 246, 246, 32, 520, 32, 32, 32, 32, 32, 520,
815 520, 32, 520, 248, 32, 32, 249, 520, 256, 32,
816 32, 251, 520, 32, 32, 257, 32, 258, 259, 32,
817 32, 32, 32, 260, 32, 32, 261, 247, 32, 262,
818 252, 32, 32, 263, 264, 32, 32, 32, 32, 32,
819 32, 32, 32, 257, 32, 258, 259, 265, 266, 267,
820 253, 260, 268, 32, 261, 247, 269, 262, 252, 32,
821 270, 263, 264, 271, 32, 273, 274, 275, 276, 277,
822 278, 32, 254, 279, 280, 265, 266, 267, 253, 32,
823 268, 32, 281, 282, 269, 520, 32, 520, 270, 32,
824 202, 271, 520, 273, 274, 275, 276, 277, 278, 520,
826 254, 279, 280, 32, 520, 289, 32, 32, 520, 32,
827 281, 282, 32, 32, 520, 283, 283, 283, 283, 283,
828 283, 283, 32, 284, 32, 32, 32, 32, 32, 32,
829 285, 290, 32, 289, 286, 32, 32, 32, 291, 32,
830 32, 32, 32, 32, 32, 292, 32, 32, 32, 293,
831 32, 284, 32, 32, 32, 296, 297, 299, 302, 290,
832 300, 303, 305, 307, 310, 32, 291, 32, 301, 311,
833 312, 313, 314, 292, 315, 32, 520, 293, 319, 520,
834 32, 520, 32, 296, 297, 299, 302, 32, 300, 303,
835 305, 307, 310, 32, 320, 321, 301, 311, 312, 313,
837 314, 32, 315, 323, 32, 32, 319, 317, 317, 317,
838 317, 317, 317, 317, 32, 520, 32, 32, 32, 32,
839 32, 32, 320, 321, 32, 32, 324, 325, 326, 520,
840 327, 323, 328, 329, 330, 331, 520, 332, 333, 334,
841 335, 336, 337, 318, 32, 338, 339, 340, 342, 343,
842 344, 345, 520, 347, 324, 325, 326, 32, 327, 32,
843 328, 329, 330, 331, 32, 332, 333, 334, 335, 336,
844 337, 318, 348, 338, 339, 340, 342, 343, 344, 345,
845 32, 347, 32, 32, 32, 32, 32, 349, 350, 520,
846 351, 352, 354, 355, 356, 520, 357, 520, 358, 361,
848 348, 362, 363, 364, 365, 366, 367, 368, 369, 372,
849 32, 373, 374, 32, 32, 349, 350, 346, 351, 352,
850 354, 355, 356, 32, 357, 32, 358, 361, 375, 362,
851 363, 364, 365, 366, 367, 368, 369, 372, 370, 373,
852 374, 376, 378, 379, 381, 346, 371, 382, 383, 386,
853 388, 389, 390, 32, 391, 392, 375, 393, 394, 395,
854 396, 397, 398, 399, 400, 401, 370, 402, 403, 376,
855 378, 379, 381, 404, 371, 382, 383, 386, 388, 389,
856 390, 405, 391, 392, 406, 393, 394, 395, 396, 397,
857 398, 399, 400, 401, 407, 402, 403, 408, 409, 410,
859 411, 404, 412, 413, 414, 415, 416, 417, 418, 405,
860 419, 420, 406, 421, 422, 423, 424, 425, 426, 427,
861 428, 429, 407, 430, 431, 408, 409, 410, 411, 432,
862 412, 413, 414, 415, 416, 417, 418, 433, 419, 420,
863 435, 421, 422, 423, 424, 425, 426, 427, 428, 429,
864 436, 430, 431, 440, 441, 442, 443, 432, 444, 445,
865 447, 448, 449, 450, 451, 433, 453, 454, 435, 455,
866 456, 457, 458, 459, 460, 461, 462, 463, 436, 464,
867 465, 440, 441, 442, 443, 466, 444, 445, 447, 448,
868 449, 450, 451, 467, 453, 454, 468, 455, 456, 457,
870 458, 459, 460, 461, 462, 463, 471, 464, 465, 472,
871 473, 474, 476, 466, 477, 478, 479, 480, 481, 482,
872 483, 467, 484, 485, 468, 487, 488, 490, 491, 492,
873 493, 494, 495, 496, 471, 497, 499, 472, 473, 474,
874 476, 500, 477, 478, 479, 480, 481, 482, 483, 501,
875 484, 485, 504, 487, 488, 490, 491, 492, 493, 494,
876 495, 496, 505, 497, 499, 506, 508, 509, 512, 500,
877 513, 514, 515, 516, 517, 518, 520, 501, 520, 520,
878 504, 520, 520, 520, 520, 520, 520, 520, 520, 520,
879 505, 520, 520, 506, 508, 509, 512, 520, 513, 514,
881 515, 516, 517, 518, 27, 27, 54, 54, 86, 86,
882 3, 520, 520, 520, 520, 520, 520, 520, 520, 520,
883 520, 520, 520, 520, 520, 520, 520, 520, 520, 520,
884 520, 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
892 static yyconst flex_int16_t yy_chk
[1786] =
894 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
895 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
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, 8, 11, 15, 11, 11, 11,
902 11, 11, 11, 11, 12, 12, 12, 12, 12, 12,
903 12, 14, 16, 17, 14, 18, 16, 19, 20, 23,
905 22, 24, 25, 23, 15, 27, 17, 58, 59, 60,
906 61, 22, 63, 66, 67, 68, 8, 22, 94, 14,
907 16, 17, 14, 18, 16, 19, 20, 23, 22, 24,
908 25, 23, 524, 179, 17, 58, 59, 60, 61, 22,
909 63, 66, 67, 68, 179, 22, 94, 27, 30, 30,
910 30, 30, 30, 30, 30, 522, 95, 96, 30, 30,
911 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
912 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
913 30, 30, 30, 30, 95, 96, 30, 30, 30, 30,
914 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
916 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
917 30, 30, 31, 31, 31, 31, 31, 31, 31, 32,
918 517, 33, 32, 32, 33, 33, 506, 33, 33, 33,
919 33, 33, 33, 33, 34, 505, 500, 34, 34, 495,
920 34, 34, 34, 34, 34, 34, 34, 35, 35, 35,
921 35, 35, 35, 35, 36, 494, 37, 36, 36, 37,
922 37, 490, 32, 38, 33, 275, 38, 38, 97, 39,
923 57, 479, 39, 39, 37, 44, 275, 34, 44, 44,
924 38, 40, 57, 36, 40, 40, 41, 98, 39, 41,
925 41, 42, 100, 44, 42, 42, 97, 36, 57, 37,
927 476, 43, 37, 461, 43, 43, 38, 455, 38, 101,
928 57, 36, 39, 41, 40, 98, 39, 102, 44, 45,
929 100, 44, 45, 45, 40, 43, 454, 47, 42, 41,
930 47, 47, 70, 104, 42, 70, 70, 101, 47, 432,
931 426, 41, 40, 417, 43, 102, 48, 416, 45, 48,
932 48, 415, 412, 43, 49, 361, 42, 49, 49, 357,
933 105, 104, 45, 50, 356, 48, 50, 50, 51, 352,
934 47, 51, 51, 107, 349, 70, 45, 46, 46, 46,
935 46, 46, 46, 46, 46, 46, 46, 49, 105, 48,
936 332, 331, 50, 48, 46, 46, 46, 49, 62, 108,
938 52, 107, 51, 52, 52, 53, 50, 106, 53, 53,
939 325, 51, 62, 311, 106, 49, 110, 64, 62, 64,
940 50, 64, 65, 46, 46, 75, 62, 108, 75, 75,
941 51, 65, 65, 52, 103, 106, 111, 103, 65, 112,
942 62, 53, 106, 52, 110, 64, 62, 64, 53, 64,
943 65, 69, 69, 69, 69, 69, 69, 69, 290, 65,
944 65, 52, 103, 282, 111, 103, 65, 112, 75, 53,
945 56, 56, 56, 113, 133, 273, 56, 56, 271, 266,
946 134, 136, 56, 137, 56, 139, 56, 56, 56, 56,
947 56, 73, 73, 73, 73, 73, 73, 73, 56, 56,
949 56, 113, 133, 74, 56, 56, 74, 74, 134, 136,
950 56, 137, 56, 139, 56, 56, 56, 56, 56, 71,
951 263, 262, 71, 71, 256, 71, 71, 71, 71, 71,
952 71, 71, 72, 255, 233, 72, 72, 74, 72, 72,
953 72, 72, 72, 72, 72, 76, 74, 77, 76, 76,
954 77, 77, 78, 199, 195, 78, 78, 79, 140, 141,
955 79, 79, 71, 80, 142, 74, 80, 80, 143, 81,
956 80, 187, 81, 81, 186, 72, 153, 149, 145, 99,
957 82, 76, 78, 82, 82, 144, 140, 141, 76, 81,
958 77, 79, 142, 54, 83, 78, 143, 83, 83, 84,
960 79, 87, 84, 84, 87, 87, 80, 82, 29, 76,
961 78, 26, 81, 144, 21, 146, 10, 81, 89, 79,
962 83, 89, 89, 82, 9, 3, 88, 2, 90, 88,
963 88, 90, 90, 0, 0, 82, 92, 83, 0, 92,
964 92, 0, 84, 146, 87, 0, 89, 90, 83, 85,
965 85, 85, 85, 85, 85, 85, 85, 85, 85, 0,
966 91, 89, 88, 91, 91, 147, 85, 85, 85, 88,
967 0, 90, 109, 92, 89, 90, 135, 138, 93, 92,
968 91, 93, 93, 148, 135, 150, 138, 109, 138, 151,
969 88, 152, 155, 147, 154, 85, 85, 174, 93, 0,
971 109, 92, 0, 91, 135, 138, 132, 175, 91, 132,
972 132, 148, 135, 150, 138, 109, 138, 151, 0, 152,
973 155, 93, 0, 0, 154, 174, 93, 114, 114, 114,
974 114, 114, 114, 114, 115, 175, 0, 115, 115, 0,
975 115, 115, 115, 115, 115, 115, 115, 116, 176, 132,
976 116, 116, 154, 116, 116, 116, 116, 116, 116, 116,
977 117, 0, 0, 117, 117, 0, 117, 117, 117, 117,
978 117, 117, 117, 0, 177, 0, 176, 115, 118, 118,
979 118, 118, 118, 118, 118, 119, 0, 0, 119, 119,
980 116, 120, 178, 121, 120, 120, 121, 121, 0, 180,
982 0, 122, 177, 117, 122, 122, 0, 123, 0, 119,
983 123, 123, 124, 120, 126, 124, 124, 126, 126, 181,
984 178, 122, 0, 123, 182, 183, 121, 180, 119, 125,
985 0, 0, 125, 125, 120, 124, 121, 119, 126, 0,
986 184, 120, 127, 0, 122, 127, 127, 181, 0, 122,
987 123, 123, 182, 183, 121, 124, 128, 126, 129, 128,
988 128, 129, 129, 124, 0, 125, 126, 130, 184, 127,
989 130, 130, 125, 0, 131, 0, 158, 131, 131, 158,
990 158, 0, 0, 161, 185, 127, 161, 161, 129, 0,
991 188, 0, 128, 125, 131, 189, 190, 127, 0, 128,
993 0, 129, 130, 156, 156, 156, 156, 156, 156, 156,
994 130, 160, 185, 0, 160, 160, 129, 131, 188, 158,
995 128, 0, 131, 189, 190, 157, 161, 0, 157, 157,
996 130, 157, 157, 157, 157, 157, 157, 157, 159, 159,
997 159, 159, 159, 159, 159, 160, 162, 0, 163, 162,
998 162, 163, 163, 164, 160, 165, 164, 164, 165, 165,
999 0, 0, 166, 0, 165, 166, 166, 165, 157, 0,
1000 0, 167, 0, 160, 167, 167, 0, 168, 0, 169,
1001 168, 168, 169, 169, 170, 191, 0, 170, 170, 162,
1002 167, 163, 0, 192, 0, 169, 164, 171, 165, 172,
1004 171, 171, 172, 172, 173, 166, 168, 173, 173, 0,
1005 193, 194, 0, 191, 167, 196, 198, 170, 167, 0,
1006 168, 192, 169, 169, 200, 171, 197, 170, 207, 197,
1007 0, 207, 207, 0, 168, 0, 207, 173, 193, 194,
1008 171, 0, 172, 196, 198, 170, 0, 173, 0, 0,
1009 0, 0, 200, 171, 197, 0, 215, 197, 201, 201,
1010 201, 201, 201, 201, 201, 173, 202, 0, 0, 202,
1011 202, 207, 202, 202, 202, 202, 202, 202, 202, 203,
1012 216, 0, 203, 203, 215, 203, 203, 203, 203, 203,
1013 203, 203, 205, 0, 206, 205, 205, 206, 206, 0,
1015 0, 208, 0, 206, 208, 208, 206, 0, 216, 202,
1016 209, 208, 0, 209, 209, 217, 210, 218, 219, 210,
1017 210, 211, 203, 220, 211, 211, 222, 205, 212, 223,
1018 209, 212, 212, 224, 225, 205, 213, 206, 214, 213,
1019 213, 214, 214, 217, 208, 218, 219, 226, 227, 228,
1020 210, 220, 229, 209, 222, 205, 230, 223, 209, 210,
1021 231, 224, 225, 232, 211, 234, 235, 236, 237, 238,
1022 239, 212, 214, 240, 241, 226, 227, 228, 210, 213,
1023 229, 214, 242, 243, 230, 0, 246, 0, 231, 246,
1024 246, 232, 0, 234, 235, 236, 237, 238, 239, 0,
1026 214, 240, 241, 247, 0, 257, 247, 247, 0, 245,
1027 242, 243, 245, 245, 0, 245, 245, 245, 245, 245,
1028 245, 245, 248, 247, 249, 248, 248, 249, 249, 246,
1029 248, 258, 250, 257, 249, 250, 250, 251, 259, 252,
1030 251, 251, 252, 252, 253, 260, 247, 253, 253, 261,
1031 254, 247, 245, 254, 254, 264, 265, 267, 269, 258,
1032 268, 270, 272, 274, 276, 248, 259, 249, 268, 277,
1033 278, 279, 280, 260, 281, 250, 0, 261, 287, 0,
1034 251, 0, 252, 264, 265, 267, 269, 253, 268, 270,
1035 272, 274, 276, 254, 288, 289, 268, 277, 278, 279,
1037 280, 283, 281, 291, 283, 283, 287, 283, 283, 283,
1038 283, 283, 283, 283, 284, 0, 285, 284, 284, 285,
1039 285, 286, 288, 289, 286, 286, 292, 293, 294, 0,
1040 295, 291, 296, 298, 299, 300, 0, 301, 302, 303,
1041 304, 305, 307, 284, 283, 308, 308, 310, 312, 313,
1042 315, 316, 0, 319, 292, 293, 294, 284, 295, 285,
1043 296, 298, 299, 300, 286, 301, 302, 303, 304, 305,
1044 307, 284, 320, 308, 308, 310, 312, 313, 315, 316,
1045 317, 319, 318, 317, 317, 318, 318, 321, 322, 0,
1046 323, 324, 326, 327, 328, 0, 329, 0, 330, 333,
1048 320, 334, 335, 336, 337, 338, 339, 340, 341, 343,
1049 346, 344, 345, 346, 346, 321, 322, 318, 323, 324,
1050 326, 327, 328, 317, 329, 318, 330, 333, 347, 334,
1051 335, 336, 337, 338, 339, 340, 341, 343, 342, 344,
1052 345, 348, 350, 351, 353, 318, 342, 354, 355, 358,
1053 362, 363, 364, 346, 365, 366, 347, 367, 368, 369,
1054 370, 371, 372, 374, 375, 376, 342, 377, 378, 348,
1055 350, 351, 353, 379, 342, 354, 355, 358, 362, 363,
1056 364, 380, 365, 366, 381, 367, 368, 369, 370, 371,
1057 372, 374, 375, 376, 382, 377, 378, 383, 385, 386,
1059 387, 379, 388, 389, 390, 391, 392, 393, 395, 380,
1060 396, 397, 381, 398, 400, 401, 402, 403, 404, 405,
1061 406, 407, 382, 408, 409, 383, 385, 386, 387, 410,
1062 388, 389, 390, 391, 392, 393, 395, 411, 396, 397,
1063 413, 398, 400, 401, 402, 403, 404, 405, 406, 407,
1064 414, 408, 409, 419, 420, 422, 423, 410, 424, 425,
1065 427, 428, 429, 430, 431, 411, 433, 435, 413, 436,
1066 438, 439, 440, 442, 443, 444, 445, 447, 414, 448,
1067 449, 419, 420, 422, 423, 450, 424, 425, 427, 428,
1068 429, 430, 431, 451, 433, 435, 453, 436, 438, 439,
1070 440, 442, 443, 444, 445, 447, 456, 448, 449, 457,
1071 459, 460, 462, 450, 463, 464, 465, 466, 467, 468,
1072 469, 451, 471, 472, 453, 477, 478, 480, 481, 482,
1073 483, 484, 485, 487, 456, 488, 491, 457, 459, 460,
1074 462, 492, 463, 464, 465, 466, 467, 468, 469, 493,
1075 471, 472, 496, 477, 478, 480, 481, 482, 483, 484,
1076 485, 487, 497, 488, 491, 499, 501, 504, 507, 492,
1077 508, 512, 513, 514, 515, 516, 0, 493, 0, 0,
1078 496, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1079 497, 0, 0, 499, 501, 504, 507, 0, 508, 512,
1081 513, 514, 515, 516, 521, 521, 523, 523, 525, 525,
1082 520, 520, 520, 520, 520, 520, 520, 520, 520, 520,
1083 520, 520, 520, 520, 520, 520, 520, 520, 520, 520,
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
1092 static yyconst flex_int16_t yy_rule_linenum
[65] =
1094 79, 81, 83, 85, 87, 90, 94, 96, 98, 99,
1095 100, 101, 102, 103, 104, 105, 106, 107, 108, 109,
1096 110, 111, 112, 113, 114, 115, 116, 117, 118, 119,
1097 120, 121, 122, 123, 124, 125, 127, 128, 130, 132,
1098 133, 134, 135, 136, 137, 139, 140, 143, 148, 149,
1099 150, 152, 153, 154, 155, 156, 157, 158, 159, 160,
1103 /* The intent behind this definition is that it'll catch
1104 * any uses of REJECT which flex missed.
1106 #define REJECT reject_used_but_not_detected
1107 #define yymore() yymore_used_but_not_detected
1108 #define YY_MORE_ADJ 0
1109 #define YY_RESTORE_YY_MORE_OFFSET
1110 #line 1 "libmemcached/csl/scanner.l"
1111 /* vim:expandtab:shiftwidth=2:tabstop=2:smarttab:
1113 * Configure Scripting Language
1115 * Copyright (C) 2011 DataDifferental, http://datadifferential.com
1117 * This program is free software: you can redistribute it and/or modify
1118 * it under the terms of the GNU Affero General Public License as
1119 * published by the Free Software Foundation, either version 3 of the
1120 * License, or (at your option) any later version.
1122 * This program is distributed in the hope that it will be useful,
1123 * but WITHOUT ANY WARRANTY; without even the implied warranty of
1124 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
1125 * GNU Affero General Public License for more details.
1127 * You should have received a copy of the GNU Affero General Public License
1128 * along with this program. If not, see <http://www.gnu.org/licenses/>.
1131 #line 40 "libmemcached/csl/scanner.l"
1135 #define PARAM config_get_extra(yyscanner)
1137 #define get_lex_chars(buffer, result, max_size, context) \
1139 if (context->pos >= context->length) \
1145 result= (int)(context->length - context->pos); \
1146 (size_t)result > (size_t)max_size ? result= max_size : 0; \
1147 memcpy(buffer, context->buf + context->pos, result); \
1148 context->pos += result; \
1153 #define YY_INPUT(buffer, result, max_size) get_lex_chars(buffer, result, max_size, PARAM)
1155 #line 1156 "libmemcached/csl/scanner.cc"
1159 #ifndef YY_NO_UNISTD_H
1160 /* Special case for "unistd.h", since it is non-ANSI. We include it way
1161 * down here because we want the user's section 1 to have been scanned first.
1162 * The user has a chance to override it with an option.
1171 #ifndef YY_EXTRA_TYPE
1172 #define YY_EXTRA_TYPE void *
1175 /* %if-c-only Reentrant structure and macros (non-C++). */
1178 /* Holds the entire state of the reentrant scanner. */
1182 /* User-defined. Not touched by flex. */
1183 YY_EXTRA_TYPE yyextra_r
;
1185 /* The rest are the same as the globals declared in the non-reentrant scanner. */
1186 FILE *yyin_r
, *yyout_r
;
1187 size_t yy_buffer_stack_top
; /**< index of top of stack. */
1188 size_t yy_buffer_stack_max
; /**< capacity of stack. */
1189 YY_BUFFER_STATE
* yy_buffer_stack
; /**< Stack as an array. */
1191 yy_size_t yy_n_chars
;
1196 int yy_did_buffer_switch_on_eof
;
1197 int yy_start_stack_ptr
;
1198 int yy_start_stack_depth
;
1199 int *yy_start_stack
;
1200 yy_state_type yy_last_accepting_state
;
1201 char* yy_last_accepting_cpos
;
1204 int yy_flex_debug_r
;
1212 }; /* end struct yyguts_t */
1216 static int yy_init_globals (yyscan_t yyscanner
);
1222 /* This must go here because YYSTYPE and YYLTYPE are included
1223 * from bison output in section 1.*/
1224 # define yylval yyg->yylval_r
1226 int config_lex_init (yyscan_t
* scanner
);
1228 int config_lex_init_extra (YY_EXTRA_TYPE user_defined
,yyscan_t
* scanner
);
1232 /* %endif End reentrant structures and macros. */
1234 /* Accessor methods to globals.
1235 These are made visible to non-reentrant scanners for convenience. */
1237 int config_lex_destroy (yyscan_t yyscanner
);
1239 int config_get_debug (yyscan_t yyscanner
);
1241 void config_set_debug (int debug_flag
,yyscan_t yyscanner
);
1243 YY_EXTRA_TYPE
config_get_extra (yyscan_t yyscanner
);
1245 void config_set_extra (YY_EXTRA_TYPE user_defined
,yyscan_t yyscanner
);
1247 FILE *config_get_in (yyscan_t yyscanner
);
1249 void config_set_in (FILE * in_str
,yyscan_t yyscanner
);
1251 FILE *config_get_out (yyscan_t yyscanner
);
1253 void config_set_out (FILE * out_str
,yyscan_t yyscanner
);
1255 yy_size_t
config_get_leng (yyscan_t yyscanner
);
1257 char *config_get_text (yyscan_t yyscanner
);
1259 int config_get_lineno (yyscan_t yyscanner
);
1261 void config_set_lineno (int line_number
,yyscan_t yyscanner
);
1263 /* %if-bison-bridge */
1265 YYSTYPE
* config_get_lval (yyscan_t yyscanner
);
1267 void config_set_lval (YYSTYPE
* yylval_param
,yyscan_t yyscanner
);
1271 /* Macros after this point can all be overridden by user definitions in
1275 #ifndef YY_SKIP_YYWRAP
1277 extern "C" int config_wrap (yyscan_t yyscanner
);
1279 extern int config_wrap (yyscan_t yyscanner
);
1283 /* %not-for-header */
1285 /* %ok-for-header */
1290 static void yy_flex_strncpy (char *,yyconst
char *,int ,yyscan_t yyscanner
);
1293 #ifdef YY_NEED_STRLEN
1294 static int yy_flex_strlen (yyconst
char * ,yyscan_t yyscanner
);
1298 /* %if-c-only Standard (non-C++) definition */
1299 /* %not-for-header */
1302 static int yyinput (yyscan_t yyscanner
);
1304 static int input (yyscan_t yyscanner
);
1306 /* %ok-for-header */
1315 /* Amount of stuff to slurp up with each read. */
1316 #ifndef YY_READ_BUF_SIZE
1317 #define YY_READ_BUF_SIZE 8192
1320 /* Copy whatever the last rule matched to the standard output. */
1322 /* %if-c-only Standard (non-C++) definition */
1323 /* This used to be an fputs(), but since the string might contain NUL's,
1324 * we now use fwrite().
1326 #define ECHO fwrite( yytext, yyleng, 1, yyout )
1328 /* %if-c++-only C++ definition */
1332 /* Gets input and stuffs it into "buf". number of characters read, or YY_NULL,
1333 * is returned in "result".
1336 #define YY_INPUT(buf,result,max_size) \
1337 /* %% [5.0] fread()/read() definition of YY_INPUT goes here unless we're doing C++ \ */\
1338 if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \
1342 for ( n = 0; n < max_size && \
1343 (c = getc( yyin )) != EOF && c != '\n'; ++n ) \
1344 buf[n] = (char) c; \
1346 buf[n++] = (char) c; \
1347 if ( c == EOF && ferror( yyin ) ) \
1348 YY_FATAL_ERROR( "input in flex scanner failed" ); \
1354 while ( (result = fread(buf, 1, max_size, yyin))==0 && ferror(yyin)) \
1356 if( errno != EINTR) \
1358 YY_FATAL_ERROR( "input in flex scanner failed" ); \
1366 /* %if-c++-only C++ definition \ */\
1371 /* No semi-colon after return; correct usage is to write "yyterminate();" -
1372 * we don't want an extra ';' after the "return" because that will cause
1373 * some compilers to complain about unreachable statements.
1376 #define yyterminate() return YY_NULL
1379 /* Number of entries by which start-condition stack grows. */
1380 #ifndef YY_START_STACK_INCR
1381 #define YY_START_STACK_INCR 25
1384 /* Report a fatal error. */
1385 #ifndef YY_FATAL_ERROR
1387 #define YY_FATAL_ERROR(msg) yy_fatal_error( msg , yyscanner)
1393 /* %if-tables-serialization structures and prototypes */
1394 /* %not-for-header */
1396 /* %ok-for-header */
1398 /* %not-for-header */
1400 /* %tables-yydmap generated elements */
1402 /* end tables serialization structures and prototypes */
1404 /* %ok-for-header */
1406 /* Default declaration of generated scanner - a define so the user can
1407 * easily add parameters.
1410 #define YY_DECL_IS_OURS 1
1411 /* %if-c-only Standard (non-C++) definition */
1413 extern int config_lex \
1414 (YYSTYPE
* yylval_param
,yyscan_t yyscanner
);
1416 #define YY_DECL int config_lex \
1417 (YYSTYPE * yylval_param , yyscan_t yyscanner)
1419 /* %if-c++-only C++ definition */
1421 #endif /* !YY_DECL */
1423 /* Code executed at the beginning of each rule, after yytext and yyleng
1426 #ifndef YY_USER_ACTION
1427 #define YY_USER_ACTION
1430 /* Code executed at the end of each rule. */
1432 #define YY_BREAK break;
1435 /* %% [6.0] YY_RULE_SETUP definition goes here */
1436 #define YY_RULE_SETUP \
1438 YY_CURRENT_BUFFER_LVALUE->yy_at_bol = \
1439 (yytext[yyleng - 1] == '\n'); \
1442 /* %not-for-header */
1444 /** The main scanner function which does all the work.
1448 register yy_state_type yy_current_state
;
1449 register char *yy_cp
, *yy_bp
;
1450 register int yy_act
;
1451 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
1453 /* %% [7.0] user's declarations go here */
1454 #line 76 "libmemcached/csl/scanner.l"
1458 #line 1459 "libmemcached/csl/scanner.cc"
1460 yylval
= yylval_param
;
1462 if ( !yyg
->yy_init
)
1470 if ( ! yyg
->yy_start
)
1471 yyg
->yy_start
= 1; /* first start state */
1487 if ( ! YY_CURRENT_BUFFER
) {
1488 config_ensure_buffer_stack (yyscanner
);
1489 YY_CURRENT_BUFFER_LVALUE
=
1490 config__create_buffer(yyin
,YY_BUF_SIZE
,yyscanner
);
1493 config__load_buffer_state(yyscanner
);
1496 while ( 1 ) /* loops until end-of-file is reached */
1498 /* %% [8.0] yymore()-related code goes here */
1499 yy_cp
= yyg
->yy_c_buf_p
;
1501 /* Support of yytext. */
1502 *yy_cp
= yyg
->yy_hold_char
;
1504 /* yy_bp points to the position in yy_ch_buf of the start of
1509 /* %% [9.0] code to set up and find next match goes here */
1510 yy_current_state
= yyg
->yy_start
;
1511 yy_current_state
+= YY_AT_BOL();
1515 register YY_CHAR yy_c
= yy_ec
[YY_SC_TO_UI(*yy_cp
)];
1516 if ( yy_accept
[yy_current_state
] )
1518 yyg
->yy_last_accepting_state
= yy_current_state
;
1519 yyg
->yy_last_accepting_cpos
= yy_cp
;
1521 while ( yy_chk
[yy_base
[yy_current_state
] + yy_c
] != yy_current_state
)
1523 yy_current_state
= (int) yy_def
[yy_current_state
];
1524 if ( yy_current_state
>= 521 )
1525 yy_c
= yy_meta
[(unsigned int) yy_c
];
1527 yy_current_state
= yy_nxt
[yy_base
[yy_current_state
] + (unsigned int) yy_c
];
1530 while ( yy_base
[yy_current_state
] != 1711 );
1533 /* %% [10.0] code to find the action number goes here */
1534 yy_act
= yy_accept
[yy_current_state
];
1536 { /* have to back up */
1537 yy_cp
= yyg
->yy_last_accepting_cpos
;
1538 yy_current_state
= yyg
->yy_last_accepting_state
;
1539 yy_act
= yy_accept
[yy_current_state
];
1542 YY_DO_BEFORE_ACTION
;
1544 /* %% [11.0] code for yylineno update goes here */
1546 do_action
: /* This label is used only to access EOF actions. */
1548 /* %% [12.0] debug code goes here */
1549 if ( yy_flex_debug
)
1552 fprintf( stderr
, "--scanner backing up\n" );
1553 else if ( yy_act
< 65 )
1554 fprintf( stderr
, "--accepting rule at line %ld (\"%s\")\n",
1555 (long)yy_rule_linenum
[yy_act
], yytext
);
1556 else if ( yy_act
== 65 )
1557 fprintf( stderr
, "--accepting default rule (\"%s\")\n",
1559 else if ( yy_act
== 66 )
1560 fprintf( stderr
, "--(end of buffer or a NUL)\n" );
1562 fprintf( stderr
, "--EOF (start condition %d)\n", YY_START
);
1566 { /* beginning of action switch */
1567 /* %% [13.0] actions go here */
1568 case 0: /* must back up */
1569 /* undo the effects of YY_DO_BEFORE_ACTION */
1570 *yy_cp
= yyg
->yy_hold_char
;
1571 yy_cp
= yyg
->yy_last_accepting_cpos
;
1572 yy_current_state
= yyg
->yy_last_accepting_state
;
1573 goto yy_find_action
;
1577 #line 79 "libmemcached/csl/scanner.l"
1578 { return yytext
[0];}
1582 #line 81 "libmemcached/csl/scanner.l"
1583 { yylval
->number
= atoi(yytext
); return (NUMBER
); }
1587 #line 83 "libmemcached/csl/scanner.l"
1588 { yylval
->number
= atoi(yytext
+1); return PORT
; }
1592 #line 85 "libmemcached/csl/scanner.l"
1593 { yylval
->number
= atoi(yytext
+2); return WEIGHT_START
; }
1596 /* rule 5 can match eol */
1598 #line 87 "libmemcached/csl/scanner.l"
1599 ; /* skip whitespace */
1602 *yy_cp
= yyg
->yy_hold_char
; /* undo effects of setting up yytext */
1603 yyg
->yy_c_buf_p
= yy_cp
-= 1;
1604 YY_DO_BEFORE_ACTION
; /* set up yytext again */
1606 #line 90 "libmemcached/csl/scanner.l"
1613 #line 94 "libmemcached/csl/scanner.l"
1614 { yyextra
->begin
= yytext
; yyextra
->set_server(); return yyextra
->previous_token
= SERVER
; }
1618 #line 96 "libmemcached/csl/scanner.l"
1619 { yyextra
->begin
= yytext
; return yyextra
->previous_token
= SOCKET
; }
1623 #line 98 "libmemcached/csl/scanner.l"
1624 { yyextra
->begin
= yytext
; return yyextra
->previous_token
= BINARY_PROTOCOL
; }
1628 #line 99 "libmemcached/csl/scanner.l"
1629 { yyextra
->begin
= yytext
; return yyextra
->previous_token
= BUFFER_REQUESTS
; }
1633 #line 100 "libmemcached/csl/scanner.l"
1634 { yyextra
->begin
= yytext
; return yyextra
->previous_token
= CONFIGURE_FILE
; }
1638 #line 101 "libmemcached/csl/scanner.l"
1639 { yyextra
->begin
= yytext
; return yyextra
->previous_token
= CONNECT_TIMEOUT
; }
1643 #line 102 "libmemcached/csl/scanner.l"
1644 { yyextra
->begin
= yytext
; return yyextra
->previous_token
= DISTRIBUTION
; }
1648 #line 103 "libmemcached/csl/scanner.l"
1649 { yyextra
->begin
= yytext
; return yyextra
->previous_token
= HASH_WITH_NAMESPACE
; }
1653 #line 104 "libmemcached/csl/scanner.l"
1654 { yyextra
->begin
= yytext
; return yyextra
->previous_token
= HASH
; }
1658 #line 105 "libmemcached/csl/scanner.l"
1659 { yyextra
->begin
= yytext
; return yyextra
->previous_token
= IO_BYTES_WATERMARK
; }
1663 #line 106 "libmemcached/csl/scanner.l"
1664 { yyextra
->begin
= yytext
; return yyextra
->previous_token
= IO_KEY_PREFETCH
; }
1668 #line 107 "libmemcached/csl/scanner.l"
1669 { yyextra
->begin
= yytext
; return yyextra
->previous_token
= IO_MSG_WATERMARK
; }
1673 #line 108 "libmemcached/csl/scanner.l"
1674 { yyextra
->begin
= yytext
; return yyextra
->previous_token
= NOREPLY
; }
1678 #line 109 "libmemcached/csl/scanner.l"
1679 { yyextra
->begin
= yytext
; return yyextra
->previous_token
= NUMBER_OF_REPLICAS
; }
1683 #line 110 "libmemcached/csl/scanner.l"
1684 { yyextra
->begin
= yytext
; return yyextra
->previous_token
= POLL_TIMEOUT
; }
1688 #line 111 "libmemcached/csl/scanner.l"
1689 { yyextra
->begin
= yytext
; return yyextra
->previous_token
= RANDOMIZE_REPLICA_READ
; }
1693 #line 112 "libmemcached/csl/scanner.l"
1694 { yyextra
->begin
= yytext
; return yyextra
->previous_token
= RCV_TIMEOUT
; }
1698 #line 113 "libmemcached/csl/scanner.l"
1699 { yyextra
->begin
= yytext
; return yyextra
->previous_token
= REMOVE_FAILED_SERVERS
; }
1703 #line 114 "libmemcached/csl/scanner.l"
1704 { yyextra
->begin
= yytext
; return yyextra
->previous_token
= RETRY_TIMEOUT
; }
1708 #line 115 "libmemcached/csl/scanner.l"
1709 { yyextra
->begin
= yytext
; return yyextra
->previous_token
= SND_TIMEOUT
; }
1713 #line 116 "libmemcached/csl/scanner.l"
1714 { yyextra
->begin
= yytext
; return yyextra
->previous_token
= SOCKET_RECV_SIZE
; }
1718 #line 117 "libmemcached/csl/scanner.l"
1719 { yyextra
->begin
= yytext
; return yyextra
->previous_token
= SOCKET_SEND_SIZE
; }
1723 #line 118 "libmemcached/csl/scanner.l"
1724 { yyextra
->begin
= yytext
; return yyextra
->previous_token
= SORT_HOSTS
; }
1728 #line 119 "libmemcached/csl/scanner.l"
1729 { yyextra
->begin
= yytext
; return yyextra
->previous_token
= SUPPORT_CAS
; }
1733 #line 120 "libmemcached/csl/scanner.l"
1734 { yyextra
->begin
= yytext
; return yyextra
->previous_token
= _TCP_KEEPALIVE
; }
1738 #line 121 "libmemcached/csl/scanner.l"
1739 { yyextra
->begin
= yytext
; return yyextra
->previous_token
= _TCP_KEEPIDLE
; }
1743 #line 122 "libmemcached/csl/scanner.l"
1744 { yyextra
->begin
= yytext
; return yyextra
->previous_token
= _TCP_NODELAY
; }
1748 #line 123 "libmemcached/csl/scanner.l"
1749 { yyextra
->begin
= yytext
; return yyextra
->previous_token
= USE_UDP
; }
1753 #line 124 "libmemcached/csl/scanner.l"
1754 { yyextra
->begin
= yytext
; return yyextra
->previous_token
= USER_DATA
; }
1758 #line 125 "libmemcached/csl/scanner.l"
1759 { yyextra
->begin
= yytext
; return yyextra
->previous_token
= VERIFY_KEY
; }
1763 #line 127 "libmemcached/csl/scanner.l"
1764 { yyextra
->begin
= yytext
; return yyextra
->previous_token
= POOL_MIN
; }
1768 #line 128 "libmemcached/csl/scanner.l"
1769 { yyextra
->begin
= yytext
; return yyextra
->previous_token
= POOL_MAX
; }
1773 #line 130 "libmemcached/csl/scanner.l"
1774 { yyextra
->begin
= yytext
; return yyextra
->previous_token
= NAMESPACE
; }
1778 #line 132 "libmemcached/csl/scanner.l"
1779 { yyextra
->begin
= yytext
; return yyextra
->previous_token
= INCLUDE
; }
1783 #line 133 "libmemcached/csl/scanner.l"
1784 { yyextra
->begin
= yytext
; return yyextra
->previous_token
= RESET
; }
1788 #line 134 "libmemcached/csl/scanner.l"
1789 { yyextra
->begin
= yytext
; return yyextra
->previous_token
= PARSER_DEBUG
; }
1793 #line 135 "libmemcached/csl/scanner.l"
1794 { yyextra
->begin
= yytext
; return yyextra
->previous_token
= SERVERS
; }
1798 #line 136 "libmemcached/csl/scanner.l"
1799 { yyextra
->begin
= yytext
; return yyextra
->previous_token
= END
; }
1803 #line 137 "libmemcached/csl/scanner.l"
1804 { yyextra
->begin
= yytext
; return yyextra
->previous_token
= ERROR
; }
1808 #line 139 "libmemcached/csl/scanner.l"
1809 { return yyextra
->previous_token
= TRUE
; }
1813 #line 140 "libmemcached/csl/scanner.l"
1814 { return yyextra
->previous_token
= FALSE
; }
1818 #line 143 "libmemcached/csl/scanner.l"
1820 yyextra
->begin
= yytext
;
1821 return UNKNOWN_OPTION
;
1826 #line 148 "libmemcached/csl/scanner.l"
1827 { return CONSISTENT
; }
1831 #line 149 "libmemcached/csl/scanner.l"
1836 #line 150 "libmemcached/csl/scanner.l"
1841 #line 152 "libmemcached/csl/scanner.l"
1846 #line 153 "libmemcached/csl/scanner.l"
1851 #line 154 "libmemcached/csl/scanner.l"
1856 #line 155 "libmemcached/csl/scanner.l"
1857 { return FNV1A_64
; }
1861 #line 156 "libmemcached/csl/scanner.l"
1866 #line 157 "libmemcached/csl/scanner.l"
1867 { return FNV1A_32
; }
1871 #line 158 "libmemcached/csl/scanner.l"
1876 #line 159 "libmemcached/csl/scanner.l"
1881 #line 160 "libmemcached/csl/scanner.l"
1886 #line 162 "libmemcached/csl/scanner.l"
1888 yylval
->server
.port
= MEMCACHED_DEFAULT_PORT
;
1889 yylval
->server
.weight
= 1;
1890 yylval
->server
.c_str
= yyextra
->set_hostname(yytext
, yyleng
);
1891 if (yylval
->server
.c_str
)
1892 yylval
->server
.size
= yyleng
;
1898 #line 171 "libmemcached/csl/scanner.l"
1900 if (yyextra
->is_server())
1902 yylval
->server
.port
= MEMCACHED_DEFAULT_PORT
;
1903 yylval
->server
.weight
= 1;
1904 yylval
->server
.c_str
= yyextra
->set_hostname(yytext
, yyleng
);
1905 if (yylval
->server
.c_str
)
1906 yylval
->server
.size
= yyleng
;
1911 yylval
->string
.c_str
= yytext
;
1912 yylval
->string
.size
= yyleng
;
1918 /* rule 63 can match eol */
1920 #line 189 "libmemcached/csl/scanner.l"
1922 config_get_text(yyscanner
)[yyleng
-1]= 0;
1923 yylval
->string
.c_str
= yytext
+1;
1924 yylval
->string
.size
= yyleng
-2;
1925 return QUOTED_STRING
;
1930 #line 196 "libmemcached/csl/scanner.l"
1932 yyextra
->begin
= yytext
;
1938 #line 201 "libmemcached/csl/scanner.l"
1941 #line 1942 "libmemcached/csl/scanner.cc"
1942 case YY_STATE_EOF(INITIAL
):
1945 case YY_END_OF_BUFFER
:
1947 /* Amount of text matched not including the EOB char. */
1948 int yy_amount_of_matched_text
= (int) (yy_cp
- yyg
->yytext_ptr
) - 1;
1950 /* Undo the effects of YY_DO_BEFORE_ACTION. */
1951 *yy_cp
= yyg
->yy_hold_char
;
1952 YY_RESTORE_YY_MORE_OFFSET
1954 if ( YY_CURRENT_BUFFER_LVALUE
->yy_buffer_status
== YY_BUFFER_NEW
)
1956 /* We're scanning a new file or input source. It's
1957 * possible that this happened because the user
1958 * just pointed yyin at a new source and called
1959 * config_lex(). If so, then we have to assure
1960 * consistency between YY_CURRENT_BUFFER and our
1961 * globals. Here is the right place to do so, because
1962 * this is the first action (other than possibly a
1963 * back-up) that will match for the new input source.
1965 yyg
->yy_n_chars
= YY_CURRENT_BUFFER_LVALUE
->yy_n_chars
;
1966 YY_CURRENT_BUFFER_LVALUE
->yy_input_file
= yyin
;
1967 YY_CURRENT_BUFFER_LVALUE
->yy_buffer_status
= YY_BUFFER_NORMAL
;
1970 /* Note that here we test for yy_c_buf_p "<=" to the position
1971 * of the first EOB in the buffer, since yy_c_buf_p will
1972 * already have been incremented past the NUL character
1973 * (since all states make transitions on EOB to the
1974 * end-of-buffer state). Contrast this with the test
1977 if ( yyg
->yy_c_buf_p
<= &YY_CURRENT_BUFFER_LVALUE
->yy_ch_buf
[yyg
->yy_n_chars
] )
1978 { /* This was really a NUL. */
1979 yy_state_type yy_next_state
;
1981 yyg
->yy_c_buf_p
= yyg
->yytext_ptr
+ yy_amount_of_matched_text
;
1983 yy_current_state
= yy_get_previous_state( yyscanner
);
1985 /* Okay, we're now positioned to make the NUL
1986 * transition. We couldn't have
1987 * yy_get_previous_state() go ahead and do it
1988 * for us because it doesn't know how to deal
1989 * with the possibility of jamming (and we don't
1990 * want to build jamming into it because then it
1991 * will run more slowly).
1994 yy_next_state
= yy_try_NUL_trans( yy_current_state
, yyscanner
);
1996 yy_bp
= yyg
->yytext_ptr
+ YY_MORE_ADJ
;
1998 if ( yy_next_state
)
2000 /* Consume the NUL. */
2001 yy_cp
= ++yyg
->yy_c_buf_p
;
2002 yy_current_state
= yy_next_state
;
2008 /* %% [14.0] code to do back-up for compressed tables and set up yy_cp goes here */
2009 yy_cp
= yyg
->yy_c_buf_p
;
2010 goto yy_find_action
;
2014 else switch ( yy_get_next_buffer( yyscanner
) )
2016 case EOB_ACT_END_OF_FILE
:
2018 yyg
->yy_did_buffer_switch_on_eof
= 0;
2020 if ( config_wrap(yyscanner
) )
2022 /* Note: because we've taken care in
2023 * yy_get_next_buffer() to have set up
2024 * yytext, we can now set up
2025 * yy_c_buf_p so that if some total
2026 * hoser (like flex itself) wants to
2027 * call the scanner after we return the
2028 * YY_NULL, it'll still work - another
2029 * YY_NULL will get returned.
2031 yyg
->yy_c_buf_p
= yyg
->yytext_ptr
+ YY_MORE_ADJ
;
2033 yy_act
= YY_STATE_EOF(YY_START
);
2039 if ( ! yyg
->yy_did_buffer_switch_on_eof
)
2045 case EOB_ACT_CONTINUE_SCAN
:
2047 yyg
->yytext_ptr
+ yy_amount_of_matched_text
;
2049 yy_current_state
= yy_get_previous_state( yyscanner
);
2051 yy_cp
= yyg
->yy_c_buf_p
;
2052 yy_bp
= yyg
->yytext_ptr
+ YY_MORE_ADJ
;
2055 case EOB_ACT_LAST_MATCH
:
2057 &YY_CURRENT_BUFFER_LVALUE
->yy_ch_buf
[yyg
->yy_n_chars
];
2059 yy_current_state
= yy_get_previous_state( yyscanner
);
2061 yy_cp
= yyg
->yy_c_buf_p
;
2062 yy_bp
= yyg
->yytext_ptr
+ YY_MORE_ADJ
;
2063 goto yy_find_action
;
2070 "fatal flex scanner internal error--no action found" );
2071 } /* end of action switch */
2072 } /* end of scanning one token */
2073 } /* end of config_lex */
2074 /* %ok-for-header */
2077 /* %not-for-header */
2079 /* %ok-for-header */
2083 /* yy_get_next_buffer - try to read in a new buffer
2085 * Returns a code representing an action:
2086 * EOB_ACT_LAST_MATCH -
2087 * EOB_ACT_CONTINUE_SCAN - continue scanning from current position
2088 * EOB_ACT_END_OF_FILE - end of file
2091 static int yy_get_next_buffer (yyscan_t yyscanner
)
2096 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
2097 register char *dest
= YY_CURRENT_BUFFER_LVALUE
->yy_ch_buf
;
2098 register char *source
= yyg
->yytext_ptr
;
2099 register int number_to_move
, i
;
2102 if ( yyg
->yy_c_buf_p
> &YY_CURRENT_BUFFER_LVALUE
->yy_ch_buf
[yyg
->yy_n_chars
+ 1] )
2104 "fatal flex scanner internal error--end of buffer missed" );
2106 if ( YY_CURRENT_BUFFER_LVALUE
->yy_fill_buffer
== 0 )
2107 { /* Don't try to fill the buffer, so this is an EOF. */
2108 if ( yyg
->yy_c_buf_p
- yyg
->yytext_ptr
- YY_MORE_ADJ
== 1 )
2110 /* We matched a single character, the EOB, so
2111 * treat this as a final EOF.
2113 return EOB_ACT_END_OF_FILE
;
2118 /* We matched some text prior to the EOB, first
2121 return EOB_ACT_LAST_MATCH
;
2125 /* Try to read more data. */
2127 /* First move last chars to start of buffer. */
2128 number_to_move
= (int) (yyg
->yy_c_buf_p
- yyg
->yytext_ptr
) - 1;
2130 for ( i
= 0; i
< number_to_move
; ++i
)
2131 *(dest
++) = *(source
++);
2133 if ( YY_CURRENT_BUFFER_LVALUE
->yy_buffer_status
== YY_BUFFER_EOF_PENDING
)
2134 /* don't do the read, it's not guaranteed to return an EOF,
2137 YY_CURRENT_BUFFER_LVALUE
->yy_n_chars
= yyg
->yy_n_chars
= 0;
2141 yy_size_t num_to_read
=
2142 YY_CURRENT_BUFFER_LVALUE
->yy_buf_size
- number_to_move
- 1;
2144 while ( num_to_read
<= 0 )
2145 { /* Not enough room in the buffer - grow it. */
2147 /* just a shorter name for the current buffer */
2148 YY_BUFFER_STATE b
= YY_CURRENT_BUFFER
;
2150 int yy_c_buf_p_offset
=
2151 (int) (yyg
->yy_c_buf_p
- b
->yy_ch_buf
);
2153 if ( b
->yy_is_our_buffer
)
2155 yy_size_t new_size
= b
->yy_buf_size
* 2;
2157 if ( new_size
<= 0 )
2158 b
->yy_buf_size
+= b
->yy_buf_size
/ 8;
2160 b
->yy_buf_size
*= 2;
2162 b
->yy_ch_buf
= (char *)
2163 /* Include room in for 2 EOB chars. */
2164 config_realloc((void *) b
->yy_ch_buf
,b
->yy_buf_size
+ 2 ,yyscanner
);
2167 /* Can't grow it, we don't own it. */
2170 if ( ! b
->yy_ch_buf
)
2172 "fatal error - scanner input buffer overflow" );
2174 yyg
->yy_c_buf_p
= &b
->yy_ch_buf
[yy_c_buf_p_offset
];
2176 num_to_read
= YY_CURRENT_BUFFER_LVALUE
->yy_buf_size
-
2181 if ( num_to_read
> YY_READ_BUF_SIZE
)
2182 num_to_read
= YY_READ_BUF_SIZE
;
2184 /* Read in more data. */
2185 YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE
->yy_ch_buf
[number_to_move
]),
2186 yyg
->yy_n_chars
, num_to_read
);
2188 YY_CURRENT_BUFFER_LVALUE
->yy_n_chars
= yyg
->yy_n_chars
;
2191 if ( yyg
->yy_n_chars
== 0 )
2193 if ( number_to_move
== YY_MORE_ADJ
)
2195 ret_val
= EOB_ACT_END_OF_FILE
;
2196 config_restart(yyin
,yyscanner
);
2201 ret_val
= EOB_ACT_LAST_MATCH
;
2202 YY_CURRENT_BUFFER_LVALUE
->yy_buffer_status
=
2203 YY_BUFFER_EOF_PENDING
;
2208 ret_val
= EOB_ACT_CONTINUE_SCAN
;
2210 if ((yy_size_t
) (yyg
->yy_n_chars
+ number_to_move
) > YY_CURRENT_BUFFER_LVALUE
->yy_buf_size
) {
2211 /* Extend the array by 50%, plus the number we really need. */
2212 yy_size_t new_size
= yyg
->yy_n_chars
+ number_to_move
+ (yyg
->yy_n_chars
>> 1);
2213 YY_CURRENT_BUFFER_LVALUE
->yy_ch_buf
= (char *) config_realloc((void *) YY_CURRENT_BUFFER_LVALUE
->yy_ch_buf
,new_size
,yyscanner
);
2214 if ( ! YY_CURRENT_BUFFER_LVALUE
->yy_ch_buf
)
2215 YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" );
2218 yyg
->yy_n_chars
+= number_to_move
;
2219 YY_CURRENT_BUFFER_LVALUE
->yy_ch_buf
[yyg
->yy_n_chars
] = YY_END_OF_BUFFER_CHAR
;
2220 YY_CURRENT_BUFFER_LVALUE
->yy_ch_buf
[yyg
->yy_n_chars
+ 1] = YY_END_OF_BUFFER_CHAR
;
2222 yyg
->yytext_ptr
= &YY_CURRENT_BUFFER_LVALUE
->yy_ch_buf
[0];
2227 /* yy_get_previous_state - get the state just before the EOB char was reached */
2230 /* %not-for-header */
2232 static yy_state_type
yy_get_previous_state (yyscan_t yyscanner
)
2237 register yy_state_type yy_current_state
;
2238 register char *yy_cp
;
2239 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
2241 /* %% [15.0] code to get the start state into yy_current_state goes here */
2242 yy_current_state
= yyg
->yy_start
;
2243 yy_current_state
+= YY_AT_BOL();
2245 for ( yy_cp
= yyg
->yytext_ptr
+ YY_MORE_ADJ
; yy_cp
< yyg
->yy_c_buf_p
; ++yy_cp
)
2247 /* %% [16.0] code to find the next state goes here */
2248 register YY_CHAR yy_c
= (*yy_cp
? yy_ec
[YY_SC_TO_UI(*yy_cp
)] : 1);
2249 if ( yy_accept
[yy_current_state
] )
2251 yyg
->yy_last_accepting_state
= yy_current_state
;
2252 yyg
->yy_last_accepting_cpos
= yy_cp
;
2254 while ( yy_chk
[yy_base
[yy_current_state
] + yy_c
] != yy_current_state
)
2256 yy_current_state
= (int) yy_def
[yy_current_state
];
2257 if ( yy_current_state
>= 521 )
2258 yy_c
= yy_meta
[(unsigned int) yy_c
];
2260 yy_current_state
= yy_nxt
[yy_base
[yy_current_state
] + (unsigned int) yy_c
];
2263 return yy_current_state
;
2266 /* yy_try_NUL_trans - try to make a transition on the NUL character
2269 * next_state = yy_try_NUL_trans( current_state );
2272 static yy_state_type
yy_try_NUL_trans (yy_state_type yy_current_state
, yyscan_t yyscanner
)
2277 register int yy_is_jam
;
2278 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
; /* This var may be unused depending upon options. */
2279 /* %% [17.0] code to find the next state, and perhaps do backing up, goes here */
2280 register char *yy_cp
= yyg
->yy_c_buf_p
;
2282 register YY_CHAR yy_c
= 1;
2283 if ( yy_accept
[yy_current_state
] )
2285 yyg
->yy_last_accepting_state
= yy_current_state
;
2286 yyg
->yy_last_accepting_cpos
= yy_cp
;
2288 while ( yy_chk
[yy_base
[yy_current_state
] + yy_c
] != yy_current_state
)
2290 yy_current_state
= (int) yy_def
[yy_current_state
];
2291 if ( yy_current_state
>= 521 )
2292 yy_c
= yy_meta
[(unsigned int) yy_c
];
2294 yy_current_state
= yy_nxt
[yy_base
[yy_current_state
] + (unsigned int) yy_c
];
2295 yy_is_jam
= (yy_current_state
== 520);
2297 return yy_is_jam
? 0 : yy_current_state
;
2307 static int yyinput (yyscan_t yyscanner
)
2309 static int input (yyscan_t yyscanner
)
2317 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
2319 *yyg
->yy_c_buf_p
= yyg
->yy_hold_char
;
2321 if ( *yyg
->yy_c_buf_p
== YY_END_OF_BUFFER_CHAR
)
2323 /* yy_c_buf_p now points to the character we want to return.
2324 * If this occurs *before* the EOB characters, then it's a
2325 * valid NUL; if not, then we've hit the end of the buffer.
2327 if ( yyg
->yy_c_buf_p
< &YY_CURRENT_BUFFER_LVALUE
->yy_ch_buf
[yyg
->yy_n_chars
] )
2328 /* This was really a NUL. */
2329 *yyg
->yy_c_buf_p
= '\0';
2332 { /* need more input */
2333 yy_size_t offset
= yyg
->yy_c_buf_p
- yyg
->yytext_ptr
;
2336 switch ( yy_get_next_buffer( yyscanner
) )
2338 case EOB_ACT_LAST_MATCH
:
2339 /* This happens because yy_g_n_b()
2340 * sees that we've accumulated a
2341 * token and flags that we need to
2342 * try matching the token before
2343 * proceeding. But for input(),
2344 * there's no matching to consider.
2345 * So convert the EOB_ACT_LAST_MATCH
2346 * to EOB_ACT_END_OF_FILE.
2349 /* Reset buffer status. */
2350 config_restart(yyin
,yyscanner
);
2354 case EOB_ACT_END_OF_FILE
:
2356 if ( config_wrap(yyscanner
) )
2359 if ( ! yyg
->yy_did_buffer_switch_on_eof
)
2362 return yyinput(yyscanner
);
2364 return input(yyscanner
);
2368 case EOB_ACT_CONTINUE_SCAN
:
2369 yyg
->yy_c_buf_p
= yyg
->yytext_ptr
+ offset
;
2375 c
= *(unsigned char *) yyg
->yy_c_buf_p
; /* cast for 8-bit char's */
2376 *yyg
->yy_c_buf_p
= '\0'; /* preserve yytext */
2377 yyg
->yy_hold_char
= *++yyg
->yy_c_buf_p
;
2379 /* %% [19.0] update BOL and yylineno */
2380 YY_CURRENT_BUFFER_LVALUE
->yy_at_bol
= (c
== '\n');
2385 #endif /* ifndef YY_NO_INPUT */
2388 /** Immediately switch to a different input stream.
2389 * @param input_file A readable stream.
2390 * @param yyscanner The scanner object.
2391 * @note This function does not reset the start condition to @c INITIAL .
2394 void config_restart (FILE * input_file
, yyscan_t yyscanner
)
2399 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
2401 if ( ! YY_CURRENT_BUFFER
){
2402 config_ensure_buffer_stack (yyscanner
);
2403 YY_CURRENT_BUFFER_LVALUE
=
2404 config__create_buffer(yyin
,YY_BUF_SIZE
,yyscanner
);
2407 config__init_buffer(YY_CURRENT_BUFFER
,input_file
,yyscanner
);
2408 config__load_buffer_state(yyscanner
);
2411 /** Switch to a different input buffer.
2412 * @param new_buffer The new input buffer.
2413 * @param yyscanner The scanner object.
2416 void config__switch_to_buffer (YY_BUFFER_STATE new_buffer
, yyscan_t yyscanner
)
2421 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
2423 /* TODO. We should be able to replace this entire function body
2425 * config_pop_buffer_state();
2426 * config_push_buffer_state(new_buffer);
2428 config_ensure_buffer_stack (yyscanner
);
2429 if ( YY_CURRENT_BUFFER
== new_buffer
)
2432 if ( YY_CURRENT_BUFFER
)
2434 /* Flush out information for old buffer. */
2435 *yyg
->yy_c_buf_p
= yyg
->yy_hold_char
;
2436 YY_CURRENT_BUFFER_LVALUE
->yy_buf_pos
= yyg
->yy_c_buf_p
;
2437 YY_CURRENT_BUFFER_LVALUE
->yy_n_chars
= yyg
->yy_n_chars
;
2440 YY_CURRENT_BUFFER_LVALUE
= new_buffer
;
2441 config__load_buffer_state(yyscanner
);
2443 /* We don't actually know whether we did this switch during
2444 * EOF (config_wrap()) processing, but the only time this flag
2445 * is looked at is after config_wrap() is called, so it's safe
2446 * to go ahead and always set it.
2448 yyg
->yy_did_buffer_switch_on_eof
= 1;
2452 static void config__load_buffer_state (yyscan_t yyscanner
)
2457 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
2458 yyg
->yy_n_chars
= YY_CURRENT_BUFFER_LVALUE
->yy_n_chars
;
2459 yyg
->yytext_ptr
= yyg
->yy_c_buf_p
= YY_CURRENT_BUFFER_LVALUE
->yy_buf_pos
;
2460 yyin
= YY_CURRENT_BUFFER_LVALUE
->yy_input_file
;
2461 yyg
->yy_hold_char
= *yyg
->yy_c_buf_p
;
2464 /** Allocate and initialize an input buffer state.
2465 * @param file A readable stream.
2466 * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE.
2467 * @param yyscanner The scanner object.
2468 * @return the allocated buffer state.
2471 YY_BUFFER_STATE
config__create_buffer (FILE * file
, int size
, yyscan_t yyscanner
)
2478 b
= (YY_BUFFER_STATE
) config_alloc(sizeof( struct yy_buffer_state
) ,yyscanner
);
2480 YY_FATAL_ERROR( "out of dynamic memory in config__create_buffer()" );
2482 b
->yy_buf_size
= size
;
2484 /* yy_ch_buf has to be 2 characters longer than the size given because
2485 * we need to put in 2 end-of-buffer characters.
2487 b
->yy_ch_buf
= (char *) config_alloc(b
->yy_buf_size
+ 2 ,yyscanner
);
2488 if ( ! b
->yy_ch_buf
)
2489 YY_FATAL_ERROR( "out of dynamic memory in config__create_buffer()" );
2491 b
->yy_is_our_buffer
= 1;
2493 config__init_buffer(b
,file
,yyscanner
);
2498 /** Destroy the buffer.
2499 * @param b a buffer created with config__create_buffer()
2500 * @param yyscanner The scanner object.
2503 void config__delete_buffer (YY_BUFFER_STATE b
, yyscan_t yyscanner
)
2508 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
2513 if ( b
== YY_CURRENT_BUFFER
) /* Not sure if we should pop here. */
2514 YY_CURRENT_BUFFER_LVALUE
= (YY_BUFFER_STATE
) 0;
2516 if ( b
->yy_is_our_buffer
)
2517 config_free((void *) b
->yy_ch_buf
,yyscanner
);
2519 config_free((void *) b
,yyscanner
);
2525 extern int isatty (int );
2526 #endif /* __cplusplus */
2533 /* Initializes or reinitializes a buffer.
2534 * This function is sometimes called more than once on the same buffer,
2535 * such as during a config_restart() or at EOF.
2538 static void config__init_buffer (YY_BUFFER_STATE b
, FILE * file
, yyscan_t yyscanner
)
2545 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
2547 config__flush_buffer(b
,yyscanner
);
2549 b
->yy_input_file
= file
;
2550 b
->yy_fill_buffer
= 1;
2552 /* If b is the current buffer, then config__init_buffer was _probably_
2553 * called from config_restart() or through yy_get_next_buffer.
2554 * In that case, we don't want to reset the lineno or column.
2556 if (b
!= YY_CURRENT_BUFFER
){
2557 b
->yy_bs_lineno
= 1;
2558 b
->yy_bs_column
= 0;
2563 b
->yy_is_interactive
= file
? (isatty( fileno(file
) ) > 0) : 0;
2571 /** Discard all buffered characters. On the next scan, YY_INPUT will be called.
2572 * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER.
2573 * @param yyscanner The scanner object.
2576 void config__flush_buffer (YY_BUFFER_STATE b
, yyscan_t yyscanner
)
2581 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
2587 /* We always need two end-of-buffer characters. The first causes
2588 * a transition to the end-of-buffer state. The second causes
2589 * a jam in that state.
2591 b
->yy_ch_buf
[0] = YY_END_OF_BUFFER_CHAR
;
2592 b
->yy_ch_buf
[1] = YY_END_OF_BUFFER_CHAR
;
2594 b
->yy_buf_pos
= &b
->yy_ch_buf
[0];
2597 b
->yy_buffer_status
= YY_BUFFER_NEW
;
2599 if ( b
== YY_CURRENT_BUFFER
)
2600 config__load_buffer_state(yyscanner
);
2604 /** Pushes the new state onto the stack. The new state becomes
2605 * the current state. This function will allocate the stack
2607 * @param new_buffer The new state.
2608 * @param yyscanner The scanner object.
2611 void config_push_buffer_state (YY_BUFFER_STATE new_buffer
, yyscan_t yyscanner
)
2616 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
2617 if (new_buffer
== NULL
)
2620 config_ensure_buffer_stack(yyscanner
);
2622 /* This block is copied from config__switch_to_buffer. */
2623 if ( YY_CURRENT_BUFFER
)
2625 /* Flush out information for old buffer. */
2626 *yyg
->yy_c_buf_p
= yyg
->yy_hold_char
;
2627 YY_CURRENT_BUFFER_LVALUE
->yy_buf_pos
= yyg
->yy_c_buf_p
;
2628 YY_CURRENT_BUFFER_LVALUE
->yy_n_chars
= yyg
->yy_n_chars
;
2631 /* Only push if top exists. Otherwise, replace top. */
2632 if (YY_CURRENT_BUFFER
)
2633 yyg
->yy_buffer_stack_top
++;
2634 YY_CURRENT_BUFFER_LVALUE
= new_buffer
;
2636 /* copied from config__switch_to_buffer. */
2637 config__load_buffer_state(yyscanner
);
2638 yyg
->yy_did_buffer_switch_on_eof
= 1;
2643 /** Removes and deletes the top of the stack, if present.
2644 * The next element becomes the new top.
2645 * @param yyscanner The scanner object.
2648 void config_pop_buffer_state (yyscan_t yyscanner
)
2653 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
2654 if (!YY_CURRENT_BUFFER
)
2657 config__delete_buffer(YY_CURRENT_BUFFER
,yyscanner
);
2658 YY_CURRENT_BUFFER_LVALUE
= NULL
;
2659 if (yyg
->yy_buffer_stack_top
> 0)
2660 --yyg
->yy_buffer_stack_top
;
2662 if (YY_CURRENT_BUFFER
) {
2663 config__load_buffer_state(yyscanner
);
2664 yyg
->yy_did_buffer_switch_on_eof
= 1;
2670 /* Allocates the stack if it does not exist.
2671 * Guarantees space for at least one push.
2674 static void config_ensure_buffer_stack (yyscan_t yyscanner
)
2679 yy_size_t num_to_alloc
;
2680 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
2682 if (!yyg
->yy_buffer_stack
) {
2684 /* First allocation is just for 2 elements, since we don't know if this
2685 * scanner will even need a stack. We use 2 instead of 1 to avoid an
2686 * immediate realloc on the next call.
2689 yyg
->yy_buffer_stack
= (struct yy_buffer_state
**)config_alloc
2690 (num_to_alloc
* sizeof(struct yy_buffer_state
*)
2692 if ( ! yyg
->yy_buffer_stack
)
2693 YY_FATAL_ERROR( "out of dynamic memory in config_ensure_buffer_stack()" );
2695 memset(yyg
->yy_buffer_stack
, 0, num_to_alloc
* sizeof(struct yy_buffer_state
*));
2697 yyg
->yy_buffer_stack_max
= num_to_alloc
;
2698 yyg
->yy_buffer_stack_top
= 0;
2702 if (yyg
->yy_buffer_stack_top
>= (yyg
->yy_buffer_stack_max
) - 1){
2704 /* Increase the buffer to prepare for a possible push. */
2705 int grow_size
= 8 /* arbitrary grow size */;
2707 num_to_alloc
= yyg
->yy_buffer_stack_max
+ grow_size
;
2708 yyg
->yy_buffer_stack
= (struct yy_buffer_state
**)config_realloc
2709 (yyg
->yy_buffer_stack
,
2710 num_to_alloc
* sizeof(struct yy_buffer_state
*)
2712 if ( ! yyg
->yy_buffer_stack
)
2713 YY_FATAL_ERROR( "out of dynamic memory in config_ensure_buffer_stack()" );
2715 /* zero only the new slots.*/
2716 memset(yyg
->yy_buffer_stack
+ yyg
->yy_buffer_stack_max
, 0, grow_size
* sizeof(struct yy_buffer_state
*));
2717 yyg
->yy_buffer_stack_max
= num_to_alloc
;
2723 /** Setup the input buffer state to scan directly from a user-specified character buffer.
2724 * @param base the character buffer
2725 * @param size the size in bytes of the character buffer
2726 * @param yyscanner The scanner object.
2727 * @return the newly allocated buffer state object.
2729 YY_BUFFER_STATE
config__scan_buffer (char * base
, yy_size_t size
, yyscan_t yyscanner
)
2734 base
[size
-2] != YY_END_OF_BUFFER_CHAR
||
2735 base
[size
-1] != YY_END_OF_BUFFER_CHAR
)
2736 /* They forgot to leave room for the EOB's. */
2739 b
= (YY_BUFFER_STATE
) config_alloc(sizeof( struct yy_buffer_state
) ,yyscanner
);
2741 YY_FATAL_ERROR( "out of dynamic memory in config__scan_buffer()" );
2743 b
->yy_buf_size
= size
- 2; /* "- 2" to take care of EOB's */
2744 b
->yy_buf_pos
= b
->yy_ch_buf
= base
;
2745 b
->yy_is_our_buffer
= 0;
2746 b
->yy_input_file
= 0;
2747 b
->yy_n_chars
= b
->yy_buf_size
;
2748 b
->yy_is_interactive
= 0;
2750 b
->yy_fill_buffer
= 0;
2751 b
->yy_buffer_status
= YY_BUFFER_NEW
;
2753 config__switch_to_buffer(b
,yyscanner
);
2760 /** Setup the input buffer state to scan a string. The next call to config_lex() will
2761 * scan from a @e copy of @a str.
2762 * @param yystr a NUL-terminated string to scan
2763 * @param yyscanner The scanner object.
2764 * @return the newly allocated buffer state object.
2765 * @note If you want to scan bytes that may contain NUL values, then use
2766 * config__scan_bytes() instead.
2768 YY_BUFFER_STATE
config__scan_string (yyconst
char * yystr
, yyscan_t yyscanner
)
2771 return config__scan_bytes(yystr
,strlen(yystr
) ,yyscanner
);
2776 /** Setup the input buffer state to scan the given bytes. The next call to config_lex() will
2777 * scan from a @e copy of @a bytes.
2778 * @param bytes the byte buffer to scan
2779 * @param len the number of bytes in the buffer pointed to by @a bytes.
2780 * @param yyscanner The scanner object.
2781 * @return the newly allocated buffer state object.
2783 YY_BUFFER_STATE
config__scan_bytes (yyconst
char * yybytes
, yy_size_t _yybytes_len
, yyscan_t yyscanner
)
2789 /* Get memory for full buffer, including space for trailing EOB's. */
2790 n
= _yybytes_len
+ 2;
2791 buf
= (char *) config_alloc(n
,yyscanner
);
2793 YY_FATAL_ERROR( "out of dynamic memory in config__scan_bytes()" );
2795 for ( i
= 0; i
< _yybytes_len
; ++i
)
2796 buf
[i
] = yybytes
[i
];
2798 buf
[_yybytes_len
] = buf
[_yybytes_len
+1] = YY_END_OF_BUFFER_CHAR
;
2800 b
= config__scan_buffer(buf
,n
,yyscanner
);
2802 YY_FATAL_ERROR( "bad buffer in config__scan_bytes()" );
2804 /* It's okay to grow etc. this buffer, and we should throw it
2805 * away when we're done.
2807 b
->yy_is_our_buffer
= 1;
2813 #ifndef YY_EXIT_FAILURE
2814 #define YY_EXIT_FAILURE 2
2818 static void yy_fatal_error (yyconst
char* msg
, yyscan_t yyscanner
)
2820 (void) fprintf( stderr
, "%s\n", msg
);
2821 exit( YY_EXIT_FAILURE
);
2827 /* Redefine yyless() so it works in section 3 code. */
2833 /* Undo effects of setting up yytext. */ \
2834 int yyless_macro_arg = (n); \
2835 YY_LESS_LINENO(yyless_macro_arg);\
2836 yytext[yyleng] = yyg->yy_hold_char; \
2837 yyg->yy_c_buf_p = yytext + yyless_macro_arg; \
2838 yyg->yy_hold_char = *yyg->yy_c_buf_p; \
2839 *yyg->yy_c_buf_p = '\0'; \
2840 yyleng = yyless_macro_arg; \
2844 /* Accessor methods (get/set functions) to struct members. */
2849 /** Get the user-defined data for this scanner.
2850 * @param yyscanner The scanner object.
2852 YY_EXTRA_TYPE
config_get_extra (yyscan_t yyscanner
)
2854 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
2860 /** Get the current line number.
2861 * @param yyscanner The scanner object.
2863 int config_get_lineno (yyscan_t yyscanner
)
2865 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
2867 if (! YY_CURRENT_BUFFER
)
2873 /** Get the current column number.
2874 * @param yyscanner The scanner object.
2876 int config_get_column (yyscan_t yyscanner
)
2878 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
2880 if (! YY_CURRENT_BUFFER
)
2886 /** Get the input stream.
2887 * @param yyscanner The scanner object.
2889 FILE *config_get_in (yyscan_t yyscanner
)
2891 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
2895 /** Get the output stream.
2896 * @param yyscanner The scanner object.
2898 FILE *config_get_out (yyscan_t yyscanner
)
2900 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
2904 /** Get the length of the current token.
2905 * @param yyscanner The scanner object.
2907 yy_size_t
config_get_leng (yyscan_t yyscanner
)
2909 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
2913 /** Get the current token.
2914 * @param yyscanner The scanner object.
2917 char *config_get_text (yyscan_t yyscanner
)
2919 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
2925 /** Set the user-defined data. This data is never touched by the scanner.
2926 * @param user_defined The data to be associated with this scanner.
2927 * @param yyscanner The scanner object.
2929 void config_set_extra (YY_EXTRA_TYPE user_defined
, yyscan_t yyscanner
)
2931 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
2932 yyextra
= user_defined
;
2937 /** Set the current line number.
2938 * @param line_number
2939 * @param yyscanner The scanner object.
2941 void config_set_lineno (int line_number
, yyscan_t yyscanner
)
2943 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
2945 /* lineno is only valid if an input buffer exists. */
2946 if (! YY_CURRENT_BUFFER
)
2947 yy_fatal_error( "config_set_lineno called with no buffer" , yyscanner
);
2949 yylineno
= line_number
;
2952 /** Set the current column.
2953 * @param line_number
2954 * @param yyscanner The scanner object.
2956 void config_set_column (int column_no
, yyscan_t yyscanner
)
2958 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
2960 /* column is only valid if an input buffer exists. */
2961 if (! YY_CURRENT_BUFFER
)
2962 yy_fatal_error( "config_set_column called with no buffer" , yyscanner
);
2964 yycolumn
= column_no
;
2967 /** Set the input stream. This does not discard the current
2969 * @param in_str A readable stream.
2970 * @param yyscanner The scanner object.
2971 * @see config__switch_to_buffer
2973 void config_set_in (FILE * in_str
, yyscan_t yyscanner
)
2975 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
2979 void config_set_out (FILE * out_str
, yyscan_t yyscanner
)
2981 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
2985 int config_get_debug (yyscan_t yyscanner
)
2987 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
2988 return yy_flex_debug
;
2991 void config_set_debug (int bdebug
, yyscan_t yyscanner
)
2993 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
2994 yy_flex_debug
= bdebug
;
3000 /* Accessor methods for yylval and yylloc */
3002 /* %if-bison-bridge */
3004 YYSTYPE
* config_get_lval (yyscan_t yyscanner
)
3006 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
3010 void config_set_lval (YYSTYPE
* yylval_param
, yyscan_t yyscanner
)
3012 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
3013 yylval
= yylval_param
;
3018 /* User-visible API */
3020 /* config_lex_init is special because it creates the scanner itself, so it is
3021 * the ONLY reentrant function that doesn't take the scanner as the last argument.
3022 * That's why we explicitly handle the declaration, instead of using our macros.
3025 int config_lex_init(yyscan_t
* ptr_yy_globals
)
3028 if (ptr_yy_globals
== NULL
){
3033 *ptr_yy_globals
= (yyscan_t
) config_alloc ( sizeof( struct yyguts_t
), NULL
);
3035 if (*ptr_yy_globals
== NULL
){
3040 /* By setting to 0xAA, we expose bugs in yy_init_globals. Leave at 0x00 for releases. */
3041 memset(*ptr_yy_globals
,0x00,sizeof(struct yyguts_t
));
3043 return yy_init_globals ( *ptr_yy_globals
);
3046 /* config_lex_init_extra has the same functionality as config_lex_init, but follows the
3047 * convention of taking the scanner as the last argument. Note however, that
3048 * this is a *pointer* to a scanner, as it will be allocated by this call (and
3049 * is the reason, too, why this function also must handle its own declaration).
3050 * The user defined value in the first argument will be available to config_alloc in
3051 * the yyextra field.
3054 int config_lex_init_extra(YY_EXTRA_TYPE yy_user_defined
,yyscan_t
* ptr_yy_globals
)
3057 struct yyguts_t dummy_yyguts
;
3059 config_set_extra (yy_user_defined
, &dummy_yyguts
);
3061 if (ptr_yy_globals
== NULL
){
3066 *ptr_yy_globals
= (yyscan_t
) config_alloc ( sizeof( struct yyguts_t
), &dummy_yyguts
);
3068 if (*ptr_yy_globals
== NULL
){
3073 /* By setting to 0xAA, we expose bugs in
3074 yy_init_globals. Leave at 0x00 for releases. */
3075 memset(*ptr_yy_globals
,0x00,sizeof(struct yyguts_t
));
3077 config_set_extra (yy_user_defined
, *ptr_yy_globals
);
3079 return yy_init_globals ( *ptr_yy_globals
);
3082 /* %endif if-c-only */
3085 static int yy_init_globals (yyscan_t yyscanner
)
3087 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
3088 /* Initialization is the same as for the non-reentrant scanner.
3089 * This function is called from config_lex_destroy(), so don't allocate here.
3092 yyg
->yy_buffer_stack
= 0;
3093 yyg
->yy_buffer_stack_top
= 0;
3094 yyg
->yy_buffer_stack_max
= 0;
3095 yyg
->yy_c_buf_p
= (char *) 0;
3099 yyg
->yy_start_stack_ptr
= 0;
3100 yyg
->yy_start_stack_depth
= 0;
3101 yyg
->yy_start_stack
= NULL
;
3103 /* Defined in main.c */
3112 /* For future reference: Set errno on error, since we are called by
3119 /* %if-c-only SNIP! this currently causes conflicts with the c++ scanner */
3120 /* config_lex_destroy is for both reentrant and non-reentrant scanners. */
3121 int config_lex_destroy (yyscan_t yyscanner
)
3123 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
3125 /* Pop the buffer stack, destroying each element. */
3126 while(YY_CURRENT_BUFFER
){
3127 config__delete_buffer(YY_CURRENT_BUFFER
,yyscanner
);
3128 YY_CURRENT_BUFFER_LVALUE
= NULL
;
3129 config_pop_buffer_state(yyscanner
);
3132 /* Destroy the stack itself. */
3133 config_free(yyg
->yy_buffer_stack
,yyscanner
);
3134 yyg
->yy_buffer_stack
= NULL
;
3136 /* Destroy the start condition stack. */
3137 config_free(yyg
->yy_start_stack
,yyscanner
);
3138 yyg
->yy_start_stack
= NULL
;
3140 /* Reset the globals. This is important in a non-reentrant scanner so the next time
3141 * config_lex() is called, initialization will occur. */
3142 yy_init_globals( yyscanner
);
3145 /* Destroy the main struct (reentrant only). */
3146 config_free ( yyscanner
, yyscanner
);
3154 * Internal utility routines.
3158 static void yy_flex_strncpy (char* s1
, yyconst
char * s2
, int n
, yyscan_t yyscanner
)
3161 for ( i
= 0; i
< n
; ++i
)
3166 #ifdef YY_NEED_STRLEN
3167 static int yy_flex_strlen (yyconst
char * s
, yyscan_t yyscanner
)
3170 for ( n
= 0; s
[n
]; ++n
)
3177 void *config_alloc (yy_size_t size
, yyscan_t yyscanner
)
3179 return (void *) malloc( size
);
3182 void *config_realloc (void * ptr
, yy_size_t size
, yyscan_t yyscanner
)
3184 /* The cast to (char *) in the following accommodates both
3185 * implementations that use char* generic pointers, and those
3186 * that use void* generic pointers. It works with the latter
3187 * because both ANSI C and C++ allow castless assignment from
3188 * any pointer type to void*, and deal with argument conversions
3189 * as though doing an assignment.
3191 return (void *) realloc( (char *) ptr
, size
);
3194 void config_free (void * ptr
, yyscan_t yyscanner
)
3196 free( (char *) ptr
); /* see config_realloc() for (char *) cast */
3199 /* %if-tables-serialization definitions */
3200 /* %define-yytables The name for this specific scanner's tables. */
3201 #define YYTABLES_NAME "yytables"
3204 /* %ok-for-header */
3206 #line 201 "libmemcached/csl/scanner.l"
3210 void Context::init_scanner()
3212 config_lex_init(&scanner
);
3213 config_set_extra(this,scanner
);
3216 void Context::destroy_scanner()
3218 config_lex_destroy(scanner
);