1 #line 2 "libmemcached/options/scanner.cc"
2 #line 22 "libmemcached/options/scanner.l"
4 #include <libmemcached/common.h>
5 #include <libmemcached/options/context.h>
6 #include <libmemcached/options/parser.h>
7 #include <libmemcached/options/symbol.h>
9 #pragma GCC diagnostic ignored "-Wold-style-cast"
10 #pragma GCC diagnostic ignored "-Wsign-compare"
11 #pragma GCC diagnostic ignored "-Wunused-parameter"
13 #define YY_EXTRA_TYPE Context*
18 #line 19 "libmemcached/options/scanner.cc"
20 #define YY_INT_ALIGNED short int
22 /* A lexical scanner generated by flex */
27 /* %if-not-reentrant */
33 #define YY_FLEX_MAJOR_VERSION 2
34 #define YY_FLEX_MINOR_VERSION 5
35 #define YY_FLEX_SUBMINOR_VERSION 35
36 #if YY_FLEX_SUBMINOR_VERSION > 0
51 /* First, we deal with platform-specific or compiler-specific issues. */
53 /* begin standard C headers. */
61 /* %if-tables-serialization */
63 /* end standard C headers. */
66 /* flex integer type definitions */
71 /* C99 systems have <inttypes.h>. Non-C99 systems may or may not. */
73 #if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
75 /* C99 says to define __STDC_LIMIT_MACROS before including stdint.h,
76 * if you want the limit (max/min) macros for int types.
78 #ifndef __STDC_LIMIT_MACROS
79 #define __STDC_LIMIT_MACROS 1
83 typedef int8_t flex_int8_t
;
84 typedef uint8_t flex_uint8_t
;
85 typedef int16_t flex_int16_t
;
86 typedef uint16_t flex_uint16_t
;
87 typedef int32_t flex_int32_t
;
88 typedef uint32_t flex_uint32_t
;
90 typedef signed char flex_int8_t
;
91 typedef short int flex_int16_t
;
92 typedef int flex_int32_t
;
93 typedef unsigned char flex_uint8_t
;
94 typedef unsigned short int flex_uint16_t
;
95 typedef unsigned int flex_uint32_t
;
98 /* Limits of integral types. */
100 #define INT8_MIN (-128)
103 #define INT16_MIN (-32767-1)
106 #define INT32_MIN (-2147483647-1)
109 #define INT8_MAX (127)
112 #define INT16_MAX (32767)
115 #define INT32_MAX (2147483647)
118 #define UINT8_MAX (255U)
121 #define UINT16_MAX (65535U)
124 #define UINT32_MAX (4294967295U)
127 #endif /* ! FLEXINT_H */
136 /* The "const" storage-class-modifier is valid. */
139 #else /* ! __cplusplus */
141 /* C99 requires __STDC__ to be defined as 1. */
142 #if defined (__STDC__)
146 #endif /* defined (__STDC__) */
147 #endif /* ! __cplusplus */
150 #define yyconst const
155 /* %not-for-header */
157 /* Returned upon end-of-file. */
161 /* %not-for-header */
163 /* Promotes a possibly negative, possibly signed char to an unsigned
164 * integer for use as an array index. If the signed char is negative,
165 * we want to instead treat it as an 8-bit unsigned char, hence the
168 #define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c)
173 /* An opaque pointer. */
174 #ifndef YY_TYPEDEF_YY_SCANNER_T
175 #define YY_TYPEDEF_YY_SCANNER_T
176 typedef void* yyscan_t
;
179 /* For convenience, these vars (plus the bison vars far below)
180 are macros in the reentrant scanner. */
181 #define yyin yyg->yyin_r
182 #define yyout yyg->yyout_r
183 #define yyextra yyg->yyextra_r
184 #define yyleng yyg->yyleng_r
185 #define yytext yyg->yytext_r
186 #define yylineno (YY_CURRENT_BUFFER_LVALUE->yy_bs_lineno)
187 #define yycolumn (YY_CURRENT_BUFFER_LVALUE->yy_bs_column)
188 #define yy_flex_debug yyg->yy_flex_debug_r
192 /* %if-not-reentrant */
195 /* Enter a start condition. This macro really ought to take a parameter,
196 * but we do it the disgusting crufty way forced on us by the ()-less
197 * definition of BEGIN.
199 #define BEGIN yyg->yy_start = 1 + 2 *
201 /* Translate the current start state into a value that can be later handed
202 * to BEGIN to return to the state. The YYSTATE alias is for lex
205 #define YY_START ((yyg->yy_start - 1) / 2)
206 #define YYSTATE YY_START
208 /* Action number for EOF rule of a given start state. */
209 #define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
211 /* Special action meaning "start processing a new file". */
212 #define YY_NEW_FILE config_restart(yyin ,yyscanner )
214 #define YY_END_OF_BUFFER_CHAR 0
216 /* Size of default input buffer. */
218 #define YY_BUF_SIZE 16384
221 /* The state buf must be large enough to hold one state per character in the main buffer.
223 #define YY_STATE_BUF_SIZE ((YY_BUF_SIZE + 2) * sizeof(yy_state_type))
225 #ifndef YY_TYPEDEF_YY_BUFFER_STATE
226 #define YY_TYPEDEF_YY_BUFFER_STATE
227 typedef struct yy_buffer_state
*YY_BUFFER_STATE
;
230 /* %if-not-reentrant */
234 /* %if-not-reentrant */
238 #define EOB_ACT_CONTINUE_SCAN 0
239 #define EOB_ACT_END_OF_FILE 1
240 #define EOB_ACT_LAST_MATCH 2
242 #define YY_LESS_LINENO(n)
244 /* Return all but the first "n" matched characters back to the input stream. */
248 /* Undo effects of setting up yytext. */ \
249 int yyless_macro_arg = (n); \
250 YY_LESS_LINENO(yyless_macro_arg);\
251 *yy_cp = yyg->yy_hold_char; \
252 YY_RESTORE_YY_MORE_OFFSET \
253 yyg->yy_c_buf_p = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \
254 YY_DO_BEFORE_ACTION; /* set up yytext again */ \
258 #define unput(c) yyunput( c, yyg->yytext_ptr , yyscanner )
260 #ifndef YY_TYPEDEF_YY_SIZE_T
261 #define YY_TYPEDEF_YY_SIZE_T
262 typedef size_t yy_size_t
;
265 #ifndef YY_STRUCT_YY_BUFFER_STATE
266 #define YY_STRUCT_YY_BUFFER_STATE
267 struct yy_buffer_state
276 char *yy_ch_buf
; /* input buffer */
277 char *yy_buf_pos
; /* current position in input buffer */
279 /* Size of input buffer in bytes, not including room for EOB
282 yy_size_t yy_buf_size
;
284 /* Number of characters read into yy_ch_buf, not including EOB
289 /* Whether we "own" the buffer - i.e., we know we created it,
290 * and can realloc() it to grow it, and should free() it to
293 int yy_is_our_buffer
;
295 /* Whether this is an "interactive" input source; if so, and
296 * if we're using stdio for input, then we want to use getc()
297 * instead of fread(), to make sure we stop fetching input after
300 int yy_is_interactive
;
302 /* Whether we're considered to be at the beginning of a line.
303 * If so, '^' rules will be active on the next match, otherwise
308 int yy_bs_lineno
; /**< The line count. */
309 int yy_bs_column
; /**< The column count. */
311 /* Whether to try to fill the input buffer when we reach the
316 int yy_buffer_status
;
318 #define YY_BUFFER_NEW 0
319 #define YY_BUFFER_NORMAL 1
320 /* When an EOF's been seen but there's still some text to process
321 * then we mark the buffer as YY_EOF_PENDING, to indicate that we
322 * shouldn't try reading from the input source any more. We might
323 * still have a bunch of tokens to match, though, because of
324 * possible backing-up.
326 * When we actually see the EOF, we change the status to "new"
327 * (via config_restart()), so that the user can continue scanning by
328 * just pointing yyin at a new input file.
330 #define YY_BUFFER_EOF_PENDING 2
333 #endif /* !YY_STRUCT_YY_BUFFER_STATE */
335 /* %if-c-only Standard (non-C++) definition */
336 /* %not-for-header */
338 /* %if-not-reentrant */
344 /* We provide macros for accessing buffer states in case in the
345 * future we want to put the buffer states in a more general
348 * Returns the top of the stack, or NULL.
350 #define YY_CURRENT_BUFFER ( yyg->yy_buffer_stack \
351 ? yyg->yy_buffer_stack[yyg->yy_buffer_stack_top] \
354 /* Same as previous macro, but useful when we know that the buffer stack is not
355 * NULL or when we need an lvalue. For internal use only.
357 #define YY_CURRENT_BUFFER_LVALUE yyg->yy_buffer_stack[yyg->yy_buffer_stack_top]
359 /* %if-c-only Standard (non-C++) definition */
361 /* %if-not-reentrant */
362 /* %not-for-header */
368 void config_restart (FILE *input_file
,yyscan_t yyscanner
);
369 void config__switch_to_buffer (YY_BUFFER_STATE new_buffer
,yyscan_t yyscanner
);
370 YY_BUFFER_STATE
config__create_buffer (FILE *file
,int size
,yyscan_t yyscanner
);
371 void config__delete_buffer (YY_BUFFER_STATE b
,yyscan_t yyscanner
);
372 void config__flush_buffer (YY_BUFFER_STATE b
,yyscan_t yyscanner
);
373 void config_push_buffer_state (YY_BUFFER_STATE new_buffer
,yyscan_t yyscanner
);
374 void config_pop_buffer_state (yyscan_t yyscanner
);
376 static void config_ensure_buffer_stack (yyscan_t yyscanner
);
377 static void config__load_buffer_state (yyscan_t yyscanner
);
378 static void config__init_buffer (YY_BUFFER_STATE b
,FILE *file
,yyscan_t yyscanner
);
380 #define YY_FLUSH_BUFFER config__flush_buffer(YY_CURRENT_BUFFER ,yyscanner)
382 YY_BUFFER_STATE
config__scan_buffer (char *base
,yy_size_t size
,yyscan_t yyscanner
);
383 YY_BUFFER_STATE
config__scan_string (yyconst
char *yy_str
,yyscan_t yyscanner
);
384 YY_BUFFER_STATE
config__scan_bytes (yyconst
char *bytes
,int len
,yyscan_t yyscanner
);
388 void *config_alloc (yy_size_t
,yyscan_t yyscanner
);
389 void *config_realloc (void *,yy_size_t
,yyscan_t yyscanner
);
390 void config_free (void * ,yyscan_t yyscanner
);
392 #define yy_new_buffer config__create_buffer
394 #define yy_set_interactive(is_interactive) \
396 if ( ! YY_CURRENT_BUFFER ){ \
397 config_ensure_buffer_stack (yyscanner); \
398 YY_CURRENT_BUFFER_LVALUE = \
399 config__create_buffer(yyin,YY_BUF_SIZE ,yyscanner); \
401 YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \
404 #define yy_set_bol(at_bol) \
406 if ( ! YY_CURRENT_BUFFER ){\
407 config_ensure_buffer_stack (yyscanner); \
408 YY_CURRENT_BUFFER_LVALUE = \
409 config__create_buffer(yyin,YY_BUF_SIZE ,yyscanner); \
411 YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \
414 #define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol)
416 /* %% [1.0] yytext/yyin/yyout/yy_state_type/yylineno etc. def's & init go here */
417 /* Begin user sect3 */
419 #define config_wrap(n) 1
420 #define YY_SKIP_YYWRAP
424 typedef unsigned char YY_CHAR
;
426 typedef int yy_state_type
;
428 #define yytext_ptr yytext_r
430 /* %if-c-only Standard (non-C++) definition */
432 static yy_state_type
yy_get_previous_state (yyscan_t yyscanner
);
433 static yy_state_type
yy_try_NUL_trans (yy_state_type current_state
,yyscan_t yyscanner
);
434 static int yy_get_next_buffer (yyscan_t yyscanner
);
435 static void yy_fatal_error (yyconst
char msg
[] ,yyscan_t yyscanner
);
439 /* Done after the current pattern has been matched and before the
440 * corresponding action - sets up yytext.
442 #define YY_DO_BEFORE_ACTION \
443 yyg->yytext_ptr = yy_bp; \
444 /* %% [2.0] code to fiddle yytext and yyleng for yymore() goes here \ */\
445 yyleng = (size_t) (yy_cp - yy_bp); \
446 yyg->yy_hold_char = *yy_cp; \
448 /* %% [3.0] code to copy yytext_ptr to yytext[] goes here, if %array \ */\
449 yyg->yy_c_buf_p = yy_cp;
451 /* %% [4.0] data tables for the DFA and the user's section 1 definitions go here */
452 #define YY_NUM_RULES 65
453 #define YY_END_OF_BUFFER 66
454 /* This struct is not used in this scanner,
455 but its presence is necessary. */
458 flex_int32_t yy_verify
;
461 static yyconst flex_int16_t yy_accept
[521] =
463 0, 0, 66, 64, 5, 5, 1, 64, 64, 64,
464 2, 64, 64, 64, 64, 64, 64, 64, 64, 64,
465 64, 64, 64, 64, 64, 64, 0, 63, 0, 48,
466 0, 0, 0, 2, 3, 0, 0, 0, 0, 0,
467 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
468 0, 0, 0, 0, 6, 48, 48, 48, 48, 48,
469 48, 48, 48, 48, 48, 48, 48, 48, 4, 62,
470 62, 2, 3, 62, 53, 62, 44, 62, 62, 62,
471 62, 62, 62, 63, 0, 62, 52, 62, 62, 62,
472 62, 62, 62, 48, 48, 48, 48, 48, 48, 48,
474 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
475 48, 48, 48, 4, 0, 62, 2, 3, 62, 62,
476 62, 62, 62, 62, 62, 62, 62, 62, 62, 62,
477 62, 46, 48, 48, 48, 48, 48, 0, 48, 48,
478 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
479 48, 48, 48, 48, 48, 4, 62, 62, 3, 62,
480 42, 45, 47, 62, 0, 58, 62, 62, 62, 62,
481 62, 41, 62, 48, 48, 48, 48, 48, 48, 0,
482 0, 0, 48, 48, 48, 48, 48, 48, 0, 48,
483 48, 48, 0, 48, 48, 48, 0, 0, 48, 48,
485 4, 0, 62, 3, 62, 0, 62, 62, 62, 62,
486 50, 59, 51, 62, 48, 48, 48, 48, 48, 0,
487 15, 0, 0, 0, 48, 48, 48, 0, 0, 48,
488 0, 48, 48, 48, 0, 48, 0, 48, 0, 0,
489 0, 0, 48, 4, 61, 62, 62, 62, 62, 56,
490 54, 40, 60, 43, 48, 48, 48, 48, 48, 0,
491 0, 0, 0, 48, 48, 48, 0, 0, 48, 0,
492 48, 0, 48, 0, 48, 0, 48, 0, 0, 0,
493 0, 48, 61, 62, 57, 55, 0, 0, 48, 48,
494 48, 0, 0, 0, 0, 48, 19, 0, 0, 0,
496 0, 48, 0, 0, 0, 7, 0, 0, 8, 0,
497 48, 0, 0, 34, 0, 0, 61, 62, 0, 0,
498 48, 0, 48, 0, 0, 0, 0, 48, 0, 0,
499 0, 0, 48, 0, 0, 0, 0, 0, 0, 0,
500 0, 0, 0, 0, 0, 49, 0, 0, 48, 0,
501 48, 0, 0, 0, 0, 48, 0, 0, 38, 37,
502 48, 0, 0, 0, 0, 0, 0, 0, 0, 0,
503 0, 0, 35, 0, 0, 0, 0, 0, 48, 0,
504 0, 0, 0, 39, 0, 0, 0, 0, 0, 0,
505 0, 0, 0, 29, 0, 0, 0, 0, 36, 0,
507 0, 0, 0, 48, 0, 0, 0, 0, 0, 0,
508 0, 0, 0, 0, 0, 0, 0, 30, 0, 0,
509 33, 0, 0, 0, 0, 48, 0, 0, 0, 0,
510 0, 0, 0, 23, 0, 0, 26, 0, 0, 0,
511 32, 0, 0, 0, 0, 13, 0, 0, 0, 0,
512 0, 21, 0, 0, 0, 0, 0, 31, 0, 0,
513 0, 0, 0, 0, 0, 0, 0, 0, 0, 25,
514 0, 0, 9, 10, 11, 0, 0, 0, 0, 0,
515 0, 0, 0, 0, 0, 12, 0, 0, 17, 0,
516 0, 0, 0, 0, 0, 0, 0, 18, 0, 0,
518 0, 27, 28, 0, 0, 0, 0, 0, 14, 16,
519 20, 0, 0, 0, 0, 0, 0, 22, 24, 0
522 static yyconst flex_int32_t yy_ec
[256] =
524 1, 1, 1, 1, 1, 1, 1, 1, 2, 3,
525 1, 1, 2, 1, 1, 1, 1, 1, 1, 1,
526 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
527 1, 4, 1, 5, 6, 1, 1, 1, 1, 1,
528 1, 1, 1, 7, 8, 9, 10, 11, 12, 13,
529 14, 15, 16, 17, 11, 11, 11, 18, 1, 1,
530 19, 1, 20, 1, 21, 22, 23, 24, 25, 26,
531 27, 28, 29, 30, 31, 32, 33, 34, 35, 36,
532 37, 38, 39, 40, 41, 42, 43, 44, 45, 46,
533 1, 47, 1, 1, 48, 1, 49, 50, 51, 52,
535 53, 54, 55, 56, 57, 58, 59, 60, 61, 62,
536 63, 64, 65, 66, 67, 68, 69, 70, 71, 72,
537 73, 74, 1, 1, 1, 1, 1, 1, 1, 1,
538 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
539 1, 1, 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,
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,
549 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
550 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
554 static yyconst flex_int32_t yy_meta
[75] =
556 1, 1, 1, 1, 2, 1, 1, 2, 2, 1,
557 2, 2, 2, 2, 2, 2, 2, 1, 1, 1,
558 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
559 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
560 2, 2, 2, 2, 2, 2, 1, 2, 2, 2,
561 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
562 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
566 static yyconst flex_int16_t yy_base
[526] =
568 0, 622, 626, 1711, 1711, 1711, 1711, 70, 617, 597,
569 67, 74, 0, 57, 52, 59, 73, 57, 64, 74,
570 610, 77, 79, 77, 65, 609, 101, 1711, 606, 138,
571 202, 215, 217, 230, 237, 250, 252, 259, 265, 277,
572 282, 287, 297, 271, 315, 377, 323, 342, 350, 359,
573 364, 396, 401, 591, 1711, 449, 242, 73, 80, 89,
574 76, 378, 78, 397, 398, 91, 76, 91, 441, 328,
575 515, 528, 481, 499, 421, 541, 543, 548, 553, 559,
576 565, 576, 590, 595, 649, 0, 597, 622, 614, 624,
577 656, 632, 674, 85, 131, 124, 230, 249, 572, 260,
579 272, 285, 403, 300, 319, 375, 336, 376, 650, 381,
580 401, 415, 436, 717, 730, 743, 756, 768, 781, 787,
581 789, 797, 803, 808, 825, 810, 838, 852, 854, 863,
582 870, 702, 454, 455, 651, 442, 456, 656, 461, 534,
583 538, 533, 537, 562, 571, 581, 628, 642, 570, 655,
584 650, 656, 569, 687, 664, 893, 921, 872, 928, 907,
585 879, 942, 944, 949, 951, 958, 967, 973, 975, 980,
586 993, 995, 1000, 660, 683, 720, 750, 755, 126, 755,
587 795, 786, 787, 805, 860, 567, 564, 856, 856, 855,
588 941, 969, 971, 987, 547, 981, 996, 976, 546, 999,
590 1048, 1062, 1075, 1711, 1088, 1090, 1024, 1097, 1106, 1112,
591 1117, 1124, 1132, 1134, 1012, 1043, 1089, 1095, 1090, 1081,
592 1711, 1087, 1085, 1107, 1099, 1116, 1111, 1110, 1120, 1124,
593 1132, 1139, 527, 1128, 1138, 1128, 1141, 1132, 1146, 1139,
594 1151, 1159, 1139, 1711, 1205, 1182, 1199, 1218, 1220, 1228,
595 1233, 1235, 1240, 1246, 526, 517, 1165, 1192, 1217, 1217,
596 1225, 514, 513, 1235, 1212, 472, 1229, 1240, 1230, 1229,
597 471, 1223, 457, 1231, 258, 1230, 1230, 1246, 1248, 1237,
598 1254, 456, 1297, 1310, 1312, 1317, 1243, 1257, 1258, 451,
599 1263, 1287, 1289, 1293, 1288, 1310, 0, 1299, 1302, 1292,
601 1304, 1293, 1315, 1315, 1313, 1711, 1318, 1308, 1711, 1309,
602 406, 1313, 1325, 1711, 1311, 1321, 1376, 1378, 1316, 1348,
603 1363, 1349, 1351, 1364, 403, 1355, 1373, 1370, 1371, 1374,
604 373, 372, 1375, 1367, 1382, 1371, 1370, 1381, 1382, 1368,
605 1386, 1418, 1378, 1391, 1388, 1406, 1394, 1405, 367, 1414,
606 1415, 362, 1402, 1423, 1409, 346, 352, 1415, 1711, 1711,
607 348, 1410, 1423, 1428, 1414, 1433, 1424, 1420, 1439, 1429,
608 1438, 1442, 1711, 1419, 1425, 1425, 1442, 1436, 1439, 1448,
609 1464, 1469, 1473, 1711, 1461, 1459, 1463, 1463, 1472, 1470,
610 1466, 1465, 1484, 1711, 1470, 1482, 1480, 1469, 1711, 1480,
612 1491, 1488, 1493, 1485, 1499, 1481, 1497, 1486, 1500, 1490,
613 1513, 334, 1516, 1510, 333, 340, 336, 1711, 1512, 1530,
614 1711, 1533, 1518, 1527, 1525, 322, 1528, 1537, 1523, 1531,
615 1529, 321, 1531, 1711, 1544, 1530, 1711, 1532, 1533, 1548,
616 1711, 1539, 1535, 1551, 1536, 1711, 1553, 1542, 1558, 1565,
617 1562, 1711, 1565, 319, 289, 1578, 1581, 1711, 1579, 1573,
618 285, 1573, 1576, 1583, 1589, 1580, 1590, 1591, 1582, 1711,
619 1577, 1578, 1711, 1711, 1711, 282, 1590, 1606, 253, 1597,
620 1606, 1607, 1606, 1607, 1608, 1711, 1613, 1598, 1711, 243,
621 1616, 1621, 1612, 237, 221, 1630, 1632, 1711, 1627, 229,
623 1625, 1711, 1711, 1643, 217, 208, 1631, 1646, 1711, 1711,
624 1711, 1647, 1635, 1653, 1636, 1652, 202, 1711, 1711, 1711,
625 1704, 154, 1706, 131, 1708
628 static yyconst flex_int16_t yy_def
[526] =
630 520, 1, 520, 520, 520, 520, 520, 521, 520, 520,
631 522, 520, 522, 522, 522, 522, 522, 522, 522, 522,
632 522, 522, 522, 522, 522, 523, 521, 520, 521, 520,
633 520, 524, 524, 524, 520, 524, 524, 524, 524, 524,
634 524, 524, 524, 524, 524, 525, 524, 524, 524, 524,
635 524, 524, 524, 523, 520, 30, 56, 56, 56, 56,
636 56, 56, 56, 56, 56, 56, 56, 56, 520, 524,
637 524, 524, 520, 524, 524, 524, 524, 524, 524, 524,
638 524, 524, 524, 524, 525, 85, 524, 524, 524, 524,
639 524, 524, 524, 56, 56, 56, 56, 56, 56, 56,
641 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
642 56, 56, 56, 520, 524, 524, 524, 520, 524, 524,
643 524, 524, 524, 524, 524, 524, 524, 524, 524, 524,
644 524, 524, 56, 56, 56, 56, 56, 520, 56, 56,
645 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
646 56, 56, 56, 56, 56, 520, 524, 524, 520, 524,
647 524, 524, 524, 524, 524, 524, 524, 524, 524, 524,
648 524, 524, 524, 56, 56, 56, 56, 56, 56, 520,
649 520, 520, 56, 56, 56, 56, 56, 56, 520, 56,
650 56, 56, 520, 56, 56, 56, 520, 520, 56, 56,
652 520, 524, 524, 520, 524, 524, 524, 524, 524, 524,
653 524, 524, 524, 524, 56, 56, 56, 56, 56, 520,
654 520, 520, 520, 520, 56, 56, 56, 520, 520, 56,
655 520, 56, 56, 56, 520, 56, 520, 56, 520, 520,
656 520, 520, 56, 520, 524, 524, 524, 524, 524, 524,
657 524, 524, 524, 524, 56, 56, 56, 56, 56, 520,
658 520, 520, 520, 56, 56, 56, 520, 520, 56, 520,
659 56, 520, 56, 520, 56, 520, 56, 520, 520, 520,
660 520, 56, 524, 524, 524, 524, 520, 520, 56, 56,
661 56, 520, 520, 520, 520, 56, 56, 520, 520, 520,
663 520, 56, 520, 520, 520, 520, 520, 520, 520, 520,
664 56, 520, 520, 520, 520, 520, 524, 524, 520, 520,
665 56, 520, 56, 520, 520, 520, 520, 56, 520, 520,
666 520, 520, 56, 520, 520, 520, 520, 520, 520, 520,
667 520, 520, 520, 520, 520, 524, 520, 520, 56, 520,
668 56, 520, 520, 520, 520, 56, 520, 520, 520, 520,
669 56, 520, 520, 520, 520, 520, 520, 520, 520, 520,
670 520, 520, 520, 520, 520, 520, 520, 520, 56, 520,
671 520, 520, 520, 520, 520, 520, 520, 520, 520, 520,
672 520, 520, 520, 520, 520, 520, 520, 520, 520, 520,
674 520, 520, 520, 56, 520, 520, 520, 520, 520, 520,
675 520, 520, 520, 520, 520, 520, 520, 520, 520, 520,
676 520, 520, 520, 520, 520, 56, 520, 520, 520, 520,
677 520, 520, 520, 520, 520, 520, 520, 520, 520, 520,
678 520, 520, 520, 520, 520, 520, 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,
685 520, 520, 520, 520, 520, 520, 520, 520, 520, 520,
686 520, 520, 520, 520, 520, 520, 520, 520, 520, 0,
687 520, 520, 520, 520, 520
690 static yyconst flex_int16_t yy_nxt
[1786] =
692 4, 5, 6, 7, 8, 4, 7, 9, 4, 10,
693 11, 11, 11, 11, 11, 11, 11, 12, 7, 4,
694 13, 13, 14, 15, 16, 17, 13, 18, 19, 20,
695 13, 21, 22, 13, 13, 13, 13, 23, 24, 25,
696 13, 13, 13, 13, 13, 13, 4, 4, 13, 13,
697 14, 15, 16, 17, 13, 18, 19, 20, 13, 21,
698 22, 13, 13, 13, 13, 23, 24, 25, 13, 13,
699 13, 13, 13, 13, 28, 33, 38, 34, 34, 34,
700 34, 34, 34, 34, 35, 35, 35, 35, 35, 35,
701 35, 36, 39, 41, 37, 43, 40, 44, 45, 50,
703 47, 52, 53, 51, 38, 28, 42, 96, 97, 98,
704 99, 48, 103, 111, 112, 113, 29, 49, 133, 36,
705 39, 41, 37, 43, 40, 44, 45, 50, 47, 52,
706 53, 51, 70, 220, 42, 96, 97, 98, 99, 48,
707 103, 111, 112, 113, 221, 49, 133, 29, 56, 56,
708 56, 56, 56, 56, 56, 32, 134, 135, 56, 57,
709 58, 59, 56, 56, 56, 60, 61, 56, 56, 56,
710 56, 62, 56, 63, 56, 64, 65, 66, 67, 68,
711 56, 56, 56, 56, 134, 135, 56, 57, 58, 59,
712 56, 56, 56, 60, 61, 56, 56, 56, 56, 62,
714 56, 63, 56, 64, 65, 66, 67, 68, 56, 56,
715 56, 56, 69, 69, 69, 69, 69, 69, 69, 32,
716 519, 32, 32, 32, 32, 32, 511, 71, 71, 71,
717 71, 71, 71, 71, 32, 510, 507, 32, 33, 503,
718 72, 72, 72, 72, 72, 72, 72, 73, 73, 73,
719 73, 73, 73, 73, 32, 502, 32, 32, 32, 32,
720 32, 498, 32, 32, 32, 308, 32, 32, 136, 32,
721 94, 489, 32, 32, 75, 32, 309, 32, 32, 32,
722 76, 32, 95, 74, 32, 32, 32, 137, 77, 32,
723 32, 32, 139, 82, 32, 32, 136, 32, 94, 32,
725 486, 32, 75, 475, 32, 32, 32, 470, 76, 140,
726 95, 74, 32, 79, 78, 137, 77, 141, 32, 32,
727 139, 82, 32, 32, 32, 81, 469, 32, 80, 32,
728 32, 32, 32, 144, 32, 32, 32, 140, 87, 452,
729 446, 79, 78, 439, 32, 141, 32, 438, 83, 32,
730 32, 437, 434, 81, 32, 387, 80, 32, 32, 385,
731 145, 144, 32, 32, 384, 88, 32, 32, 32, 380,
732 32, 32, 32, 148, 377, 32, 83, 27, 27, 27,
733 27, 84, 27, 27, 85, 85, 27, 89, 145, 32,
734 360, 359, 90, 88, 27, 27, 27, 32, 100, 149,
736 32, 148, 91, 32, 32, 32, 32, 146, 32, 32,
737 353, 32, 101, 341, 147, 89, 152, 104, 102, 105,
738 90, 106, 107, 29, 85, 32, 100, 149, 32, 32,
739 91, 108, 109, 92, 142, 146, 153, 143, 110, 154,
740 101, 93, 147, 32, 152, 104, 102, 105, 32, 106,
741 107, 114, 114, 114, 114, 114, 114, 114, 322, 108,
742 109, 92, 142, 316, 153, 143, 110, 154, 32, 93,
743 56, 56, 56, 155, 174, 306, 56, 56, 304, 298,
744 175, 178, 56, 179, 56, 183, 56, 56, 56, 56,
745 56, 118, 118, 118, 118, 118, 118, 118, 56, 56,
747 56, 155, 174, 32, 56, 56, 32, 32, 175, 178,
748 56, 179, 56, 183, 56, 56, 56, 56, 56, 32,
749 295, 294, 32, 115, 288, 116, 116, 116, 116, 116,
750 116, 116, 32, 287, 272, 32, 33, 119, 117, 117,
751 117, 117, 117, 117, 117, 32, 32, 32, 32, 32,
752 32, 32, 32, 242, 237, 32, 32, 32, 184, 185,
753 32, 32, 32, 32, 186, 119, 32, 32, 187, 32,
754 123, 229, 32, 32, 228, 32, 197, 193, 189, 138,
755 32, 120, 121, 32, 32, 188, 184, 185, 32, 124,
756 32, 122, 186, 55, 32, 32, 187, 32, 32, 32,
758 32, 32, 32, 32, 32, 32, 32, 125, 520, 120,
759 121, 55, 32, 188, 46, 190, 31, 124, 32, 122,
760 126, 32, 32, 32, 30, 520, 32, 26, 32, 32,
761 32, 32, 32, 520, 520, 125, 32, 32, 520, 32,
762 32, 520, 32, 190, 32, 520, 128, 129, 126, 27,
763 27, 27, 27, 84, 27, 27, 85, 85, 27, 520,
764 32, 32, 127, 32, 32, 191, 27, 27, 27, 32,
765 520, 32, 150, 131, 128, 129, 176, 180, 32, 32,
766 130, 32, 32, 192, 177, 194, 181, 151, 182, 195,
767 127, 196, 200, 191, 198, 29, 85, 215, 132, 520,
769 150, 131, 520, 32, 176, 180, 32, 216, 130, 32,
770 32, 192, 177, 194, 181, 151, 182, 195, 520, 196,
771 200, 32, 520, 520, 199, 215, 132, 156, 156, 156,
772 156, 156, 156, 156, 32, 216, 520, 32, 32, 520,
773 157, 157, 157, 157, 157, 157, 157, 32, 217, 32,
774 32, 115, 199, 158, 158, 158, 158, 158, 158, 158,
775 32, 520, 520, 32, 32, 520, 117, 117, 117, 117,
776 117, 117, 117, 520, 218, 520, 217, 32, 159, 159,
777 159, 159, 159, 159, 159, 32, 520, 520, 32, 32,
778 32, 32, 219, 32, 32, 32, 32, 32, 520, 222,
780 520, 32, 218, 32, 32, 32, 520, 32, 520, 160,
781 32, 32, 32, 161, 32, 32, 32, 32, 32, 223,
782 219, 163, 520, 164, 224, 225, 162, 222, 32, 32,
783 520, 520, 32, 32, 32, 166, 32, 160, 168, 520,
784 226, 161, 32, 520, 32, 32, 32, 223, 520, 163,
785 165, 164, 224, 225, 162, 32, 32, 32, 32, 32,
786 32, 32, 32, 166, 520, 167, 168, 32, 226, 169,
787 32, 32, 32, 520, 32, 520, 32, 32, 32, 32,
788 115, 520, 520, 32, 227, 32, 32, 32, 171, 520,
789 230, 520, 170, 167, 173, 231, 232, 169, 520, 32,
791 520, 32, 172, 201, 201, 201, 201, 201, 201, 201,
792 32, 32, 227, 520, 32, 32, 171, 32, 230, 32,
793 170, 520, 173, 231, 232, 32, 32, 520, 32, 202,
794 172, 203, 203, 203, 203, 203, 203, 203, 204, 204,
795 204, 204, 204, 204, 204, 205, 32, 520, 32, 32,
796 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
797 520, 520, 32, 520, 207, 32, 32, 208, 32, 520,
798 520, 32, 520, 205, 32, 32, 520, 32, 520, 32,
799 32, 32, 32, 32, 32, 233, 520, 32, 32, 32,
800 209, 32, 520, 234, 520, 211, 206, 32, 32, 32,
802 32, 32, 32, 32, 32, 32, 210, 32, 32, 520,
803 235, 236, 520, 233, 32, 238, 241, 212, 209, 520,
804 32, 234, 32, 211, 243, 213, 239, 32, 32, 240,
805 520, 32, 32, 520, 210, 520, 250, 214, 235, 236,
806 32, 520, 32, 238, 241, 212, 520, 32, 520, 520,
807 520, 520, 243, 213, 239, 520, 255, 240, 244, 244,
808 244, 244, 244, 244, 244, 214, 32, 520, 520, 32,
809 32, 32, 245, 245, 245, 245, 245, 245, 245, 32,
810 256, 520, 32, 202, 255, 246, 246, 246, 246, 246,
811 246, 246, 32, 520, 32, 32, 32, 32, 32, 520,
813 520, 32, 520, 248, 32, 32, 249, 520, 256, 32,
814 32, 251, 520, 32, 32, 257, 32, 258, 259, 32,
815 32, 32, 32, 260, 32, 32, 261, 247, 32, 262,
816 252, 32, 32, 263, 264, 32, 32, 32, 32, 32,
817 32, 32, 32, 257, 32, 258, 259, 265, 266, 267,
818 253, 260, 268, 32, 261, 247, 269, 262, 252, 32,
819 270, 263, 264, 271, 32, 273, 274, 275, 276, 277,
820 278, 32, 254, 279, 280, 265, 266, 267, 253, 32,
821 268, 32, 281, 282, 269, 520, 32, 520, 270, 32,
822 202, 271, 520, 273, 274, 275, 276, 277, 278, 520,
824 254, 279, 280, 32, 520, 289, 32, 32, 520, 32,
825 281, 282, 32, 32, 520, 283, 283, 283, 283, 283,
826 283, 283, 32, 284, 32, 32, 32, 32, 32, 32,
827 285, 290, 32, 289, 286, 32, 32, 32, 291, 32,
828 32, 32, 32, 32, 32, 292, 32, 32, 32, 293,
829 32, 284, 32, 32, 32, 296, 297, 299, 302, 290,
830 300, 303, 305, 307, 310, 32, 291, 32, 301, 311,
831 312, 313, 314, 292, 315, 32, 520, 293, 319, 520,
832 32, 520, 32, 296, 297, 299, 302, 32, 300, 303,
833 305, 307, 310, 32, 320, 321, 301, 311, 312, 313,
835 314, 32, 315, 323, 32, 32, 319, 317, 317, 317,
836 317, 317, 317, 317, 32, 520, 32, 32, 32, 32,
837 32, 32, 320, 321, 32, 32, 324, 325, 326, 520,
838 327, 323, 328, 329, 330, 331, 520, 332, 333, 334,
839 335, 336, 337, 318, 32, 338, 339, 340, 342, 343,
840 344, 345, 520, 347, 324, 325, 326, 32, 327, 32,
841 328, 329, 330, 331, 32, 332, 333, 334, 335, 336,
842 337, 318, 348, 338, 339, 340, 342, 343, 344, 345,
843 32, 347, 32, 32, 32, 32, 32, 349, 350, 520,
844 351, 352, 354, 355, 356, 520, 357, 520, 358, 361,
846 348, 362, 363, 364, 365, 366, 367, 368, 369, 372,
847 32, 373, 374, 32, 32, 349, 350, 346, 351, 352,
848 354, 355, 356, 32, 357, 32, 358, 361, 375, 362,
849 363, 364, 365, 366, 367, 368, 369, 372, 370, 373,
850 374, 376, 378, 379, 381, 346, 371, 382, 383, 386,
851 388, 389, 390, 32, 391, 392, 375, 393, 394, 395,
852 396, 397, 398, 399, 400, 401, 370, 402, 403, 376,
853 378, 379, 381, 404, 371, 382, 383, 386, 388, 389,
854 390, 405, 391, 392, 406, 393, 394, 395, 396, 397,
855 398, 399, 400, 401, 407, 402, 403, 408, 409, 410,
857 411, 404, 412, 413, 414, 415, 416, 417, 418, 405,
858 419, 420, 406, 421, 422, 423, 424, 425, 426, 427,
859 428, 429, 407, 430, 431, 408, 409, 410, 411, 432,
860 412, 413, 414, 415, 416, 417, 418, 433, 419, 420,
861 435, 421, 422, 423, 424, 425, 426, 427, 428, 429,
862 436, 430, 431, 440, 441, 442, 443, 432, 444, 445,
863 447, 448, 449, 450, 451, 433, 453, 454, 435, 455,
864 456, 457, 458, 459, 460, 461, 462, 463, 436, 464,
865 465, 440, 441, 442, 443, 466, 444, 445, 447, 448,
866 449, 450, 451, 467, 453, 454, 468, 455, 456, 457,
868 458, 459, 460, 461, 462, 463, 471, 464, 465, 472,
869 473, 474, 476, 466, 477, 478, 479, 480, 481, 482,
870 483, 467, 484, 485, 468, 487, 488, 490, 491, 492,
871 493, 494, 495, 496, 471, 497, 499, 472, 473, 474,
872 476, 500, 477, 478, 479, 480, 481, 482, 483, 501,
873 484, 485, 504, 487, 488, 490, 491, 492, 493, 494,
874 495, 496, 505, 497, 499, 506, 508, 509, 512, 500,
875 513, 514, 515, 516, 517, 518, 520, 501, 520, 520,
876 504, 520, 520, 520, 520, 520, 520, 520, 520, 520,
877 505, 520, 520, 506, 508, 509, 512, 520, 513, 514,
879 515, 516, 517, 518, 27, 27, 54, 54, 86, 86,
880 3, 520, 520, 520, 520, 520, 520, 520, 520, 520,
881 520, 520, 520, 520, 520, 520, 520, 520, 520, 520,
882 520, 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
890 static yyconst flex_int16_t yy_chk
[1786] =
892 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
893 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
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, 8, 11, 15, 11, 11, 11,
900 11, 11, 11, 11, 12, 12, 12, 12, 12, 12,
901 12, 14, 16, 17, 14, 18, 16, 19, 20, 23,
903 22, 24, 25, 23, 15, 27, 17, 58, 59, 60,
904 61, 22, 63, 66, 67, 68, 8, 22, 94, 14,
905 16, 17, 14, 18, 16, 19, 20, 23, 22, 24,
906 25, 23, 524, 179, 17, 58, 59, 60, 61, 22,
907 63, 66, 67, 68, 179, 22, 94, 27, 30, 30,
908 30, 30, 30, 30, 30, 522, 95, 96, 30, 30,
909 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
910 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
911 30, 30, 30, 30, 95, 96, 30, 30, 30, 30,
912 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
914 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
915 30, 30, 31, 31, 31, 31, 31, 31, 31, 32,
916 517, 33, 32, 32, 33, 33, 506, 33, 33, 33,
917 33, 33, 33, 33, 34, 505, 500, 34, 34, 495,
918 34, 34, 34, 34, 34, 34, 34, 35, 35, 35,
919 35, 35, 35, 35, 36, 494, 37, 36, 36, 37,
920 37, 490, 32, 38, 33, 275, 38, 38, 97, 39,
921 57, 479, 39, 39, 37, 44, 275, 34, 44, 44,
922 38, 40, 57, 36, 40, 40, 41, 98, 39, 41,
923 41, 42, 100, 44, 42, 42, 97, 36, 57, 37,
925 476, 43, 37, 461, 43, 43, 38, 455, 38, 101,
926 57, 36, 39, 41, 40, 98, 39, 102, 44, 45,
927 100, 44, 45, 45, 40, 43, 454, 47, 42, 41,
928 47, 47, 70, 104, 42, 70, 70, 101, 47, 432,
929 426, 41, 40, 417, 43, 102, 48, 416, 45, 48,
930 48, 415, 412, 43, 49, 361, 42, 49, 49, 357,
931 105, 104, 45, 50, 356, 48, 50, 50, 51, 352,
932 47, 51, 51, 107, 349, 70, 45, 46, 46, 46,
933 46, 46, 46, 46, 46, 46, 46, 49, 105, 48,
934 332, 331, 50, 48, 46, 46, 46, 49, 62, 108,
936 52, 107, 51, 52, 52, 53, 50, 106, 53, 53,
937 325, 51, 62, 311, 106, 49, 110, 64, 62, 64,
938 50, 64, 65, 46, 46, 75, 62, 108, 75, 75,
939 51, 65, 65, 52, 103, 106, 111, 103, 65, 112,
940 62, 53, 106, 52, 110, 64, 62, 64, 53, 64,
941 65, 69, 69, 69, 69, 69, 69, 69, 290, 65,
942 65, 52, 103, 282, 111, 103, 65, 112, 75, 53,
943 56, 56, 56, 113, 133, 273, 56, 56, 271, 266,
944 134, 136, 56, 137, 56, 139, 56, 56, 56, 56,
945 56, 73, 73, 73, 73, 73, 73, 73, 56, 56,
947 56, 113, 133, 74, 56, 56, 74, 74, 134, 136,
948 56, 137, 56, 139, 56, 56, 56, 56, 56, 71,
949 263, 262, 71, 71, 256, 71, 71, 71, 71, 71,
950 71, 71, 72, 255, 233, 72, 72, 74, 72, 72,
951 72, 72, 72, 72, 72, 76, 74, 77, 76, 76,
952 77, 77, 78, 199, 195, 78, 78, 79, 140, 141,
953 79, 79, 71, 80, 142, 74, 80, 80, 143, 81,
954 80, 187, 81, 81, 186, 72, 153, 149, 145, 99,
955 82, 76, 78, 82, 82, 144, 140, 141, 76, 81,
956 77, 79, 142, 54, 83, 78, 143, 83, 83, 84,
958 79, 87, 84, 84, 87, 87, 80, 82, 29, 76,
959 78, 26, 81, 144, 21, 146, 10, 81, 89, 79,
960 83, 89, 89, 82, 9, 3, 88, 2, 90, 88,
961 88, 90, 90, 0, 0, 82, 92, 83, 0, 92,
962 92, 0, 84, 146, 87, 0, 89, 90, 83, 85,
963 85, 85, 85, 85, 85, 85, 85, 85, 85, 0,
964 91, 89, 88, 91, 91, 147, 85, 85, 85, 88,
965 0, 90, 109, 92, 89, 90, 135, 138, 93, 92,
966 91, 93, 93, 148, 135, 150, 138, 109, 138, 151,
967 88, 152, 155, 147, 154, 85, 85, 174, 93, 0,
969 109, 92, 0, 91, 135, 138, 132, 175, 91, 132,
970 132, 148, 135, 150, 138, 109, 138, 151, 0, 152,
971 155, 93, 0, 0, 154, 174, 93, 114, 114, 114,
972 114, 114, 114, 114, 115, 175, 0, 115, 115, 0,
973 115, 115, 115, 115, 115, 115, 115, 116, 176, 132,
974 116, 116, 154, 116, 116, 116, 116, 116, 116, 116,
975 117, 0, 0, 117, 117, 0, 117, 117, 117, 117,
976 117, 117, 117, 0, 177, 0, 176, 115, 118, 118,
977 118, 118, 118, 118, 118, 119, 0, 0, 119, 119,
978 116, 120, 178, 121, 120, 120, 121, 121, 0, 180,
980 0, 122, 177, 117, 122, 122, 0, 123, 0, 119,
981 123, 123, 124, 120, 126, 124, 124, 126, 126, 181,
982 178, 122, 0, 123, 182, 183, 121, 180, 119, 125,
983 0, 0, 125, 125, 120, 124, 121, 119, 126, 0,
984 184, 120, 127, 0, 122, 127, 127, 181, 0, 122,
985 123, 123, 182, 183, 121, 124, 128, 126, 129, 128,
986 128, 129, 129, 124, 0, 125, 126, 130, 184, 127,
987 130, 130, 125, 0, 131, 0, 158, 131, 131, 158,
988 158, 0, 0, 161, 185, 127, 161, 161, 129, 0,
989 188, 0, 128, 125, 131, 189, 190, 127, 0, 128,
991 0, 129, 130, 156, 156, 156, 156, 156, 156, 156,
992 130, 160, 185, 0, 160, 160, 129, 131, 188, 158,
993 128, 0, 131, 189, 190, 157, 161, 0, 157, 157,
994 130, 157, 157, 157, 157, 157, 157, 157, 159, 159,
995 159, 159, 159, 159, 159, 160, 162, 0, 163, 162,
996 162, 163, 163, 164, 160, 165, 164, 164, 165, 165,
997 0, 0, 166, 0, 165, 166, 166, 165, 157, 0,
998 0, 167, 0, 160, 167, 167, 0, 168, 0, 169,
999 168, 168, 169, 169, 170, 191, 0, 170, 170, 162,
1000 167, 163, 0, 192, 0, 169, 164, 171, 165, 172,
1002 171, 171, 172, 172, 173, 166, 168, 173, 173, 0,
1003 193, 194, 0, 191, 167, 196, 198, 170, 167, 0,
1004 168, 192, 169, 169, 200, 171, 197, 170, 207, 197,
1005 0, 207, 207, 0, 168, 0, 207, 173, 193, 194,
1006 171, 0, 172, 196, 198, 170, 0, 173, 0, 0,
1007 0, 0, 200, 171, 197, 0, 215, 197, 201, 201,
1008 201, 201, 201, 201, 201, 173, 202, 0, 0, 202,
1009 202, 207, 202, 202, 202, 202, 202, 202, 202, 203,
1010 216, 0, 203, 203, 215, 203, 203, 203, 203, 203,
1011 203, 203, 205, 0, 206, 205, 205, 206, 206, 0,
1013 0, 208, 0, 206, 208, 208, 206, 0, 216, 202,
1014 209, 208, 0, 209, 209, 217, 210, 218, 219, 210,
1015 210, 211, 203, 220, 211, 211, 222, 205, 212, 223,
1016 209, 212, 212, 224, 225, 205, 213, 206, 214, 213,
1017 213, 214, 214, 217, 208, 218, 219, 226, 227, 228,
1018 210, 220, 229, 209, 222, 205, 230, 223, 209, 210,
1019 231, 224, 225, 232, 211, 234, 235, 236, 237, 238,
1020 239, 212, 214, 240, 241, 226, 227, 228, 210, 213,
1021 229, 214, 242, 243, 230, 0, 246, 0, 231, 246,
1022 246, 232, 0, 234, 235, 236, 237, 238, 239, 0,
1024 214, 240, 241, 247, 0, 257, 247, 247, 0, 245,
1025 242, 243, 245, 245, 0, 245, 245, 245, 245, 245,
1026 245, 245, 248, 247, 249, 248, 248, 249, 249, 246,
1027 248, 258, 250, 257, 249, 250, 250, 251, 259, 252,
1028 251, 251, 252, 252, 253, 260, 247, 253, 253, 261,
1029 254, 247, 245, 254, 254, 264, 265, 267, 269, 258,
1030 268, 270, 272, 274, 276, 248, 259, 249, 268, 277,
1031 278, 279, 280, 260, 281, 250, 0, 261, 287, 0,
1032 251, 0, 252, 264, 265, 267, 269, 253, 268, 270,
1033 272, 274, 276, 254, 288, 289, 268, 277, 278, 279,
1035 280, 283, 281, 291, 283, 283, 287, 283, 283, 283,
1036 283, 283, 283, 283, 284, 0, 285, 284, 284, 285,
1037 285, 286, 288, 289, 286, 286, 292, 293, 294, 0,
1038 295, 291, 296, 298, 299, 300, 0, 301, 302, 303,
1039 304, 305, 307, 284, 283, 308, 308, 310, 312, 313,
1040 315, 316, 0, 319, 292, 293, 294, 284, 295, 285,
1041 296, 298, 299, 300, 286, 301, 302, 303, 304, 305,
1042 307, 284, 320, 308, 308, 310, 312, 313, 315, 316,
1043 317, 319, 318, 317, 317, 318, 318, 321, 322, 0,
1044 323, 324, 326, 327, 328, 0, 329, 0, 330, 333,
1046 320, 334, 335, 336, 337, 338, 339, 340, 341, 343,
1047 346, 344, 345, 346, 346, 321, 322, 318, 323, 324,
1048 326, 327, 328, 317, 329, 318, 330, 333, 347, 334,
1049 335, 336, 337, 338, 339, 340, 341, 343, 342, 344,
1050 345, 348, 350, 351, 353, 318, 342, 354, 355, 358,
1051 362, 363, 364, 346, 365, 366, 347, 367, 368, 369,
1052 370, 371, 372, 374, 375, 376, 342, 377, 378, 348,
1053 350, 351, 353, 379, 342, 354, 355, 358, 362, 363,
1054 364, 380, 365, 366, 381, 367, 368, 369, 370, 371,
1055 372, 374, 375, 376, 382, 377, 378, 383, 385, 386,
1057 387, 379, 388, 389, 390, 391, 392, 393, 395, 380,
1058 396, 397, 381, 398, 400, 401, 402, 403, 404, 405,
1059 406, 407, 382, 408, 409, 383, 385, 386, 387, 410,
1060 388, 389, 390, 391, 392, 393, 395, 411, 396, 397,
1061 413, 398, 400, 401, 402, 403, 404, 405, 406, 407,
1062 414, 408, 409, 419, 420, 422, 423, 410, 424, 425,
1063 427, 428, 429, 430, 431, 411, 433, 435, 413, 436,
1064 438, 439, 440, 442, 443, 444, 445, 447, 414, 448,
1065 449, 419, 420, 422, 423, 450, 424, 425, 427, 428,
1066 429, 430, 431, 451, 433, 435, 453, 436, 438, 439,
1068 440, 442, 443, 444, 445, 447, 456, 448, 449, 457,
1069 459, 460, 462, 450, 463, 464, 465, 466, 467, 468,
1070 469, 451, 471, 472, 453, 477, 478, 480, 481, 482,
1071 483, 484, 485, 487, 456, 488, 491, 457, 459, 460,
1072 462, 492, 463, 464, 465, 466, 467, 468, 469, 493,
1073 471, 472, 496, 477, 478, 480, 481, 482, 483, 484,
1074 485, 487, 497, 488, 491, 499, 501, 504, 507, 492,
1075 508, 512, 513, 514, 515, 516, 0, 493, 0, 0,
1076 496, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1077 497, 0, 0, 499, 501, 504, 507, 0, 508, 512,
1079 513, 514, 515, 516, 521, 521, 523, 523, 525, 525,
1080 520, 520, 520, 520, 520, 520, 520, 520, 520, 520,
1081 520, 520, 520, 520, 520, 520, 520, 520, 520, 520,
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
1090 static yyconst flex_int16_t yy_rule_linenum
[65] =
1092 77, 79, 81, 83, 85, 88, 92, 94, 96, 97,
1093 98, 99, 100, 101, 102, 103, 104, 105, 106, 107,
1094 108, 109, 110, 111, 112, 113, 114, 115, 116, 117,
1095 118, 119, 120, 121, 122, 123, 125, 126, 128, 130,
1096 131, 132, 133, 134, 135, 137, 138, 141, 146, 147,
1097 148, 150, 151, 152, 153, 154, 155, 156, 157, 158,
1101 /* The intent behind this definition is that it'll catch
1102 * any uses of REJECT which flex missed.
1104 #define REJECT reject_used_but_not_detected
1105 #define yymore() yymore_used_but_not_detected
1106 #define YY_MORE_ADJ 0
1107 #define YY_RESTORE_YY_MORE_OFFSET
1108 #line 1 "libmemcached/options/scanner.l"
1109 /* vim:expandtab:shiftwidth=2:tabstop=2:smarttab:
1111 * Libmemcached Scanner and Parser
1113 * Copyright (C) 2011 DataDifferental, http://datadifferential.com
1115 * This program is free software: you can redistribute it and/or modify
1116 * it under the terms of the GNU Affero General Public License as
1117 * published by the Free Software Foundation, either version 3 of the
1118 * License, or (at your option) any later version.
1120 * This program is distributed in the hope that it will be useful,
1121 * but WITHOUT ANY WARRANTY; without even the implied warranty of
1122 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
1123 * GNU Affero General Public License for more details.
1125 * You should have received a copy of the GNU Affero General Public License
1126 * along with this program. If not, see <http://www.gnu.org/licenses/>.
1129 #line 38 "libmemcached/options/scanner.l"
1133 #define PARAM config_get_extra(yyscanner)
1135 #define get_lex_chars(buffer, result, max_size, context) \
1137 if (context->pos >= context->length) \
1143 result= (int)(context->length - context->pos); \
1144 (size_t)result > (size_t)max_size ? result= max_size : 0; \
1145 memcpy(buffer, context->buf + context->pos, result); \
1146 context->pos += result; \
1151 #define YY_INPUT(buffer, result, max_size) get_lex_chars(buffer, result, max_size, PARAM)
1153 #line 1154 "libmemcached/options/scanner.cc"
1157 #ifndef YY_NO_UNISTD_H
1158 /* Special case for "unistd.h", since it is non-ANSI. We include it way
1159 * down here because we want the user's section 1 to have been scanned first.
1160 * The user has a chance to override it with an option.
1169 #ifndef YY_EXTRA_TYPE
1170 #define YY_EXTRA_TYPE void *
1173 /* %if-c-only Reentrant structure and macros (non-C++). */
1176 /* Holds the entire state of the reentrant scanner. */
1180 /* User-defined. Not touched by flex. */
1181 YY_EXTRA_TYPE yyextra_r
;
1183 /* The rest are the same as the globals declared in the non-reentrant scanner. */
1184 FILE *yyin_r
, *yyout_r
;
1185 size_t yy_buffer_stack_top
; /**< index of top of stack. */
1186 size_t yy_buffer_stack_max
; /**< capacity of stack. */
1187 YY_BUFFER_STATE
* yy_buffer_stack
; /**< Stack as an array. */
1194 int yy_did_buffer_switch_on_eof
;
1195 int yy_start_stack_ptr
;
1196 int yy_start_stack_depth
;
1197 int *yy_start_stack
;
1198 yy_state_type yy_last_accepting_state
;
1199 char* yy_last_accepting_cpos
;
1202 int yy_flex_debug_r
;
1210 }; /* end struct yyguts_t */
1214 static int yy_init_globals (yyscan_t yyscanner
);
1220 /* This must go here because YYSTYPE and YYLTYPE are included
1221 * from bison output in section 1.*/
1222 # define yylval yyg->yylval_r
1224 int config_lex_init (yyscan_t
* scanner
);
1226 int config_lex_init_extra (YY_EXTRA_TYPE user_defined
,yyscan_t
* scanner
);
1230 /* %endif End reentrant structures and macros. */
1232 /* Accessor methods to globals.
1233 These are made visible to non-reentrant scanners for convenience. */
1235 int config_lex_destroy (yyscan_t yyscanner
);
1237 int config_get_debug (yyscan_t yyscanner
);
1239 void config_set_debug (int debug_flag
,yyscan_t yyscanner
);
1241 YY_EXTRA_TYPE
config_get_extra (yyscan_t yyscanner
);
1243 void config_set_extra (YY_EXTRA_TYPE user_defined
,yyscan_t yyscanner
);
1245 FILE *config_get_in (yyscan_t yyscanner
);
1247 void config_set_in (FILE * in_str
,yyscan_t yyscanner
);
1249 FILE *config_get_out (yyscan_t yyscanner
);
1251 void config_set_out (FILE * out_str
,yyscan_t yyscanner
);
1253 int config_get_leng (yyscan_t yyscanner
);
1255 char *config_get_text (yyscan_t yyscanner
);
1257 int config_get_lineno (yyscan_t yyscanner
);
1259 void config_set_lineno (int line_number
,yyscan_t yyscanner
);
1261 int config_get_column (yyscan_t yyscanner
);
1263 void config_set_column (int column_no
,yyscan_t yyscanner
);
1265 /* %if-bison-bridge */
1267 YYSTYPE
* config_get_lval (yyscan_t yyscanner
);
1269 void config_set_lval (YYSTYPE
* yylval_param
,yyscan_t yyscanner
);
1273 /* Macros after this point can all be overridden by user definitions in
1277 #ifndef YY_SKIP_YYWRAP
1279 extern "C" int config_wrap (yyscan_t yyscanner
);
1281 extern int config_wrap (yyscan_t yyscanner
);
1285 /* %not-for-header */
1287 /* %ok-for-header */
1292 static void yy_flex_strncpy (char *,yyconst
char *,int ,yyscan_t yyscanner
);
1295 #ifdef YY_NEED_STRLEN
1296 static int yy_flex_strlen (yyconst
char * ,yyscan_t yyscanner
);
1300 /* %if-c-only Standard (non-C++) definition */
1301 /* %not-for-header */
1304 static int yyinput (yyscan_t yyscanner
);
1306 static int input (yyscan_t yyscanner
);
1308 /* %ok-for-header */
1317 /* Amount of stuff to slurp up with each read. */
1318 #ifndef YY_READ_BUF_SIZE
1319 #define YY_READ_BUF_SIZE 8192
1322 /* Copy whatever the last rule matched to the standard output. */
1324 /* %if-c-only Standard (non-C++) definition */
1325 /* This used to be an fputs(), but since the string might contain NUL's,
1326 * we now use fwrite().
1328 #define ECHO do { if (fwrite( yytext, yyleng, 1, yyout )) {} } while (0)
1330 /* %if-c++-only C++ definition */
1334 /* Gets input and stuffs it into "buf". number of characters read, or YY_NULL,
1335 * is returned in "result".
1338 #define YY_INPUT(buf,result,max_size) \
1339 /* %% [5.0] fread()/read() definition of YY_INPUT goes here unless we're doing C++ \ */\
1340 if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \
1344 for ( n = 0; n < max_size && \
1345 (c = getc( yyin )) != EOF && c != '\n'; ++n ) \
1346 buf[n] = (char) c; \
1348 buf[n++] = (char) c; \
1349 if ( c == EOF && ferror( yyin ) ) \
1350 YY_FATAL_ERROR( "input in flex scanner failed" ); \
1356 while ( (result = fread(buf, 1, max_size, yyin))==0 && ferror(yyin)) \
1358 if( errno != EINTR) \
1360 YY_FATAL_ERROR( "input in flex scanner failed" ); \
1368 /* %if-c++-only C++ definition \ */\
1373 /* No semi-colon after return; correct usage is to write "yyterminate();" -
1374 * we don't want an extra ';' after the "return" because that will cause
1375 * some compilers to complain about unreachable statements.
1378 #define yyterminate() return YY_NULL
1381 /* Number of entries by which start-condition stack grows. */
1382 #ifndef YY_START_STACK_INCR
1383 #define YY_START_STACK_INCR 25
1386 /* Report a fatal error. */
1387 #ifndef YY_FATAL_ERROR
1389 #define YY_FATAL_ERROR(msg) yy_fatal_error( msg , yyscanner)
1395 /* %if-tables-serialization structures and prototypes */
1396 /* %not-for-header */
1398 /* %ok-for-header */
1400 /* %not-for-header */
1402 /* %tables-yydmap generated elements */
1404 /* end tables serialization structures and prototypes */
1406 /* %ok-for-header */
1408 /* Default declaration of generated scanner - a define so the user can
1409 * easily add parameters.
1412 #define YY_DECL_IS_OURS 1
1413 /* %if-c-only Standard (non-C++) definition */
1415 extern int config_lex \
1416 (YYSTYPE
* yylval_param
,yyscan_t yyscanner
);
1418 #define YY_DECL int config_lex \
1419 (YYSTYPE * yylval_param , yyscan_t yyscanner)
1421 /* %if-c++-only C++ definition */
1423 #endif /* !YY_DECL */
1425 /* Code executed at the beginning of each rule, after yytext and yyleng
1428 #ifndef YY_USER_ACTION
1429 #define YY_USER_ACTION
1432 /* Code executed at the end of each rule. */
1434 #define YY_BREAK break;
1437 /* %% [6.0] YY_RULE_SETUP definition goes here */
1438 #define YY_RULE_SETUP \
1440 YY_CURRENT_BUFFER_LVALUE->yy_at_bol = \
1441 (yytext[yyleng - 1] == '\n'); \
1444 /* %not-for-header */
1446 /** The main scanner function which does all the work.
1450 register yy_state_type yy_current_state
;
1451 register char *yy_cp
, *yy_bp
;
1452 register int yy_act
;
1453 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
1455 /* %% [7.0] user's declarations go here */
1456 #line 74 "libmemcached/options/scanner.l"
1460 #line 1461 "libmemcached/options/scanner.cc"
1462 yylval
= yylval_param
;
1464 if ( !yyg
->yy_init
)
1472 if ( ! yyg
->yy_start
)
1473 yyg
->yy_start
= 1; /* first start state */
1489 if ( ! YY_CURRENT_BUFFER
) {
1490 config_ensure_buffer_stack (yyscanner
);
1491 YY_CURRENT_BUFFER_LVALUE
=
1492 config__create_buffer(yyin
,YY_BUF_SIZE
,yyscanner
);
1495 config__load_buffer_state(yyscanner
);
1498 while ( 1 ) /* loops until end-of-file is reached */
1500 /* %% [8.0] yymore()-related code goes here */
1501 yy_cp
= yyg
->yy_c_buf_p
;
1503 /* Support of yytext. */
1504 *yy_cp
= yyg
->yy_hold_char
;
1506 /* yy_bp points to the position in yy_ch_buf of the start of
1511 /* %% [9.0] code to set up and find next match goes here */
1512 yy_current_state
= yyg
->yy_start
;
1513 yy_current_state
+= YY_AT_BOL();
1517 register YY_CHAR yy_c
= yy_ec
[YY_SC_TO_UI(*yy_cp
)];
1518 if ( yy_accept
[yy_current_state
] )
1520 yyg
->yy_last_accepting_state
= yy_current_state
;
1521 yyg
->yy_last_accepting_cpos
= yy_cp
;
1523 while ( yy_chk
[yy_base
[yy_current_state
] + yy_c
] != yy_current_state
)
1525 yy_current_state
= (int) yy_def
[yy_current_state
];
1526 if ( yy_current_state
>= 521 )
1527 yy_c
= yy_meta
[(unsigned int) yy_c
];
1529 yy_current_state
= yy_nxt
[yy_base
[yy_current_state
] + (unsigned int) yy_c
];
1532 while ( yy_base
[yy_current_state
] != 1711 );
1535 /* %% [10.0] code to find the action number goes here */
1536 yy_act
= yy_accept
[yy_current_state
];
1538 { /* have to back up */
1539 yy_cp
= yyg
->yy_last_accepting_cpos
;
1540 yy_current_state
= yyg
->yy_last_accepting_state
;
1541 yy_act
= yy_accept
[yy_current_state
];
1544 YY_DO_BEFORE_ACTION
;
1546 /* %% [11.0] code for yylineno update goes here */
1548 do_action
: /* This label is used only to access EOF actions. */
1550 /* %% [12.0] debug code goes here */
1551 if ( yy_flex_debug
)
1554 fprintf( stderr
, "--scanner backing up\n" );
1555 else if ( yy_act
< 65 )
1556 fprintf( stderr
, "--accepting rule at line %ld (\"%s\")\n",
1557 (long)yy_rule_linenum
[yy_act
], yytext
);
1558 else if ( yy_act
== 65 )
1559 fprintf( stderr
, "--accepting default rule (\"%s\")\n",
1561 else if ( yy_act
== 66 )
1562 fprintf( stderr
, "--(end of buffer or a NUL)\n" );
1564 fprintf( stderr
, "--EOF (start condition %d)\n", YY_START
);
1568 { /* beginning of action switch */
1569 /* %% [13.0] actions go here */
1570 case 0: /* must back up */
1571 /* undo the effects of YY_DO_BEFORE_ACTION */
1572 *yy_cp
= yyg
->yy_hold_char
;
1573 yy_cp
= yyg
->yy_last_accepting_cpos
;
1574 yy_current_state
= yyg
->yy_last_accepting_state
;
1575 goto yy_find_action
;
1579 #line 77 "libmemcached/options/scanner.l"
1580 { return yytext
[0];}
1584 #line 79 "libmemcached/options/scanner.l"
1585 { yylval
->number
= atoi(yytext
); return (NUMBER
); }
1589 #line 81 "libmemcached/options/scanner.l"
1590 { yylval
->number
= atoi(yytext
+1); return PORT
; }
1594 #line 83 "libmemcached/options/scanner.l"
1595 { yylval
->number
= atoi(yytext
+2); return WEIGHT_START
; }
1598 /* rule 5 can match eol */
1600 #line 85 "libmemcached/options/scanner.l"
1601 ; /* skip whitespace */
1604 *yy_cp
= yyg
->yy_hold_char
; /* undo effects of setting up yytext */
1605 yyg
->yy_c_buf_p
= yy_cp
-= 1;
1606 YY_DO_BEFORE_ACTION
; /* set up yytext again */
1608 #line 88 "libmemcached/options/scanner.l"
1615 #line 92 "libmemcached/options/scanner.l"
1616 { yyextra
->begin
= yytext
; yyextra
->set_server(); return SERVER
; }
1620 #line 94 "libmemcached/options/scanner.l"
1621 { yyextra
->begin
= yytext
; return SOCKET
; }
1625 #line 96 "libmemcached/options/scanner.l"
1626 { yyextra
->begin
= yytext
; return BINARY_PROTOCOL
; }
1630 #line 97 "libmemcached/options/scanner.l"
1631 { yyextra
->begin
= yytext
; return BUFFER_REQUESTS
; }
1635 #line 98 "libmemcached/options/scanner.l"
1636 { yyextra
->begin
= yytext
; return CONFIGURE_FILE
; }
1640 #line 99 "libmemcached/options/scanner.l"
1641 { yyextra
->begin
= yytext
; return CONNECT_TIMEOUT
; }
1645 #line 100 "libmemcached/options/scanner.l"
1646 { yyextra
->begin
= yytext
; return DISTRIBUTION
; }
1650 #line 101 "libmemcached/options/scanner.l"
1651 { yyextra
->begin
= yytext
; return HASH_WITH_NAMESPACE
; }
1655 #line 102 "libmemcached/options/scanner.l"
1656 { yyextra
->begin
= yytext
; return HASH
; }
1660 #line 103 "libmemcached/options/scanner.l"
1661 { yyextra
->begin
= yytext
; return IO_BYTES_WATERMARK
; }
1665 #line 104 "libmemcached/options/scanner.l"
1666 { yyextra
->begin
= yytext
; return IO_KEY_PREFETCH
; }
1670 #line 105 "libmemcached/options/scanner.l"
1671 { yyextra
->begin
= yytext
; return IO_MSG_WATERMARK
; }
1675 #line 106 "libmemcached/options/scanner.l"
1676 { yyextra
->begin
= yytext
; return NOREPLY
; }
1680 #line 107 "libmemcached/options/scanner.l"
1681 { yyextra
->begin
= yytext
; return NUMBER_OF_REPLICAS
; }
1685 #line 108 "libmemcached/options/scanner.l"
1686 { yyextra
->begin
= yytext
; return POLL_TIMEOUT
; }
1690 #line 109 "libmemcached/options/scanner.l"
1691 { yyextra
->begin
= yytext
; return RANDOMIZE_REPLICA_READ
; }
1695 #line 110 "libmemcached/options/scanner.l"
1696 { yyextra
->begin
= yytext
; return RCV_TIMEOUT
; }
1700 #line 111 "libmemcached/options/scanner.l"
1701 { yyextra
->begin
= yytext
; return REMOVE_FAILED_SERVERS
; }
1705 #line 112 "libmemcached/options/scanner.l"
1706 { yyextra
->begin
= yytext
; return RETRY_TIMEOUT
; }
1710 #line 113 "libmemcached/options/scanner.l"
1711 { yyextra
->begin
= yytext
; return SND_TIMEOUT
; }
1715 #line 114 "libmemcached/options/scanner.l"
1716 { yyextra
->begin
= yytext
; return SOCKET_RECV_SIZE
; }
1720 #line 115 "libmemcached/options/scanner.l"
1721 { yyextra
->begin
= yytext
; return SOCKET_SEND_SIZE
; }
1725 #line 116 "libmemcached/options/scanner.l"
1726 { yyextra
->begin
= yytext
; return SORT_HOSTS
; }
1730 #line 117 "libmemcached/options/scanner.l"
1731 { yyextra
->begin
= yytext
; return SUPPORT_CAS
; }
1735 #line 118 "libmemcached/options/scanner.l"
1736 { yyextra
->begin
= yytext
; return _TCP_KEEPALIVE
; }
1740 #line 119 "libmemcached/options/scanner.l"
1741 { yyextra
->begin
= yytext
; return _TCP_KEEPIDLE
; }
1745 #line 120 "libmemcached/options/scanner.l"
1746 { yyextra
->begin
= yytext
; return _TCP_NODELAY
; }
1750 #line 121 "libmemcached/options/scanner.l"
1751 { yyextra
->begin
= yytext
; return USE_UDP
; }
1755 #line 122 "libmemcached/options/scanner.l"
1756 { yyextra
->begin
= yytext
; return USER_DATA
; }
1760 #line 123 "libmemcached/options/scanner.l"
1761 { yyextra
->begin
= yytext
; return VERIFY_KEY
; }
1765 #line 125 "libmemcached/options/scanner.l"
1766 { yyextra
->begin
= yytext
; return POOL_MIN
; }
1770 #line 126 "libmemcached/options/scanner.l"
1771 { yyextra
->begin
= yytext
; return POOL_MAX
; }
1775 #line 128 "libmemcached/options/scanner.l"
1776 { yyextra
->begin
= yytext
; return NAMESPACE
; }
1780 #line 130 "libmemcached/options/scanner.l"
1781 { yyextra
->begin
= yytext
; return INCLUDE
; }
1785 #line 131 "libmemcached/options/scanner.l"
1786 { yyextra
->begin
= yytext
; return RESET
; }
1790 #line 132 "libmemcached/options/scanner.l"
1791 { yyextra
->begin
= yytext
; return PARSER_DEBUG
; }
1795 #line 133 "libmemcached/options/scanner.l"
1796 { yyextra
->begin
= yytext
; return SERVERS
; }
1800 #line 134 "libmemcached/options/scanner.l"
1801 { yyextra
->begin
= yytext
; return END
; }
1805 #line 135 "libmemcached/options/scanner.l"
1806 { yyextra
->begin
= yytext
; return ERROR
; }
1810 #line 137 "libmemcached/options/scanner.l"
1815 #line 138 "libmemcached/options/scanner.l"
1820 #line 141 "libmemcached/options/scanner.l"
1822 yyextra
->begin
= yytext
;
1823 return UNKNOWN_OPTION
;
1828 #line 146 "libmemcached/options/scanner.l"
1829 { return CONSISTENT
; }
1833 #line 147 "libmemcached/options/scanner.l"
1838 #line 148 "libmemcached/options/scanner.l"
1843 #line 150 "libmemcached/options/scanner.l"
1848 #line 151 "libmemcached/options/scanner.l"
1853 #line 152 "libmemcached/options/scanner.l"
1858 #line 153 "libmemcached/options/scanner.l"
1859 { return FNV1A_64
; }
1863 #line 154 "libmemcached/options/scanner.l"
1868 #line 155 "libmemcached/options/scanner.l"
1869 { return FNV1A_32
; }
1873 #line 156 "libmemcached/options/scanner.l"
1878 #line 157 "libmemcached/options/scanner.l"
1883 #line 158 "libmemcached/options/scanner.l"
1888 #line 160 "libmemcached/options/scanner.l"
1890 yylval
->server
.port
= MEMCACHED_DEFAULT_PORT
;
1891 yylval
->server
.weight
= 1;
1892 yylval
->server
.c_str
= yyextra
->set_hostname(yytext
, yyleng
);
1893 if (yylval
->server
.c_str
)
1894 yylval
->server
.size
= yyleng
;
1900 #line 169 "libmemcached/options/scanner.l"
1902 if (yyextra
->is_server())
1904 yylval
->server
.port
= MEMCACHED_DEFAULT_PORT
;
1905 yylval
->server
.weight
= 1;
1906 yylval
->server
.c_str
= yyextra
->set_hostname(yytext
, yyleng
);
1907 if (yylval
->server
.c_str
)
1908 yylval
->server
.size
= yyleng
;
1913 yylval
->string
.c_str
= yytext
;
1914 yylval
->string
.size
= yyleng
;
1920 /* rule 63 can match eol */
1922 #line 187 "libmemcached/options/scanner.l"
1924 config_get_text(yyscanner
)[yyleng
-1]= 0;
1925 yylval
->string
.c_str
= yytext
+1;
1926 yylval
->string
.size
= yyleng
-2;
1927 return QUOTED_STRING
;
1932 #line 194 "libmemcached/options/scanner.l"
1934 yyextra
->begin
= yytext
;
1940 #line 199 "libmemcached/options/scanner.l"
1943 #line 1944 "libmemcached/options/scanner.cc"
1944 case YY_STATE_EOF(INITIAL
):
1947 case YY_END_OF_BUFFER
:
1949 /* Amount of text matched not including the EOB char. */
1950 int yy_amount_of_matched_text
= (int) (yy_cp
- yyg
->yytext_ptr
) - 1;
1952 /* Undo the effects of YY_DO_BEFORE_ACTION. */
1953 *yy_cp
= yyg
->yy_hold_char
;
1954 YY_RESTORE_YY_MORE_OFFSET
1956 if ( YY_CURRENT_BUFFER_LVALUE
->yy_buffer_status
== YY_BUFFER_NEW
)
1958 /* We're scanning a new file or input source. It's
1959 * possible that this happened because the user
1960 * just pointed yyin at a new source and called
1961 * config_lex(). If so, then we have to assure
1962 * consistency between YY_CURRENT_BUFFER and our
1963 * globals. Here is the right place to do so, because
1964 * this is the first action (other than possibly a
1965 * back-up) that will match for the new input source.
1967 yyg
->yy_n_chars
= YY_CURRENT_BUFFER_LVALUE
->yy_n_chars
;
1968 YY_CURRENT_BUFFER_LVALUE
->yy_input_file
= yyin
;
1969 YY_CURRENT_BUFFER_LVALUE
->yy_buffer_status
= YY_BUFFER_NORMAL
;
1972 /* Note that here we test for yy_c_buf_p "<=" to the position
1973 * of the first EOB in the buffer, since yy_c_buf_p will
1974 * already have been incremented past the NUL character
1975 * (since all states make transitions on EOB to the
1976 * end-of-buffer state). Contrast this with the test
1979 if ( yyg
->yy_c_buf_p
<= &YY_CURRENT_BUFFER_LVALUE
->yy_ch_buf
[yyg
->yy_n_chars
] )
1980 { /* This was really a NUL. */
1981 yy_state_type yy_next_state
;
1983 yyg
->yy_c_buf_p
= yyg
->yytext_ptr
+ yy_amount_of_matched_text
;
1985 yy_current_state
= yy_get_previous_state( yyscanner
);
1987 /* Okay, we're now positioned to make the NUL
1988 * transition. We couldn't have
1989 * yy_get_previous_state() go ahead and do it
1990 * for us because it doesn't know how to deal
1991 * with the possibility of jamming (and we don't
1992 * want to build jamming into it because then it
1993 * will run more slowly).
1996 yy_next_state
= yy_try_NUL_trans( yy_current_state
, yyscanner
);
1998 yy_bp
= yyg
->yytext_ptr
+ YY_MORE_ADJ
;
2000 if ( yy_next_state
)
2002 /* Consume the NUL. */
2003 yy_cp
= ++yyg
->yy_c_buf_p
;
2004 yy_current_state
= yy_next_state
;
2010 /* %% [14.0] code to do back-up for compressed tables and set up yy_cp goes here */
2011 yy_cp
= yyg
->yy_c_buf_p
;
2012 goto yy_find_action
;
2016 else switch ( yy_get_next_buffer( yyscanner
) )
2018 case EOB_ACT_END_OF_FILE
:
2020 yyg
->yy_did_buffer_switch_on_eof
= 0;
2022 if ( config_wrap(yyscanner
) )
2024 /* Note: because we've taken care in
2025 * yy_get_next_buffer() to have set up
2026 * yytext, we can now set up
2027 * yy_c_buf_p so that if some total
2028 * hoser (like flex itself) wants to
2029 * call the scanner after we return the
2030 * YY_NULL, it'll still work - another
2031 * YY_NULL will get returned.
2033 yyg
->yy_c_buf_p
= yyg
->yytext_ptr
+ YY_MORE_ADJ
;
2035 yy_act
= YY_STATE_EOF(YY_START
);
2041 if ( ! yyg
->yy_did_buffer_switch_on_eof
)
2047 case EOB_ACT_CONTINUE_SCAN
:
2049 yyg
->yytext_ptr
+ yy_amount_of_matched_text
;
2051 yy_current_state
= yy_get_previous_state( yyscanner
);
2053 yy_cp
= yyg
->yy_c_buf_p
;
2054 yy_bp
= yyg
->yytext_ptr
+ YY_MORE_ADJ
;
2057 case EOB_ACT_LAST_MATCH
:
2059 &YY_CURRENT_BUFFER_LVALUE
->yy_ch_buf
[yyg
->yy_n_chars
];
2061 yy_current_state
= yy_get_previous_state( yyscanner
);
2063 yy_cp
= yyg
->yy_c_buf_p
;
2064 yy_bp
= yyg
->yytext_ptr
+ YY_MORE_ADJ
;
2065 goto yy_find_action
;
2072 "fatal flex scanner internal error--no action found" );
2073 } /* end of action switch */
2074 } /* end of scanning one token */
2075 } /* end of config_lex */
2076 /* %ok-for-header */
2079 /* %not-for-header */
2081 /* %ok-for-header */
2085 /* yy_get_next_buffer - try to read in a new buffer
2087 * Returns a code representing an action:
2088 * EOB_ACT_LAST_MATCH -
2089 * EOB_ACT_CONTINUE_SCAN - continue scanning from current position
2090 * EOB_ACT_END_OF_FILE - end of file
2093 static int yy_get_next_buffer (yyscan_t yyscanner
)
2098 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
2099 register char *dest
= YY_CURRENT_BUFFER_LVALUE
->yy_ch_buf
;
2100 register char *source
= yyg
->yytext_ptr
;
2101 register int number_to_move
, i
;
2104 if ( yyg
->yy_c_buf_p
> &YY_CURRENT_BUFFER_LVALUE
->yy_ch_buf
[yyg
->yy_n_chars
+ 1] )
2106 "fatal flex scanner internal error--end of buffer missed" );
2108 if ( YY_CURRENT_BUFFER_LVALUE
->yy_fill_buffer
== 0 )
2109 { /* Don't try to fill the buffer, so this is an EOF. */
2110 if ( yyg
->yy_c_buf_p
- yyg
->yytext_ptr
- YY_MORE_ADJ
== 1 )
2112 /* We matched a single character, the EOB, so
2113 * treat this as a final EOF.
2115 return EOB_ACT_END_OF_FILE
;
2120 /* We matched some text prior to the EOB, first
2123 return EOB_ACT_LAST_MATCH
;
2127 /* Try to read more data. */
2129 /* First move last chars to start of buffer. */
2130 number_to_move
= (int) (yyg
->yy_c_buf_p
- yyg
->yytext_ptr
) - 1;
2132 for ( i
= 0; i
< number_to_move
; ++i
)
2133 *(dest
++) = *(source
++);
2135 if ( YY_CURRENT_BUFFER_LVALUE
->yy_buffer_status
== YY_BUFFER_EOF_PENDING
)
2136 /* don't do the read, it's not guaranteed to return an EOF,
2139 YY_CURRENT_BUFFER_LVALUE
->yy_n_chars
= yyg
->yy_n_chars
= 0;
2144 YY_CURRENT_BUFFER_LVALUE
->yy_buf_size
- number_to_move
- 1;
2146 while ( num_to_read
<= 0 )
2147 { /* Not enough room in the buffer - grow it. */
2149 /* just a shorter name for the current buffer */
2150 YY_BUFFER_STATE b
= YY_CURRENT_BUFFER
;
2152 int yy_c_buf_p_offset
=
2153 (int) (yyg
->yy_c_buf_p
- b
->yy_ch_buf
);
2155 if ( b
->yy_is_our_buffer
)
2157 int new_size
= b
->yy_buf_size
* 2;
2159 if ( new_size
<= 0 )
2160 b
->yy_buf_size
+= b
->yy_buf_size
/ 8;
2162 b
->yy_buf_size
*= 2;
2164 b
->yy_ch_buf
= (char *)
2165 /* Include room in for 2 EOB chars. */
2166 config_realloc((void *) b
->yy_ch_buf
,b
->yy_buf_size
+ 2 ,yyscanner
);
2169 /* Can't grow it, we don't own it. */
2172 if ( ! b
->yy_ch_buf
)
2174 "fatal error - scanner input buffer overflow" );
2176 yyg
->yy_c_buf_p
= &b
->yy_ch_buf
[yy_c_buf_p_offset
];
2178 num_to_read
= YY_CURRENT_BUFFER_LVALUE
->yy_buf_size
-
2183 if ( num_to_read
> YY_READ_BUF_SIZE
)
2184 num_to_read
= YY_READ_BUF_SIZE
;
2186 /* Read in more data. */
2187 YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE
->yy_ch_buf
[number_to_move
]),
2188 yyg
->yy_n_chars
, (size_t) num_to_read
);
2190 YY_CURRENT_BUFFER_LVALUE
->yy_n_chars
= yyg
->yy_n_chars
;
2193 if ( yyg
->yy_n_chars
== 0 )
2195 if ( number_to_move
== YY_MORE_ADJ
)
2197 ret_val
= EOB_ACT_END_OF_FILE
;
2198 config_restart(yyin
,yyscanner
);
2203 ret_val
= EOB_ACT_LAST_MATCH
;
2204 YY_CURRENT_BUFFER_LVALUE
->yy_buffer_status
=
2205 YY_BUFFER_EOF_PENDING
;
2210 ret_val
= EOB_ACT_CONTINUE_SCAN
;
2212 if ((yy_size_t
) (yyg
->yy_n_chars
+ number_to_move
) > YY_CURRENT_BUFFER_LVALUE
->yy_buf_size
) {
2213 /* Extend the array by 50%, plus the number we really need. */
2214 yy_size_t new_size
= yyg
->yy_n_chars
+ number_to_move
+ (yyg
->yy_n_chars
>> 1);
2215 YY_CURRENT_BUFFER_LVALUE
->yy_ch_buf
= (char *) config_realloc((void *) YY_CURRENT_BUFFER_LVALUE
->yy_ch_buf
,new_size
,yyscanner
);
2216 if ( ! YY_CURRENT_BUFFER_LVALUE
->yy_ch_buf
)
2217 YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" );
2220 yyg
->yy_n_chars
+= number_to_move
;
2221 YY_CURRENT_BUFFER_LVALUE
->yy_ch_buf
[yyg
->yy_n_chars
] = YY_END_OF_BUFFER_CHAR
;
2222 YY_CURRENT_BUFFER_LVALUE
->yy_ch_buf
[yyg
->yy_n_chars
+ 1] = YY_END_OF_BUFFER_CHAR
;
2224 yyg
->yytext_ptr
= &YY_CURRENT_BUFFER_LVALUE
->yy_ch_buf
[0];
2229 /* yy_get_previous_state - get the state just before the EOB char was reached */
2232 /* %not-for-header */
2234 static yy_state_type
yy_get_previous_state (yyscan_t yyscanner
)
2239 register yy_state_type yy_current_state
;
2240 register char *yy_cp
;
2241 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
2243 /* %% [15.0] code to get the start state into yy_current_state goes here */
2244 yy_current_state
= yyg
->yy_start
;
2245 yy_current_state
+= YY_AT_BOL();
2247 for ( yy_cp
= yyg
->yytext_ptr
+ YY_MORE_ADJ
; yy_cp
< yyg
->yy_c_buf_p
; ++yy_cp
)
2249 /* %% [16.0] code to find the next state goes here */
2250 register YY_CHAR yy_c
= (*yy_cp
? yy_ec
[YY_SC_TO_UI(*yy_cp
)] : 1);
2251 if ( yy_accept
[yy_current_state
] )
2253 yyg
->yy_last_accepting_state
= yy_current_state
;
2254 yyg
->yy_last_accepting_cpos
= yy_cp
;
2256 while ( yy_chk
[yy_base
[yy_current_state
] + yy_c
] != yy_current_state
)
2258 yy_current_state
= (int) yy_def
[yy_current_state
];
2259 if ( yy_current_state
>= 521 )
2260 yy_c
= yy_meta
[(unsigned int) yy_c
];
2262 yy_current_state
= yy_nxt
[yy_base
[yy_current_state
] + (unsigned int) yy_c
];
2265 return yy_current_state
;
2268 /* yy_try_NUL_trans - try to make a transition on the NUL character
2271 * next_state = yy_try_NUL_trans( current_state );
2274 static yy_state_type
yy_try_NUL_trans (yy_state_type yy_current_state
, yyscan_t yyscanner
)
2279 register int yy_is_jam
;
2280 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
; /* This var may be unused depending upon options. */
2281 /* %% [17.0] code to find the next state, and perhaps do backing up, goes here */
2282 register char *yy_cp
= yyg
->yy_c_buf_p
;
2284 register YY_CHAR yy_c
= 1;
2285 if ( yy_accept
[yy_current_state
] )
2287 yyg
->yy_last_accepting_state
= yy_current_state
;
2288 yyg
->yy_last_accepting_cpos
= yy_cp
;
2290 while ( yy_chk
[yy_base
[yy_current_state
] + yy_c
] != yy_current_state
)
2292 yy_current_state
= (int) yy_def
[yy_current_state
];
2293 if ( yy_current_state
>= 521 )
2294 yy_c
= yy_meta
[(unsigned int) yy_c
];
2296 yy_current_state
= yy_nxt
[yy_base
[yy_current_state
] + (unsigned int) yy_c
];
2297 yy_is_jam
= (yy_current_state
== 520);
2299 return yy_is_jam
? 0 : yy_current_state
;
2309 static int yyinput (yyscan_t yyscanner
)
2311 static int input (yyscan_t yyscanner
)
2319 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
2321 *yyg
->yy_c_buf_p
= yyg
->yy_hold_char
;
2323 if ( *yyg
->yy_c_buf_p
== YY_END_OF_BUFFER_CHAR
)
2325 /* yy_c_buf_p now points to the character we want to return.
2326 * If this occurs *before* the EOB characters, then it's a
2327 * valid NUL; if not, then we've hit the end of the buffer.
2329 if ( yyg
->yy_c_buf_p
< &YY_CURRENT_BUFFER_LVALUE
->yy_ch_buf
[yyg
->yy_n_chars
] )
2330 /* This was really a NUL. */
2331 *yyg
->yy_c_buf_p
= '\0';
2334 { /* need more input */
2335 int offset
= yyg
->yy_c_buf_p
- yyg
->yytext_ptr
;
2338 switch ( yy_get_next_buffer( yyscanner
) )
2340 case EOB_ACT_LAST_MATCH
:
2341 /* This happens because yy_g_n_b()
2342 * sees that we've accumulated a
2343 * token and flags that we need to
2344 * try matching the token before
2345 * proceeding. But for input(),
2346 * there's no matching to consider.
2347 * So convert the EOB_ACT_LAST_MATCH
2348 * to EOB_ACT_END_OF_FILE.
2351 /* Reset buffer status. */
2352 config_restart(yyin
,yyscanner
);
2356 case EOB_ACT_END_OF_FILE
:
2358 if ( config_wrap(yyscanner
) )
2361 if ( ! yyg
->yy_did_buffer_switch_on_eof
)
2364 return yyinput(yyscanner
);
2366 return input(yyscanner
);
2370 case EOB_ACT_CONTINUE_SCAN
:
2371 yyg
->yy_c_buf_p
= yyg
->yytext_ptr
+ offset
;
2377 c
= *(unsigned char *) yyg
->yy_c_buf_p
; /* cast for 8-bit char's */
2378 *yyg
->yy_c_buf_p
= '\0'; /* preserve yytext */
2379 yyg
->yy_hold_char
= *++yyg
->yy_c_buf_p
;
2381 /* %% [19.0] update BOL and yylineno */
2382 YY_CURRENT_BUFFER_LVALUE
->yy_at_bol
= (c
== '\n');
2387 #endif /* ifndef YY_NO_INPUT */
2390 /** Immediately switch to a different input stream.
2391 * @param input_file A readable stream.
2392 * @param yyscanner The scanner object.
2393 * @note This function does not reset the start condition to @c INITIAL .
2396 void config_restart (FILE * input_file
, yyscan_t yyscanner
)
2401 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
2403 if ( ! YY_CURRENT_BUFFER
){
2404 config_ensure_buffer_stack (yyscanner
);
2405 YY_CURRENT_BUFFER_LVALUE
=
2406 config__create_buffer(yyin
,YY_BUF_SIZE
,yyscanner
);
2409 config__init_buffer(YY_CURRENT_BUFFER
,input_file
,yyscanner
);
2410 config__load_buffer_state(yyscanner
);
2413 /** Switch to a different input buffer.
2414 * @param new_buffer The new input buffer.
2415 * @param yyscanner The scanner object.
2418 void config__switch_to_buffer (YY_BUFFER_STATE new_buffer
, yyscan_t yyscanner
)
2423 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
2425 /* TODO. We should be able to replace this entire function body
2427 * config_pop_buffer_state();
2428 * config_push_buffer_state(new_buffer);
2430 config_ensure_buffer_stack (yyscanner
);
2431 if ( YY_CURRENT_BUFFER
== new_buffer
)
2434 if ( YY_CURRENT_BUFFER
)
2436 /* Flush out information for old buffer. */
2437 *yyg
->yy_c_buf_p
= yyg
->yy_hold_char
;
2438 YY_CURRENT_BUFFER_LVALUE
->yy_buf_pos
= yyg
->yy_c_buf_p
;
2439 YY_CURRENT_BUFFER_LVALUE
->yy_n_chars
= yyg
->yy_n_chars
;
2442 YY_CURRENT_BUFFER_LVALUE
= new_buffer
;
2443 config__load_buffer_state(yyscanner
);
2445 /* We don't actually know whether we did this switch during
2446 * EOF (config_wrap()) processing, but the only time this flag
2447 * is looked at is after config_wrap() is called, so it's safe
2448 * to go ahead and always set it.
2450 yyg
->yy_did_buffer_switch_on_eof
= 1;
2454 static void config__load_buffer_state (yyscan_t yyscanner
)
2459 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
2460 yyg
->yy_n_chars
= YY_CURRENT_BUFFER_LVALUE
->yy_n_chars
;
2461 yyg
->yytext_ptr
= yyg
->yy_c_buf_p
= YY_CURRENT_BUFFER_LVALUE
->yy_buf_pos
;
2462 yyin
= YY_CURRENT_BUFFER_LVALUE
->yy_input_file
;
2463 yyg
->yy_hold_char
= *yyg
->yy_c_buf_p
;
2466 /** Allocate and initialize an input buffer state.
2467 * @param file A readable stream.
2468 * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE.
2469 * @param yyscanner The scanner object.
2470 * @return the allocated buffer state.
2473 YY_BUFFER_STATE
config__create_buffer (FILE * file
, int size
, yyscan_t yyscanner
)
2480 b
= (YY_BUFFER_STATE
) config_alloc(sizeof( struct yy_buffer_state
) ,yyscanner
);
2482 YY_FATAL_ERROR( "out of dynamic memory in config__create_buffer()" );
2484 b
->yy_buf_size
= size
;
2486 /* yy_ch_buf has to be 2 characters longer than the size given because
2487 * we need to put in 2 end-of-buffer characters.
2489 b
->yy_ch_buf
= (char *) config_alloc(b
->yy_buf_size
+ 2 ,yyscanner
);
2490 if ( ! b
->yy_ch_buf
)
2491 YY_FATAL_ERROR( "out of dynamic memory in config__create_buffer()" );
2493 b
->yy_is_our_buffer
= 1;
2495 config__init_buffer(b
,file
,yyscanner
);
2500 /** Destroy the buffer.
2501 * @param b a buffer created with config__create_buffer()
2502 * @param yyscanner The scanner object.
2505 void config__delete_buffer (YY_BUFFER_STATE b
, yyscan_t yyscanner
)
2510 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
2515 if ( b
== YY_CURRENT_BUFFER
) /* Not sure if we should pop here. */
2516 YY_CURRENT_BUFFER_LVALUE
= (YY_BUFFER_STATE
) 0;
2518 if ( b
->yy_is_our_buffer
)
2519 config_free((void *) b
->yy_ch_buf
,yyscanner
);
2521 config_free((void *) b
,yyscanner
);
2527 extern int isatty (int );
2528 #endif /* __cplusplus */
2535 /* Initializes or reinitializes a buffer.
2536 * This function is sometimes called more than once on the same buffer,
2537 * such as during a config_restart() or at EOF.
2540 static void config__init_buffer (YY_BUFFER_STATE b
, FILE * file
, yyscan_t yyscanner
)
2547 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
2549 config__flush_buffer(b
,yyscanner
);
2551 b
->yy_input_file
= file
;
2552 b
->yy_fill_buffer
= 1;
2554 /* If b is the current buffer, then config__init_buffer was _probably_
2555 * called from config_restart() or through yy_get_next_buffer.
2556 * In that case, we don't want to reset the lineno or column.
2558 if (b
!= YY_CURRENT_BUFFER
){
2559 b
->yy_bs_lineno
= 1;
2560 b
->yy_bs_column
= 0;
2565 b
->yy_is_interactive
= file
? (isatty( fileno(file
) ) > 0) : 0;
2573 /** Discard all buffered characters. On the next scan, YY_INPUT will be called.
2574 * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER.
2575 * @param yyscanner The scanner object.
2578 void config__flush_buffer (YY_BUFFER_STATE b
, yyscan_t yyscanner
)
2583 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
2589 /* We always need two end-of-buffer characters. The first causes
2590 * a transition to the end-of-buffer state. The second causes
2591 * a jam in that state.
2593 b
->yy_ch_buf
[0] = YY_END_OF_BUFFER_CHAR
;
2594 b
->yy_ch_buf
[1] = YY_END_OF_BUFFER_CHAR
;
2596 b
->yy_buf_pos
= &b
->yy_ch_buf
[0];
2599 b
->yy_buffer_status
= YY_BUFFER_NEW
;
2601 if ( b
== YY_CURRENT_BUFFER
)
2602 config__load_buffer_state(yyscanner
);
2606 /** Pushes the new state onto the stack. The new state becomes
2607 * the current state. This function will allocate the stack
2609 * @param new_buffer The new state.
2610 * @param yyscanner The scanner object.
2613 void config_push_buffer_state (YY_BUFFER_STATE new_buffer
, yyscan_t yyscanner
)
2618 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
2619 if (new_buffer
== NULL
)
2622 config_ensure_buffer_stack(yyscanner
);
2624 /* This block is copied from config__switch_to_buffer. */
2625 if ( YY_CURRENT_BUFFER
)
2627 /* Flush out information for old buffer. */
2628 *yyg
->yy_c_buf_p
= yyg
->yy_hold_char
;
2629 YY_CURRENT_BUFFER_LVALUE
->yy_buf_pos
= yyg
->yy_c_buf_p
;
2630 YY_CURRENT_BUFFER_LVALUE
->yy_n_chars
= yyg
->yy_n_chars
;
2633 /* Only push if top exists. Otherwise, replace top. */
2634 if (YY_CURRENT_BUFFER
)
2635 yyg
->yy_buffer_stack_top
++;
2636 YY_CURRENT_BUFFER_LVALUE
= new_buffer
;
2638 /* copied from config__switch_to_buffer. */
2639 config__load_buffer_state(yyscanner
);
2640 yyg
->yy_did_buffer_switch_on_eof
= 1;
2645 /** Removes and deletes the top of the stack, if present.
2646 * The next element becomes the new top.
2647 * @param yyscanner The scanner object.
2650 void config_pop_buffer_state (yyscan_t yyscanner
)
2655 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
2656 if (!YY_CURRENT_BUFFER
)
2659 config__delete_buffer(YY_CURRENT_BUFFER
,yyscanner
);
2660 YY_CURRENT_BUFFER_LVALUE
= NULL
;
2661 if (yyg
->yy_buffer_stack_top
> 0)
2662 --yyg
->yy_buffer_stack_top
;
2664 if (YY_CURRENT_BUFFER
) {
2665 config__load_buffer_state(yyscanner
);
2666 yyg
->yy_did_buffer_switch_on_eof
= 1;
2672 /* Allocates the stack if it does not exist.
2673 * Guarantees space for at least one push.
2676 static void config_ensure_buffer_stack (yyscan_t yyscanner
)
2682 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
2684 if (!yyg
->yy_buffer_stack
) {
2686 /* First allocation is just for 2 elements, since we don't know if this
2687 * scanner will even need a stack. We use 2 instead of 1 to avoid an
2688 * immediate realloc on the next call.
2691 yyg
->yy_buffer_stack
= (struct yy_buffer_state
**)config_alloc
2692 (num_to_alloc
* sizeof(struct yy_buffer_state
*)
2694 if ( ! yyg
->yy_buffer_stack
)
2695 YY_FATAL_ERROR( "out of dynamic memory in config_ensure_buffer_stack()" );
2697 memset(yyg
->yy_buffer_stack
, 0, num_to_alloc
* sizeof(struct yy_buffer_state
*));
2699 yyg
->yy_buffer_stack_max
= num_to_alloc
;
2700 yyg
->yy_buffer_stack_top
= 0;
2704 if (yyg
->yy_buffer_stack_top
>= (yyg
->yy_buffer_stack_max
) - 1){
2706 /* Increase the buffer to prepare for a possible push. */
2707 int grow_size
= 8 /* arbitrary grow size */;
2709 num_to_alloc
= yyg
->yy_buffer_stack_max
+ grow_size
;
2710 yyg
->yy_buffer_stack
= (struct yy_buffer_state
**)config_realloc
2711 (yyg
->yy_buffer_stack
,
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 /* zero only the new slots.*/
2718 memset(yyg
->yy_buffer_stack
+ yyg
->yy_buffer_stack_max
, 0, grow_size
* sizeof(struct yy_buffer_state
*));
2719 yyg
->yy_buffer_stack_max
= num_to_alloc
;
2725 /** Setup the input buffer state to scan directly from a user-specified character buffer.
2726 * @param base the character buffer
2727 * @param size the size in bytes of the character buffer
2728 * @param yyscanner The scanner object.
2729 * @return the newly allocated buffer state object.
2731 YY_BUFFER_STATE
config__scan_buffer (char * base
, yy_size_t size
, yyscan_t yyscanner
)
2736 base
[size
-2] != YY_END_OF_BUFFER_CHAR
||
2737 base
[size
-1] != YY_END_OF_BUFFER_CHAR
)
2738 /* They forgot to leave room for the EOB's. */
2741 b
= (YY_BUFFER_STATE
) config_alloc(sizeof( struct yy_buffer_state
) ,yyscanner
);
2743 YY_FATAL_ERROR( "out of dynamic memory in config__scan_buffer()" );
2745 b
->yy_buf_size
= size
- 2; /* "- 2" to take care of EOB's */
2746 b
->yy_buf_pos
= b
->yy_ch_buf
= base
;
2747 b
->yy_is_our_buffer
= 0;
2748 b
->yy_input_file
= 0;
2749 b
->yy_n_chars
= b
->yy_buf_size
;
2750 b
->yy_is_interactive
= 0;
2752 b
->yy_fill_buffer
= 0;
2753 b
->yy_buffer_status
= YY_BUFFER_NEW
;
2755 config__switch_to_buffer(b
,yyscanner
);
2762 /** Setup the input buffer state to scan a string. The next call to config_lex() will
2763 * scan from a @e copy of @a str.
2764 * @param yystr a NUL-terminated string to scan
2765 * @param yyscanner The scanner object.
2766 * @return the newly allocated buffer state object.
2767 * @note If you want to scan bytes that may contain NUL values, then use
2768 * config__scan_bytes() instead.
2770 YY_BUFFER_STATE
config__scan_string (yyconst
char * yystr
, yyscan_t yyscanner
)
2773 return config__scan_bytes(yystr
,strlen(yystr
) ,yyscanner
);
2778 /** Setup the input buffer state to scan the given bytes. The next call to config_lex() will
2779 * scan from a @e copy of @a bytes.
2780 * @param bytes the byte buffer to scan
2781 * @param len the number of bytes in the buffer pointed to by @a bytes.
2782 * @param yyscanner The scanner object.
2783 * @return the newly allocated buffer state object.
2785 YY_BUFFER_STATE
config__scan_bytes (yyconst
char * yybytes
, int _yybytes_len
, yyscan_t yyscanner
)
2792 /* Get memory for full buffer, including space for trailing EOB's. */
2793 n
= _yybytes_len
+ 2;
2794 buf
= (char *) config_alloc(n
,yyscanner
);
2796 YY_FATAL_ERROR( "out of dynamic memory in config__scan_bytes()" );
2798 for ( i
= 0; i
< _yybytes_len
; ++i
)
2799 buf
[i
] = yybytes
[i
];
2801 buf
[_yybytes_len
] = buf
[_yybytes_len
+1] = YY_END_OF_BUFFER_CHAR
;
2803 b
= config__scan_buffer(buf
,n
,yyscanner
);
2805 YY_FATAL_ERROR( "bad buffer in config__scan_bytes()" );
2807 /* It's okay to grow etc. this buffer, and we should throw it
2808 * away when we're done.
2810 b
->yy_is_our_buffer
= 1;
2816 #ifndef YY_EXIT_FAILURE
2817 #define YY_EXIT_FAILURE 2
2821 static void yy_fatal_error (yyconst
char* msg
, yyscan_t yyscanner
)
2823 (void) fprintf( stderr
, "%s\n", msg
);
2824 exit( YY_EXIT_FAILURE
);
2830 /* Redefine yyless() so it works in section 3 code. */
2836 /* Undo effects of setting up yytext. */ \
2837 int yyless_macro_arg = (n); \
2838 YY_LESS_LINENO(yyless_macro_arg);\
2839 yytext[yyleng] = yyg->yy_hold_char; \
2840 yyg->yy_c_buf_p = yytext + yyless_macro_arg; \
2841 yyg->yy_hold_char = *yyg->yy_c_buf_p; \
2842 *yyg->yy_c_buf_p = '\0'; \
2843 yyleng = yyless_macro_arg; \
2847 /* Accessor methods (get/set functions) to struct members. */
2852 /** Get the user-defined data for this scanner.
2853 * @param yyscanner The scanner object.
2855 YY_EXTRA_TYPE
config_get_extra (yyscan_t yyscanner
)
2857 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
2863 /** Get the current line number.
2864 * @param yyscanner The scanner object.
2866 int config_get_lineno (yyscan_t yyscanner
)
2868 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
2870 if (! YY_CURRENT_BUFFER
)
2876 /** Get the current column number.
2877 * @param yyscanner The scanner object.
2879 int config_get_column (yyscan_t yyscanner
)
2881 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
2883 if (! YY_CURRENT_BUFFER
)
2889 /** Get the input stream.
2890 * @param yyscanner The scanner object.
2892 FILE *config_get_in (yyscan_t yyscanner
)
2894 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
2898 /** Get the output stream.
2899 * @param yyscanner The scanner object.
2901 FILE *config_get_out (yyscan_t yyscanner
)
2903 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
2907 /** Get the length of the current token.
2908 * @param yyscanner The scanner object.
2910 int config_get_leng (yyscan_t yyscanner
)
2912 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
2916 /** Get the current token.
2917 * @param yyscanner The scanner object.
2920 char *config_get_text (yyscan_t yyscanner
)
2922 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
2928 /** Set the user-defined data. This data is never touched by the scanner.
2929 * @param user_defined The data to be associated with this scanner.
2930 * @param yyscanner The scanner object.
2932 void config_set_extra (YY_EXTRA_TYPE user_defined
, yyscan_t yyscanner
)
2934 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
2935 yyextra
= user_defined
;
2940 /** Set the current line number.
2941 * @param line_number
2942 * @param yyscanner The scanner object.
2944 void config_set_lineno (int line_number
, yyscan_t yyscanner
)
2946 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
2948 /* lineno is only valid if an input buffer exists. */
2949 if (! YY_CURRENT_BUFFER
)
2950 yy_fatal_error( "config_set_lineno called with no buffer" , yyscanner
);
2952 yylineno
= line_number
;
2955 /** Set the current column.
2956 * @param line_number
2957 * @param yyscanner The scanner object.
2959 void config_set_column (int column_no
, yyscan_t yyscanner
)
2961 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
2963 /* column is only valid if an input buffer exists. */
2964 if (! YY_CURRENT_BUFFER
)
2965 yy_fatal_error( "config_set_column called with no buffer" , yyscanner
);
2967 yycolumn
= column_no
;
2970 /** Set the input stream. This does not discard the current
2972 * @param in_str A readable stream.
2973 * @param yyscanner The scanner object.
2974 * @see config__switch_to_buffer
2976 void config_set_in (FILE * in_str
, yyscan_t yyscanner
)
2978 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
2982 void config_set_out (FILE * out_str
, yyscan_t yyscanner
)
2984 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
2988 int config_get_debug (yyscan_t yyscanner
)
2990 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
2991 return yy_flex_debug
;
2994 void config_set_debug (int bdebug
, yyscan_t yyscanner
)
2996 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
2997 yy_flex_debug
= bdebug
;
3003 /* Accessor methods for yylval and yylloc */
3005 /* %if-bison-bridge */
3007 YYSTYPE
* config_get_lval (yyscan_t yyscanner
)
3009 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
3013 void config_set_lval (YYSTYPE
* yylval_param
, yyscan_t yyscanner
)
3015 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
3016 yylval
= yylval_param
;
3021 /* User-visible API */
3023 /* config_lex_init is special because it creates the scanner itself, so it is
3024 * the ONLY reentrant function that doesn't take the scanner as the last argument.
3025 * That's why we explicitly handle the declaration, instead of using our macros.
3028 int config_lex_init(yyscan_t
* ptr_yy_globals
)
3031 if (ptr_yy_globals
== NULL
){
3036 *ptr_yy_globals
= (yyscan_t
) config_alloc ( sizeof( struct yyguts_t
), NULL
);
3038 if (*ptr_yy_globals
== NULL
){
3043 /* By setting to 0xAA, we expose bugs in yy_init_globals. Leave at 0x00 for releases. */
3044 memset(*ptr_yy_globals
,0x00,sizeof(struct yyguts_t
));
3046 return yy_init_globals ( *ptr_yy_globals
);
3049 /* config_lex_init_extra has the same functionality as config_lex_init, but follows the
3050 * convention of taking the scanner as the last argument. Note however, that
3051 * this is a *pointer* to a scanner, as it will be allocated by this call (and
3052 * is the reason, too, why this function also must handle its own declaration).
3053 * The user defined value in the first argument will be available to config_alloc in
3054 * the yyextra field.
3057 int config_lex_init_extra(YY_EXTRA_TYPE yy_user_defined
,yyscan_t
* ptr_yy_globals
)
3060 struct yyguts_t dummy_yyguts
;
3062 config_set_extra (yy_user_defined
, &dummy_yyguts
);
3064 if (ptr_yy_globals
== NULL
){
3069 *ptr_yy_globals
= (yyscan_t
) config_alloc ( sizeof( struct yyguts_t
), &dummy_yyguts
);
3071 if (*ptr_yy_globals
== NULL
){
3076 /* By setting to 0xAA, we expose bugs in
3077 yy_init_globals. Leave at 0x00 for releases. */
3078 memset(*ptr_yy_globals
,0x00,sizeof(struct yyguts_t
));
3080 config_set_extra (yy_user_defined
, *ptr_yy_globals
);
3082 return yy_init_globals ( *ptr_yy_globals
);
3085 /* %endif if-c-only */
3088 static int yy_init_globals (yyscan_t yyscanner
)
3090 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
3091 /* Initialization is the same as for the non-reentrant scanner.
3092 * This function is called from config_lex_destroy(), so don't allocate here.
3095 yyg
->yy_buffer_stack
= 0;
3096 yyg
->yy_buffer_stack_top
= 0;
3097 yyg
->yy_buffer_stack_max
= 0;
3098 yyg
->yy_c_buf_p
= (char *) 0;
3102 yyg
->yy_start_stack_ptr
= 0;
3103 yyg
->yy_start_stack_depth
= 0;
3104 yyg
->yy_start_stack
= NULL
;
3106 /* Defined in main.c */
3115 /* For future reference: Set errno on error, since we are called by
3122 /* %if-c-only SNIP! this currently causes conflicts with the c++ scanner */
3123 /* config_lex_destroy is for both reentrant and non-reentrant scanners. */
3124 int config_lex_destroy (yyscan_t yyscanner
)
3126 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
3128 /* Pop the buffer stack, destroying each element. */
3129 while(YY_CURRENT_BUFFER
){
3130 config__delete_buffer(YY_CURRENT_BUFFER
,yyscanner
);
3131 YY_CURRENT_BUFFER_LVALUE
= NULL
;
3132 config_pop_buffer_state(yyscanner
);
3135 /* Destroy the stack itself. */
3136 config_free(yyg
->yy_buffer_stack
,yyscanner
);
3137 yyg
->yy_buffer_stack
= NULL
;
3139 /* Destroy the start condition stack. */
3140 config_free(yyg
->yy_start_stack
,yyscanner
);
3141 yyg
->yy_start_stack
= NULL
;
3143 /* Reset the globals. This is important in a non-reentrant scanner so the next time
3144 * config_lex() is called, initialization will occur. */
3145 yy_init_globals( yyscanner
);
3148 /* Destroy the main struct (reentrant only). */
3149 config_free ( yyscanner
, yyscanner
);
3157 * Internal utility routines.
3161 static void yy_flex_strncpy (char* s1
, yyconst
char * s2
, int n
, yyscan_t yyscanner
)
3164 for ( i
= 0; i
< n
; ++i
)
3169 #ifdef YY_NEED_STRLEN
3170 static int yy_flex_strlen (yyconst
char * s
, yyscan_t yyscanner
)
3173 for ( n
= 0; s
[n
]; ++n
)
3180 void *config_alloc (yy_size_t size
, yyscan_t yyscanner
)
3182 return (void *) malloc( size
);
3185 void *config_realloc (void * ptr
, yy_size_t size
, yyscan_t yyscanner
)
3187 /* The cast to (char *) in the following accommodates both
3188 * implementations that use char* generic pointers, and those
3189 * that use void* generic pointers. It works with the latter
3190 * because both ANSI C and C++ allow castless assignment from
3191 * any pointer type to void*, and deal with argument conversions
3192 * as though doing an assignment.
3194 return (void *) realloc( (char *) ptr
, size
);
3197 void config_free (void * ptr
, yyscan_t yyscanner
)
3199 free( (char *) ptr
); /* see config_realloc() for (char *) cast */
3202 /* %if-tables-serialization definitions */
3203 /* %define-yytables The name for this specific scanner's tables. */
3204 #define YYTABLES_NAME "yytables"
3207 /* %ok-for-header */
3209 #line 199 "libmemcached/options/scanner.l"
3213 void Context::init_scanner()
3215 config_lex_init(&scanner
);
3216 config_set_extra(this,scanner
);
3219 void Context::destroy_scanner()
3221 config_lex_destroy(scanner
);