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 /* %if-not-reentrant */
236 /* %if-not-reentrant */
240 #define EOB_ACT_CONTINUE_SCAN 0
241 #define EOB_ACT_END_OF_FILE 1
242 #define EOB_ACT_LAST_MATCH 2
244 #define YY_LESS_LINENO(n)
246 /* Return all but the first "n" matched characters back to the input stream. */
250 /* Undo effects of setting up yytext. */ \
251 int yyless_macro_arg = (n); \
252 YY_LESS_LINENO(yyless_macro_arg);\
253 *yy_cp = yyg->yy_hold_char; \
254 YY_RESTORE_YY_MORE_OFFSET \
255 yyg->yy_c_buf_p = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \
256 YY_DO_BEFORE_ACTION; /* set up yytext again */ \
260 #define unput(c) yyunput( c, yyg->yytext_ptr , yyscanner )
262 #ifndef YY_TYPEDEF_YY_SIZE_T
263 #define YY_TYPEDEF_YY_SIZE_T
264 typedef size_t yy_size_t
;
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
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
,int 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. */
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 int 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 int config_get_column (yyscan_t yyscanner
);
1265 void config_set_column (int column_no
,yyscan_t yyscanner
);
1267 /* %if-bison-bridge */
1269 YYSTYPE
* config_get_lval (yyscan_t yyscanner
);
1271 void config_set_lval (YYSTYPE
* yylval_param
,yyscan_t yyscanner
);
1275 /* Macros after this point can all be overridden by user definitions in
1279 #ifndef YY_SKIP_YYWRAP
1281 extern "C" int config_wrap (yyscan_t yyscanner
);
1283 extern int config_wrap (yyscan_t yyscanner
);
1287 /* %not-for-header */
1289 /* %ok-for-header */
1294 static void yy_flex_strncpy (char *,yyconst
char *,int ,yyscan_t yyscanner
);
1297 #ifdef YY_NEED_STRLEN
1298 static int yy_flex_strlen (yyconst
char * ,yyscan_t yyscanner
);
1302 /* %if-c-only Standard (non-C++) definition */
1303 /* %not-for-header */
1306 static int yyinput (yyscan_t yyscanner
);
1308 static int input (yyscan_t yyscanner
);
1310 /* %ok-for-header */
1319 /* Amount of stuff to slurp up with each read. */
1320 #ifndef YY_READ_BUF_SIZE
1321 #define YY_READ_BUF_SIZE 8192
1324 /* Copy whatever the last rule matched to the standard output. */
1326 /* %if-c-only Standard (non-C++) definition */
1327 /* This used to be an fputs(), but since the string might contain NUL's,
1328 * we now use fwrite().
1330 #define ECHO do { if (fwrite( yytext, yyleng, 1, yyout )) {} } while (0)
1332 /* %if-c++-only C++ definition */
1336 /* Gets input and stuffs it into "buf". number of characters read, or YY_NULL,
1337 * is returned in "result".
1340 #define YY_INPUT(buf,result,max_size) \
1341 /* %% [5.0] fread()/read() definition of YY_INPUT goes here unless we're doing C++ \ */\
1342 if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \
1346 for ( n = 0; n < max_size && \
1347 (c = getc( yyin )) != EOF && c != '\n'; ++n ) \
1348 buf[n] = (char) c; \
1350 buf[n++] = (char) c; \
1351 if ( c == EOF && ferror( yyin ) ) \
1352 YY_FATAL_ERROR( "input in flex scanner failed" ); \
1358 while ( (result = fread(buf, 1, max_size, yyin))==0 && ferror(yyin)) \
1360 if( errno != EINTR) \
1362 YY_FATAL_ERROR( "input in flex scanner failed" ); \
1370 /* %if-c++-only C++ definition \ */\
1375 /* No semi-colon after return; correct usage is to write "yyterminate();" -
1376 * we don't want an extra ';' after the "return" because that will cause
1377 * some compilers to complain about unreachable statements.
1380 #define yyterminate() return YY_NULL
1383 /* Number of entries by which start-condition stack grows. */
1384 #ifndef YY_START_STACK_INCR
1385 #define YY_START_STACK_INCR 25
1388 /* Report a fatal error. */
1389 #ifndef YY_FATAL_ERROR
1391 #define YY_FATAL_ERROR(msg) yy_fatal_error( msg , yyscanner)
1397 /* %if-tables-serialization structures and prototypes */
1398 /* %not-for-header */
1400 /* %ok-for-header */
1402 /* %not-for-header */
1404 /* %tables-yydmap generated elements */
1406 /* end tables serialization structures and prototypes */
1408 /* %ok-for-header */
1410 /* Default declaration of generated scanner - a define so the user can
1411 * easily add parameters.
1414 #define YY_DECL_IS_OURS 1
1415 /* %if-c-only Standard (non-C++) definition */
1417 extern int config_lex \
1418 (YYSTYPE
* yylval_param
,yyscan_t yyscanner
);
1420 #define YY_DECL int config_lex \
1421 (YYSTYPE * yylval_param , yyscan_t yyscanner)
1423 /* %if-c++-only C++ definition */
1425 #endif /* !YY_DECL */
1427 /* Code executed at the beginning of each rule, after yytext and yyleng
1430 #ifndef YY_USER_ACTION
1431 #define YY_USER_ACTION
1434 /* Code executed at the end of each rule. */
1436 #define YY_BREAK break;
1439 /* %% [6.0] YY_RULE_SETUP definition goes here */
1440 #define YY_RULE_SETUP \
1442 YY_CURRENT_BUFFER_LVALUE->yy_at_bol = \
1443 (yytext[yyleng - 1] == '\n'); \
1446 /* %not-for-header */
1448 /** The main scanner function which does all the work.
1452 register yy_state_type yy_current_state
;
1453 register char *yy_cp
, *yy_bp
;
1454 register int yy_act
;
1455 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
1457 /* %% [7.0] user's declarations go here */
1458 #line 76 "libmemcached/csl/scanner.l"
1462 #line 1463 "libmemcached/csl/scanner.cc"
1464 yylval
= yylval_param
;
1466 if ( !yyg
->yy_init
)
1474 if ( ! yyg
->yy_start
)
1475 yyg
->yy_start
= 1; /* first start state */
1491 if ( ! YY_CURRENT_BUFFER
) {
1492 config_ensure_buffer_stack (yyscanner
);
1493 YY_CURRENT_BUFFER_LVALUE
=
1494 config__create_buffer(yyin
,YY_BUF_SIZE
,yyscanner
);
1497 config__load_buffer_state(yyscanner
);
1500 while ( 1 ) /* loops until end-of-file is reached */
1502 /* %% [8.0] yymore()-related code goes here */
1503 yy_cp
= yyg
->yy_c_buf_p
;
1505 /* Support of yytext. */
1506 *yy_cp
= yyg
->yy_hold_char
;
1508 /* yy_bp points to the position in yy_ch_buf of the start of
1513 /* %% [9.0] code to set up and find next match goes here */
1514 yy_current_state
= yyg
->yy_start
;
1515 yy_current_state
+= YY_AT_BOL();
1519 register YY_CHAR yy_c
= yy_ec
[YY_SC_TO_UI(*yy_cp
)];
1520 if ( yy_accept
[yy_current_state
] )
1522 yyg
->yy_last_accepting_state
= yy_current_state
;
1523 yyg
->yy_last_accepting_cpos
= yy_cp
;
1525 while ( yy_chk
[yy_base
[yy_current_state
] + yy_c
] != yy_current_state
)
1527 yy_current_state
= (int) yy_def
[yy_current_state
];
1528 if ( yy_current_state
>= 521 )
1529 yy_c
= yy_meta
[(unsigned int) yy_c
];
1531 yy_current_state
= yy_nxt
[yy_base
[yy_current_state
] + (unsigned int) yy_c
];
1534 while ( yy_base
[yy_current_state
] != 1711 );
1537 /* %% [10.0] code to find the action number goes here */
1538 yy_act
= yy_accept
[yy_current_state
];
1540 { /* have to back up */
1541 yy_cp
= yyg
->yy_last_accepting_cpos
;
1542 yy_current_state
= yyg
->yy_last_accepting_state
;
1543 yy_act
= yy_accept
[yy_current_state
];
1546 YY_DO_BEFORE_ACTION
;
1548 /* %% [11.0] code for yylineno update goes here */
1550 do_action
: /* This label is used only to access EOF actions. */
1552 /* %% [12.0] debug code goes here */
1553 if ( yy_flex_debug
)
1556 fprintf( stderr
, "--scanner backing up\n" );
1557 else if ( yy_act
< 65 )
1558 fprintf( stderr
, "--accepting rule at line %ld (\"%s\")\n",
1559 (long)yy_rule_linenum
[yy_act
], yytext
);
1560 else if ( yy_act
== 65 )
1561 fprintf( stderr
, "--accepting default rule (\"%s\")\n",
1563 else if ( yy_act
== 66 )
1564 fprintf( stderr
, "--(end of buffer or a NUL)\n" );
1566 fprintf( stderr
, "--EOF (start condition %d)\n", YY_START
);
1570 { /* beginning of action switch */
1571 /* %% [13.0] actions go here */
1572 case 0: /* must back up */
1573 /* undo the effects of YY_DO_BEFORE_ACTION */
1574 *yy_cp
= yyg
->yy_hold_char
;
1575 yy_cp
= yyg
->yy_last_accepting_cpos
;
1576 yy_current_state
= yyg
->yy_last_accepting_state
;
1577 goto yy_find_action
;
1581 #line 79 "libmemcached/csl/scanner.l"
1582 { return yytext
[0];}
1586 #line 81 "libmemcached/csl/scanner.l"
1587 { yylval
->number
= atoi(yytext
); return (NUMBER
); }
1591 #line 83 "libmemcached/csl/scanner.l"
1592 { yylval
->number
= atoi(yytext
+1); return PORT
; }
1596 #line 85 "libmemcached/csl/scanner.l"
1597 { yylval
->number
= atoi(yytext
+2); return WEIGHT_START
; }
1600 /* rule 5 can match eol */
1602 #line 87 "libmemcached/csl/scanner.l"
1603 ; /* skip whitespace */
1606 *yy_cp
= yyg
->yy_hold_char
; /* undo effects of setting up yytext */
1607 yyg
->yy_c_buf_p
= yy_cp
-= 1;
1608 YY_DO_BEFORE_ACTION
; /* set up yytext again */
1610 #line 90 "libmemcached/csl/scanner.l"
1617 #line 94 "libmemcached/csl/scanner.l"
1618 { yyextra
->begin
= yytext
; yyextra
->set_server(); return yyextra
->previous_token
= SERVER
; }
1622 #line 96 "libmemcached/csl/scanner.l"
1623 { yyextra
->begin
= yytext
; return yyextra
->previous_token
= SOCKET
; }
1627 #line 98 "libmemcached/csl/scanner.l"
1628 { yyextra
->begin
= yytext
; return yyextra
->previous_token
= BINARY_PROTOCOL
; }
1632 #line 99 "libmemcached/csl/scanner.l"
1633 { yyextra
->begin
= yytext
; return yyextra
->previous_token
= BUFFER_REQUESTS
; }
1637 #line 100 "libmemcached/csl/scanner.l"
1638 { yyextra
->begin
= yytext
; return yyextra
->previous_token
= CONFIGURE_FILE
; }
1642 #line 101 "libmemcached/csl/scanner.l"
1643 { yyextra
->begin
= yytext
; return yyextra
->previous_token
= CONNECT_TIMEOUT
; }
1647 #line 102 "libmemcached/csl/scanner.l"
1648 { yyextra
->begin
= yytext
; return yyextra
->previous_token
= DISTRIBUTION
; }
1652 #line 103 "libmemcached/csl/scanner.l"
1653 { yyextra
->begin
= yytext
; return yyextra
->previous_token
= HASH_WITH_NAMESPACE
; }
1657 #line 104 "libmemcached/csl/scanner.l"
1658 { yyextra
->begin
= yytext
; return yyextra
->previous_token
= HASH
; }
1662 #line 105 "libmemcached/csl/scanner.l"
1663 { yyextra
->begin
= yytext
; return yyextra
->previous_token
= IO_BYTES_WATERMARK
; }
1667 #line 106 "libmemcached/csl/scanner.l"
1668 { yyextra
->begin
= yytext
; return yyextra
->previous_token
= IO_KEY_PREFETCH
; }
1672 #line 107 "libmemcached/csl/scanner.l"
1673 { yyextra
->begin
= yytext
; return yyextra
->previous_token
= IO_MSG_WATERMARK
; }
1677 #line 108 "libmemcached/csl/scanner.l"
1678 { yyextra
->begin
= yytext
; return yyextra
->previous_token
= NOREPLY
; }
1682 #line 109 "libmemcached/csl/scanner.l"
1683 { yyextra
->begin
= yytext
; return yyextra
->previous_token
= NUMBER_OF_REPLICAS
; }
1687 #line 110 "libmemcached/csl/scanner.l"
1688 { yyextra
->begin
= yytext
; return yyextra
->previous_token
= POLL_TIMEOUT
; }
1692 #line 111 "libmemcached/csl/scanner.l"
1693 { yyextra
->begin
= yytext
; return yyextra
->previous_token
= RANDOMIZE_REPLICA_READ
; }
1697 #line 112 "libmemcached/csl/scanner.l"
1698 { yyextra
->begin
= yytext
; return yyextra
->previous_token
= RCV_TIMEOUT
; }
1702 #line 113 "libmemcached/csl/scanner.l"
1703 { yyextra
->begin
= yytext
; return yyextra
->previous_token
= REMOVE_FAILED_SERVERS
; }
1707 #line 114 "libmemcached/csl/scanner.l"
1708 { yyextra
->begin
= yytext
; return yyextra
->previous_token
= RETRY_TIMEOUT
; }
1712 #line 115 "libmemcached/csl/scanner.l"
1713 { yyextra
->begin
= yytext
; return yyextra
->previous_token
= SND_TIMEOUT
; }
1717 #line 116 "libmemcached/csl/scanner.l"
1718 { yyextra
->begin
= yytext
; return yyextra
->previous_token
= SOCKET_RECV_SIZE
; }
1722 #line 117 "libmemcached/csl/scanner.l"
1723 { yyextra
->begin
= yytext
; return yyextra
->previous_token
= SOCKET_SEND_SIZE
; }
1727 #line 118 "libmemcached/csl/scanner.l"
1728 { yyextra
->begin
= yytext
; return yyextra
->previous_token
= SORT_HOSTS
; }
1732 #line 119 "libmemcached/csl/scanner.l"
1733 { yyextra
->begin
= yytext
; return yyextra
->previous_token
= SUPPORT_CAS
; }
1737 #line 120 "libmemcached/csl/scanner.l"
1738 { yyextra
->begin
= yytext
; return yyextra
->previous_token
= _TCP_KEEPALIVE
; }
1742 #line 121 "libmemcached/csl/scanner.l"
1743 { yyextra
->begin
= yytext
; return yyextra
->previous_token
= _TCP_KEEPIDLE
; }
1747 #line 122 "libmemcached/csl/scanner.l"
1748 { yyextra
->begin
= yytext
; return yyextra
->previous_token
= _TCP_NODELAY
; }
1752 #line 123 "libmemcached/csl/scanner.l"
1753 { yyextra
->begin
= yytext
; return yyextra
->previous_token
= USE_UDP
; }
1757 #line 124 "libmemcached/csl/scanner.l"
1758 { yyextra
->begin
= yytext
; return yyextra
->previous_token
= USER_DATA
; }
1762 #line 125 "libmemcached/csl/scanner.l"
1763 { yyextra
->begin
= yytext
; return yyextra
->previous_token
= VERIFY_KEY
; }
1767 #line 127 "libmemcached/csl/scanner.l"
1768 { yyextra
->begin
= yytext
; return yyextra
->previous_token
= POOL_MIN
; }
1772 #line 128 "libmemcached/csl/scanner.l"
1773 { yyextra
->begin
= yytext
; return yyextra
->previous_token
= POOL_MAX
; }
1777 #line 130 "libmemcached/csl/scanner.l"
1778 { yyextra
->begin
= yytext
; return yyextra
->previous_token
= NAMESPACE
; }
1782 #line 132 "libmemcached/csl/scanner.l"
1783 { yyextra
->begin
= yytext
; return yyextra
->previous_token
= INCLUDE
; }
1787 #line 133 "libmemcached/csl/scanner.l"
1788 { yyextra
->begin
= yytext
; return yyextra
->previous_token
= RESET
; }
1792 #line 134 "libmemcached/csl/scanner.l"
1793 { yyextra
->begin
= yytext
; return yyextra
->previous_token
= PARSER_DEBUG
; }
1797 #line 135 "libmemcached/csl/scanner.l"
1798 { yyextra
->begin
= yytext
; return yyextra
->previous_token
= SERVERS
; }
1802 #line 136 "libmemcached/csl/scanner.l"
1803 { yyextra
->begin
= yytext
; return yyextra
->previous_token
= END
; }
1807 #line 137 "libmemcached/csl/scanner.l"
1808 { yyextra
->begin
= yytext
; return yyextra
->previous_token
= ERROR
; }
1812 #line 139 "libmemcached/csl/scanner.l"
1813 { return yyextra
->previous_token
= TRUE
; }
1817 #line 140 "libmemcached/csl/scanner.l"
1818 { return yyextra
->previous_token
= FALSE
; }
1822 #line 143 "libmemcached/csl/scanner.l"
1824 yyextra
->begin
= yytext
;
1825 return UNKNOWN_OPTION
;
1830 #line 148 "libmemcached/csl/scanner.l"
1831 { return CONSISTENT
; }
1835 #line 149 "libmemcached/csl/scanner.l"
1840 #line 150 "libmemcached/csl/scanner.l"
1845 #line 152 "libmemcached/csl/scanner.l"
1850 #line 153 "libmemcached/csl/scanner.l"
1855 #line 154 "libmemcached/csl/scanner.l"
1860 #line 155 "libmemcached/csl/scanner.l"
1861 { return FNV1A_64
; }
1865 #line 156 "libmemcached/csl/scanner.l"
1870 #line 157 "libmemcached/csl/scanner.l"
1871 { return FNV1A_32
; }
1875 #line 158 "libmemcached/csl/scanner.l"
1880 #line 159 "libmemcached/csl/scanner.l"
1885 #line 160 "libmemcached/csl/scanner.l"
1890 #line 162 "libmemcached/csl/scanner.l"
1892 yylval
->server
.port
= MEMCACHED_DEFAULT_PORT
;
1893 yylval
->server
.weight
= 1;
1894 yylval
->server
.c_str
= yyextra
->set_hostname(yytext
, yyleng
);
1895 if (yylval
->server
.c_str
)
1896 yylval
->server
.size
= yyleng
;
1902 #line 171 "libmemcached/csl/scanner.l"
1904 if (yyextra
->is_server())
1906 yylval
->server
.port
= MEMCACHED_DEFAULT_PORT
;
1907 yylval
->server
.weight
= 1;
1908 yylval
->server
.c_str
= yyextra
->set_hostname(yytext
, yyleng
);
1909 if (yylval
->server
.c_str
)
1910 yylval
->server
.size
= yyleng
;
1915 yylval
->string
.c_str
= yytext
;
1916 yylval
->string
.size
= yyleng
;
1922 /* rule 63 can match eol */
1924 #line 189 "libmemcached/csl/scanner.l"
1926 config_get_text(yyscanner
)[yyleng
-1]= 0;
1927 yylval
->string
.c_str
= yytext
+1;
1928 yylval
->string
.size
= yyleng
-2;
1929 return QUOTED_STRING
;
1934 #line 196 "libmemcached/csl/scanner.l"
1936 yyextra
->begin
= yytext
;
1942 #line 201 "libmemcached/csl/scanner.l"
1945 #line 1946 "libmemcached/csl/scanner.cc"
1946 case YY_STATE_EOF(INITIAL
):
1949 case YY_END_OF_BUFFER
:
1951 /* Amount of text matched not including the EOB char. */
1952 int yy_amount_of_matched_text
= (int) (yy_cp
- yyg
->yytext_ptr
) - 1;
1954 /* Undo the effects of YY_DO_BEFORE_ACTION. */
1955 *yy_cp
= yyg
->yy_hold_char
;
1956 YY_RESTORE_YY_MORE_OFFSET
1958 if ( YY_CURRENT_BUFFER_LVALUE
->yy_buffer_status
== YY_BUFFER_NEW
)
1960 /* We're scanning a new file or input source. It's
1961 * possible that this happened because the user
1962 * just pointed yyin at a new source and called
1963 * config_lex(). If so, then we have to assure
1964 * consistency between YY_CURRENT_BUFFER and our
1965 * globals. Here is the right place to do so, because
1966 * this is the first action (other than possibly a
1967 * back-up) that will match for the new input source.
1969 yyg
->yy_n_chars
= YY_CURRENT_BUFFER_LVALUE
->yy_n_chars
;
1970 YY_CURRENT_BUFFER_LVALUE
->yy_input_file
= yyin
;
1971 YY_CURRENT_BUFFER_LVALUE
->yy_buffer_status
= YY_BUFFER_NORMAL
;
1974 /* Note that here we test for yy_c_buf_p "<=" to the position
1975 * of the first EOB in the buffer, since yy_c_buf_p will
1976 * already have been incremented past the NUL character
1977 * (since all states make transitions on EOB to the
1978 * end-of-buffer state). Contrast this with the test
1981 if ( yyg
->yy_c_buf_p
<= &YY_CURRENT_BUFFER_LVALUE
->yy_ch_buf
[yyg
->yy_n_chars
] )
1982 { /* This was really a NUL. */
1983 yy_state_type yy_next_state
;
1985 yyg
->yy_c_buf_p
= yyg
->yytext_ptr
+ yy_amount_of_matched_text
;
1987 yy_current_state
= yy_get_previous_state( yyscanner
);
1989 /* Okay, we're now positioned to make the NUL
1990 * transition. We couldn't have
1991 * yy_get_previous_state() go ahead and do it
1992 * for us because it doesn't know how to deal
1993 * with the possibility of jamming (and we don't
1994 * want to build jamming into it because then it
1995 * will run more slowly).
1998 yy_next_state
= yy_try_NUL_trans( yy_current_state
, yyscanner
);
2000 yy_bp
= yyg
->yytext_ptr
+ YY_MORE_ADJ
;
2002 if ( yy_next_state
)
2004 /* Consume the NUL. */
2005 yy_cp
= ++yyg
->yy_c_buf_p
;
2006 yy_current_state
= yy_next_state
;
2012 /* %% [14.0] code to do back-up for compressed tables and set up yy_cp goes here */
2013 yy_cp
= yyg
->yy_c_buf_p
;
2014 goto yy_find_action
;
2018 else switch ( yy_get_next_buffer( yyscanner
) )
2020 case EOB_ACT_END_OF_FILE
:
2022 yyg
->yy_did_buffer_switch_on_eof
= 0;
2024 if ( config_wrap(yyscanner
) )
2026 /* Note: because we've taken care in
2027 * yy_get_next_buffer() to have set up
2028 * yytext, we can now set up
2029 * yy_c_buf_p so that if some total
2030 * hoser (like flex itself) wants to
2031 * call the scanner after we return the
2032 * YY_NULL, it'll still work - another
2033 * YY_NULL will get returned.
2035 yyg
->yy_c_buf_p
= yyg
->yytext_ptr
+ YY_MORE_ADJ
;
2037 yy_act
= YY_STATE_EOF(YY_START
);
2043 if ( ! yyg
->yy_did_buffer_switch_on_eof
)
2049 case EOB_ACT_CONTINUE_SCAN
:
2051 yyg
->yytext_ptr
+ yy_amount_of_matched_text
;
2053 yy_current_state
= yy_get_previous_state( yyscanner
);
2055 yy_cp
= yyg
->yy_c_buf_p
;
2056 yy_bp
= yyg
->yytext_ptr
+ YY_MORE_ADJ
;
2059 case EOB_ACT_LAST_MATCH
:
2061 &YY_CURRENT_BUFFER_LVALUE
->yy_ch_buf
[yyg
->yy_n_chars
];
2063 yy_current_state
= yy_get_previous_state( yyscanner
);
2065 yy_cp
= yyg
->yy_c_buf_p
;
2066 yy_bp
= yyg
->yytext_ptr
+ YY_MORE_ADJ
;
2067 goto yy_find_action
;
2074 "fatal flex scanner internal error--no action found" );
2075 } /* end of action switch */
2076 } /* end of scanning one token */
2077 } /* end of config_lex */
2078 /* %ok-for-header */
2081 /* %not-for-header */
2083 /* %ok-for-header */
2087 /* yy_get_next_buffer - try to read in a new buffer
2089 * Returns a code representing an action:
2090 * EOB_ACT_LAST_MATCH -
2091 * EOB_ACT_CONTINUE_SCAN - continue scanning from current position
2092 * EOB_ACT_END_OF_FILE - end of file
2095 static int yy_get_next_buffer (yyscan_t yyscanner
)
2100 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
2101 register char *dest
= YY_CURRENT_BUFFER_LVALUE
->yy_ch_buf
;
2102 register char *source
= yyg
->yytext_ptr
;
2103 register int number_to_move
, i
;
2106 if ( yyg
->yy_c_buf_p
> &YY_CURRENT_BUFFER_LVALUE
->yy_ch_buf
[yyg
->yy_n_chars
+ 1] )
2108 "fatal flex scanner internal error--end of buffer missed" );
2110 if ( YY_CURRENT_BUFFER_LVALUE
->yy_fill_buffer
== 0 )
2111 { /* Don't try to fill the buffer, so this is an EOF. */
2112 if ( yyg
->yy_c_buf_p
- yyg
->yytext_ptr
- YY_MORE_ADJ
== 1 )
2114 /* We matched a single character, the EOB, so
2115 * treat this as a final EOF.
2117 return EOB_ACT_END_OF_FILE
;
2122 /* We matched some text prior to the EOB, first
2125 return EOB_ACT_LAST_MATCH
;
2129 /* Try to read more data. */
2131 /* First move last chars to start of buffer. */
2132 number_to_move
= (int) (yyg
->yy_c_buf_p
- yyg
->yytext_ptr
) - 1;
2134 for ( i
= 0; i
< number_to_move
; ++i
)
2135 *(dest
++) = *(source
++);
2137 if ( YY_CURRENT_BUFFER_LVALUE
->yy_buffer_status
== YY_BUFFER_EOF_PENDING
)
2138 /* don't do the read, it's not guaranteed to return an EOF,
2141 YY_CURRENT_BUFFER_LVALUE
->yy_n_chars
= yyg
->yy_n_chars
= 0;
2146 YY_CURRENT_BUFFER_LVALUE
->yy_buf_size
- number_to_move
- 1;
2148 while ( num_to_read
<= 0 )
2149 { /* Not enough room in the buffer - grow it. */
2151 /* just a shorter name for the current buffer */
2152 YY_BUFFER_STATE b
= YY_CURRENT_BUFFER
;
2154 int yy_c_buf_p_offset
=
2155 (int) (yyg
->yy_c_buf_p
- b
->yy_ch_buf
);
2157 if ( b
->yy_is_our_buffer
)
2159 int new_size
= b
->yy_buf_size
* 2;
2161 if ( new_size
<= 0 )
2162 b
->yy_buf_size
+= b
->yy_buf_size
/ 8;
2164 b
->yy_buf_size
*= 2;
2166 b
->yy_ch_buf
= (char *)
2167 /* Include room in for 2 EOB chars. */
2168 config_realloc((void *) b
->yy_ch_buf
,b
->yy_buf_size
+ 2 ,yyscanner
);
2171 /* Can't grow it, we don't own it. */
2174 if ( ! b
->yy_ch_buf
)
2176 "fatal error - scanner input buffer overflow" );
2178 yyg
->yy_c_buf_p
= &b
->yy_ch_buf
[yy_c_buf_p_offset
];
2180 num_to_read
= YY_CURRENT_BUFFER_LVALUE
->yy_buf_size
-
2185 if ( num_to_read
> YY_READ_BUF_SIZE
)
2186 num_to_read
= YY_READ_BUF_SIZE
;
2188 /* Read in more data. */
2189 YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE
->yy_ch_buf
[number_to_move
]),
2190 yyg
->yy_n_chars
, (size_t) num_to_read
);
2192 YY_CURRENT_BUFFER_LVALUE
->yy_n_chars
= yyg
->yy_n_chars
;
2195 if ( yyg
->yy_n_chars
== 0 )
2197 if ( number_to_move
== YY_MORE_ADJ
)
2199 ret_val
= EOB_ACT_END_OF_FILE
;
2200 config_restart(yyin
,yyscanner
);
2205 ret_val
= EOB_ACT_LAST_MATCH
;
2206 YY_CURRENT_BUFFER_LVALUE
->yy_buffer_status
=
2207 YY_BUFFER_EOF_PENDING
;
2212 ret_val
= EOB_ACT_CONTINUE_SCAN
;
2214 if ((yy_size_t
) (yyg
->yy_n_chars
+ number_to_move
) > YY_CURRENT_BUFFER_LVALUE
->yy_buf_size
) {
2215 /* Extend the array by 50%, plus the number we really need. */
2216 yy_size_t new_size
= yyg
->yy_n_chars
+ number_to_move
+ (yyg
->yy_n_chars
>> 1);
2217 YY_CURRENT_BUFFER_LVALUE
->yy_ch_buf
= (char *) config_realloc((void *) YY_CURRENT_BUFFER_LVALUE
->yy_ch_buf
,new_size
,yyscanner
);
2218 if ( ! YY_CURRENT_BUFFER_LVALUE
->yy_ch_buf
)
2219 YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" );
2222 yyg
->yy_n_chars
+= number_to_move
;
2223 YY_CURRENT_BUFFER_LVALUE
->yy_ch_buf
[yyg
->yy_n_chars
] = YY_END_OF_BUFFER_CHAR
;
2224 YY_CURRENT_BUFFER_LVALUE
->yy_ch_buf
[yyg
->yy_n_chars
+ 1] = YY_END_OF_BUFFER_CHAR
;
2226 yyg
->yytext_ptr
= &YY_CURRENT_BUFFER_LVALUE
->yy_ch_buf
[0];
2231 /* yy_get_previous_state - get the state just before the EOB char was reached */
2234 /* %not-for-header */
2236 static yy_state_type
yy_get_previous_state (yyscan_t yyscanner
)
2241 register yy_state_type yy_current_state
;
2242 register char *yy_cp
;
2243 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
2245 /* %% [15.0] code to get the start state into yy_current_state goes here */
2246 yy_current_state
= yyg
->yy_start
;
2247 yy_current_state
+= YY_AT_BOL();
2249 for ( yy_cp
= yyg
->yytext_ptr
+ YY_MORE_ADJ
; yy_cp
< yyg
->yy_c_buf_p
; ++yy_cp
)
2251 /* %% [16.0] code to find the next state goes here */
2252 register YY_CHAR yy_c
= (*yy_cp
? yy_ec
[YY_SC_TO_UI(*yy_cp
)] : 1);
2253 if ( yy_accept
[yy_current_state
] )
2255 yyg
->yy_last_accepting_state
= yy_current_state
;
2256 yyg
->yy_last_accepting_cpos
= yy_cp
;
2258 while ( yy_chk
[yy_base
[yy_current_state
] + yy_c
] != yy_current_state
)
2260 yy_current_state
= (int) yy_def
[yy_current_state
];
2261 if ( yy_current_state
>= 521 )
2262 yy_c
= yy_meta
[(unsigned int) yy_c
];
2264 yy_current_state
= yy_nxt
[yy_base
[yy_current_state
] + (unsigned int) yy_c
];
2267 return yy_current_state
;
2270 /* yy_try_NUL_trans - try to make a transition on the NUL character
2273 * next_state = yy_try_NUL_trans( current_state );
2276 static yy_state_type
yy_try_NUL_trans (yy_state_type yy_current_state
, yyscan_t yyscanner
)
2281 register int yy_is_jam
;
2282 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
; /* This var may be unused depending upon options. */
2283 /* %% [17.0] code to find the next state, and perhaps do backing up, goes here */
2284 register char *yy_cp
= yyg
->yy_c_buf_p
;
2286 register YY_CHAR yy_c
= 1;
2287 if ( yy_accept
[yy_current_state
] )
2289 yyg
->yy_last_accepting_state
= yy_current_state
;
2290 yyg
->yy_last_accepting_cpos
= yy_cp
;
2292 while ( yy_chk
[yy_base
[yy_current_state
] + yy_c
] != yy_current_state
)
2294 yy_current_state
= (int) yy_def
[yy_current_state
];
2295 if ( yy_current_state
>= 521 )
2296 yy_c
= yy_meta
[(unsigned int) yy_c
];
2298 yy_current_state
= yy_nxt
[yy_base
[yy_current_state
] + (unsigned int) yy_c
];
2299 yy_is_jam
= (yy_current_state
== 520);
2301 return yy_is_jam
? 0 : yy_current_state
;
2311 static int yyinput (yyscan_t yyscanner
)
2313 static int input (yyscan_t yyscanner
)
2321 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
2323 *yyg
->yy_c_buf_p
= yyg
->yy_hold_char
;
2325 if ( *yyg
->yy_c_buf_p
== YY_END_OF_BUFFER_CHAR
)
2327 /* yy_c_buf_p now points to the character we want to return.
2328 * If this occurs *before* the EOB characters, then it's a
2329 * valid NUL; if not, then we've hit the end of the buffer.
2331 if ( yyg
->yy_c_buf_p
< &YY_CURRENT_BUFFER_LVALUE
->yy_ch_buf
[yyg
->yy_n_chars
] )
2332 /* This was really a NUL. */
2333 *yyg
->yy_c_buf_p
= '\0';
2336 { /* need more input */
2337 int offset
= yyg
->yy_c_buf_p
- yyg
->yytext_ptr
;
2340 switch ( yy_get_next_buffer( yyscanner
) )
2342 case EOB_ACT_LAST_MATCH
:
2343 /* This happens because yy_g_n_b()
2344 * sees that we've accumulated a
2345 * token and flags that we need to
2346 * try matching the token before
2347 * proceeding. But for input(),
2348 * there's no matching to consider.
2349 * So convert the EOB_ACT_LAST_MATCH
2350 * to EOB_ACT_END_OF_FILE.
2353 /* Reset buffer status. */
2354 config_restart(yyin
,yyscanner
);
2358 case EOB_ACT_END_OF_FILE
:
2360 if ( config_wrap(yyscanner
) )
2363 if ( ! yyg
->yy_did_buffer_switch_on_eof
)
2366 return yyinput(yyscanner
);
2368 return input(yyscanner
);
2372 case EOB_ACT_CONTINUE_SCAN
:
2373 yyg
->yy_c_buf_p
= yyg
->yytext_ptr
+ offset
;
2379 c
= *(unsigned char *) yyg
->yy_c_buf_p
; /* cast for 8-bit char's */
2380 *yyg
->yy_c_buf_p
= '\0'; /* preserve yytext */
2381 yyg
->yy_hold_char
= *++yyg
->yy_c_buf_p
;
2383 /* %% [19.0] update BOL and yylineno */
2384 YY_CURRENT_BUFFER_LVALUE
->yy_at_bol
= (c
== '\n');
2389 #endif /* ifndef YY_NO_INPUT */
2392 /** Immediately switch to a different input stream.
2393 * @param input_file A readable stream.
2394 * @param yyscanner The scanner object.
2395 * @note This function does not reset the start condition to @c INITIAL .
2398 void config_restart (FILE * input_file
, yyscan_t yyscanner
)
2403 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
2405 if ( ! YY_CURRENT_BUFFER
){
2406 config_ensure_buffer_stack (yyscanner
);
2407 YY_CURRENT_BUFFER_LVALUE
=
2408 config__create_buffer(yyin
,YY_BUF_SIZE
,yyscanner
);
2411 config__init_buffer(YY_CURRENT_BUFFER
,input_file
,yyscanner
);
2412 config__load_buffer_state(yyscanner
);
2415 /** Switch to a different input buffer.
2416 * @param new_buffer The new input buffer.
2417 * @param yyscanner The scanner object.
2420 void config__switch_to_buffer (YY_BUFFER_STATE new_buffer
, yyscan_t yyscanner
)
2425 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
2427 /* TODO. We should be able to replace this entire function body
2429 * config_pop_buffer_state();
2430 * config_push_buffer_state(new_buffer);
2432 config_ensure_buffer_stack (yyscanner
);
2433 if ( YY_CURRENT_BUFFER
== new_buffer
)
2436 if ( YY_CURRENT_BUFFER
)
2438 /* Flush out information for old buffer. */
2439 *yyg
->yy_c_buf_p
= yyg
->yy_hold_char
;
2440 YY_CURRENT_BUFFER_LVALUE
->yy_buf_pos
= yyg
->yy_c_buf_p
;
2441 YY_CURRENT_BUFFER_LVALUE
->yy_n_chars
= yyg
->yy_n_chars
;
2444 YY_CURRENT_BUFFER_LVALUE
= new_buffer
;
2445 config__load_buffer_state(yyscanner
);
2447 /* We don't actually know whether we did this switch during
2448 * EOF (config_wrap()) processing, but the only time this flag
2449 * is looked at is after config_wrap() is called, so it's safe
2450 * to go ahead and always set it.
2452 yyg
->yy_did_buffer_switch_on_eof
= 1;
2456 static void config__load_buffer_state (yyscan_t yyscanner
)
2461 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
2462 yyg
->yy_n_chars
= YY_CURRENT_BUFFER_LVALUE
->yy_n_chars
;
2463 yyg
->yytext_ptr
= yyg
->yy_c_buf_p
= YY_CURRENT_BUFFER_LVALUE
->yy_buf_pos
;
2464 yyin
= YY_CURRENT_BUFFER_LVALUE
->yy_input_file
;
2465 yyg
->yy_hold_char
= *yyg
->yy_c_buf_p
;
2468 /** Allocate and initialize an input buffer state.
2469 * @param file A readable stream.
2470 * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE.
2471 * @param yyscanner The scanner object.
2472 * @return the allocated buffer state.
2475 YY_BUFFER_STATE
config__create_buffer (FILE * file
, int size
, yyscan_t yyscanner
)
2482 b
= (YY_BUFFER_STATE
) config_alloc(sizeof( struct yy_buffer_state
) ,yyscanner
);
2484 YY_FATAL_ERROR( "out of dynamic memory in config__create_buffer()" );
2486 b
->yy_buf_size
= size
;
2488 /* yy_ch_buf has to be 2 characters longer than the size given because
2489 * we need to put in 2 end-of-buffer characters.
2491 b
->yy_ch_buf
= (char *) config_alloc(b
->yy_buf_size
+ 2 ,yyscanner
);
2492 if ( ! b
->yy_ch_buf
)
2493 YY_FATAL_ERROR( "out of dynamic memory in config__create_buffer()" );
2495 b
->yy_is_our_buffer
= 1;
2497 config__init_buffer(b
,file
,yyscanner
);
2502 /** Destroy the buffer.
2503 * @param b a buffer created with config__create_buffer()
2504 * @param yyscanner The scanner object.
2507 void config__delete_buffer (YY_BUFFER_STATE b
, yyscan_t yyscanner
)
2512 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
2517 if ( b
== YY_CURRENT_BUFFER
) /* Not sure if we should pop here. */
2518 YY_CURRENT_BUFFER_LVALUE
= (YY_BUFFER_STATE
) 0;
2520 if ( b
->yy_is_our_buffer
)
2521 config_free((void *) b
->yy_ch_buf
,yyscanner
);
2523 config_free((void *) b
,yyscanner
);
2529 extern int isatty (int );
2530 #endif /* __cplusplus */
2537 /* Initializes or reinitializes a buffer.
2538 * This function is sometimes called more than once on the same buffer,
2539 * such as during a config_restart() or at EOF.
2542 static void config__init_buffer (YY_BUFFER_STATE b
, FILE * file
, yyscan_t yyscanner
)
2549 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
2551 config__flush_buffer(b
,yyscanner
);
2553 b
->yy_input_file
= file
;
2554 b
->yy_fill_buffer
= 1;
2556 /* If b is the current buffer, then config__init_buffer was _probably_
2557 * called from config_restart() or through yy_get_next_buffer.
2558 * In that case, we don't want to reset the lineno or column.
2560 if (b
!= YY_CURRENT_BUFFER
){
2561 b
->yy_bs_lineno
= 1;
2562 b
->yy_bs_column
= 0;
2567 b
->yy_is_interactive
= file
? (isatty( fileno(file
) ) > 0) : 0;
2575 /** Discard all buffered characters. On the next scan, YY_INPUT will be called.
2576 * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER.
2577 * @param yyscanner The scanner object.
2580 void config__flush_buffer (YY_BUFFER_STATE b
, yyscan_t yyscanner
)
2585 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
2591 /* We always need two end-of-buffer characters. The first causes
2592 * a transition to the end-of-buffer state. The second causes
2593 * a jam in that state.
2595 b
->yy_ch_buf
[0] = YY_END_OF_BUFFER_CHAR
;
2596 b
->yy_ch_buf
[1] = YY_END_OF_BUFFER_CHAR
;
2598 b
->yy_buf_pos
= &b
->yy_ch_buf
[0];
2601 b
->yy_buffer_status
= YY_BUFFER_NEW
;
2603 if ( b
== YY_CURRENT_BUFFER
)
2604 config__load_buffer_state(yyscanner
);
2608 /** Pushes the new state onto the stack. The new state becomes
2609 * the current state. This function will allocate the stack
2611 * @param new_buffer The new state.
2612 * @param yyscanner The scanner object.
2615 void config_push_buffer_state (YY_BUFFER_STATE new_buffer
, yyscan_t yyscanner
)
2620 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
2621 if (new_buffer
== NULL
)
2624 config_ensure_buffer_stack(yyscanner
);
2626 /* This block is copied from config__switch_to_buffer. */
2627 if ( YY_CURRENT_BUFFER
)
2629 /* Flush out information for old buffer. */
2630 *yyg
->yy_c_buf_p
= yyg
->yy_hold_char
;
2631 YY_CURRENT_BUFFER_LVALUE
->yy_buf_pos
= yyg
->yy_c_buf_p
;
2632 YY_CURRENT_BUFFER_LVALUE
->yy_n_chars
= yyg
->yy_n_chars
;
2635 /* Only push if top exists. Otherwise, replace top. */
2636 if (YY_CURRENT_BUFFER
)
2637 yyg
->yy_buffer_stack_top
++;
2638 YY_CURRENT_BUFFER_LVALUE
= new_buffer
;
2640 /* copied from config__switch_to_buffer. */
2641 config__load_buffer_state(yyscanner
);
2642 yyg
->yy_did_buffer_switch_on_eof
= 1;
2647 /** Removes and deletes the top of the stack, if present.
2648 * The next element becomes the new top.
2649 * @param yyscanner The scanner object.
2652 void config_pop_buffer_state (yyscan_t yyscanner
)
2657 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
2658 if (!YY_CURRENT_BUFFER
)
2661 config__delete_buffer(YY_CURRENT_BUFFER
,yyscanner
);
2662 YY_CURRENT_BUFFER_LVALUE
= NULL
;
2663 if (yyg
->yy_buffer_stack_top
> 0)
2664 --yyg
->yy_buffer_stack_top
;
2666 if (YY_CURRENT_BUFFER
) {
2667 config__load_buffer_state(yyscanner
);
2668 yyg
->yy_did_buffer_switch_on_eof
= 1;
2674 /* Allocates the stack if it does not exist.
2675 * Guarantees space for at least one push.
2678 static void config_ensure_buffer_stack (yyscan_t yyscanner
)
2684 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
2686 if (!yyg
->yy_buffer_stack
) {
2688 /* First allocation is just for 2 elements, since we don't know if this
2689 * scanner will even need a stack. We use 2 instead of 1 to avoid an
2690 * immediate realloc on the next call.
2693 yyg
->yy_buffer_stack
= (struct yy_buffer_state
**)config_alloc
2694 (num_to_alloc
* sizeof(struct yy_buffer_state
*)
2696 if ( ! yyg
->yy_buffer_stack
)
2697 YY_FATAL_ERROR( "out of dynamic memory in config_ensure_buffer_stack()" );
2699 memset(yyg
->yy_buffer_stack
, 0, num_to_alloc
* sizeof(struct yy_buffer_state
*));
2701 yyg
->yy_buffer_stack_max
= num_to_alloc
;
2702 yyg
->yy_buffer_stack_top
= 0;
2706 if (yyg
->yy_buffer_stack_top
>= (yyg
->yy_buffer_stack_max
) - 1){
2708 /* Increase the buffer to prepare for a possible push. */
2709 int grow_size
= 8 /* arbitrary grow size */;
2711 num_to_alloc
= yyg
->yy_buffer_stack_max
+ grow_size
;
2712 yyg
->yy_buffer_stack
= (struct yy_buffer_state
**)config_realloc
2713 (yyg
->yy_buffer_stack
,
2714 num_to_alloc
* sizeof(struct yy_buffer_state
*)
2716 if ( ! yyg
->yy_buffer_stack
)
2717 YY_FATAL_ERROR( "out of dynamic memory in config_ensure_buffer_stack()" );
2719 /* zero only the new slots.*/
2720 memset(yyg
->yy_buffer_stack
+ yyg
->yy_buffer_stack_max
, 0, grow_size
* sizeof(struct yy_buffer_state
*));
2721 yyg
->yy_buffer_stack_max
= num_to_alloc
;
2727 /** Setup the input buffer state to scan directly from a user-specified character buffer.
2728 * @param base the character buffer
2729 * @param size the size in bytes of the character buffer
2730 * @param yyscanner The scanner object.
2731 * @return the newly allocated buffer state object.
2733 YY_BUFFER_STATE
config__scan_buffer (char * base
, yy_size_t size
, yyscan_t yyscanner
)
2738 base
[size
-2] != YY_END_OF_BUFFER_CHAR
||
2739 base
[size
-1] != YY_END_OF_BUFFER_CHAR
)
2740 /* They forgot to leave room for the EOB's. */
2743 b
= (YY_BUFFER_STATE
) config_alloc(sizeof( struct yy_buffer_state
) ,yyscanner
);
2745 YY_FATAL_ERROR( "out of dynamic memory in config__scan_buffer()" );
2747 b
->yy_buf_size
= size
- 2; /* "- 2" to take care of EOB's */
2748 b
->yy_buf_pos
= b
->yy_ch_buf
= base
;
2749 b
->yy_is_our_buffer
= 0;
2750 b
->yy_input_file
= 0;
2751 b
->yy_n_chars
= b
->yy_buf_size
;
2752 b
->yy_is_interactive
= 0;
2754 b
->yy_fill_buffer
= 0;
2755 b
->yy_buffer_status
= YY_BUFFER_NEW
;
2757 config__switch_to_buffer(b
,yyscanner
);
2764 /** Setup the input buffer state to scan a string. The next call to config_lex() will
2765 * scan from a @e copy of @a str.
2766 * @param yystr a NUL-terminated string to scan
2767 * @param yyscanner The scanner object.
2768 * @return the newly allocated buffer state object.
2769 * @note If you want to scan bytes that may contain NUL values, then use
2770 * config__scan_bytes() instead.
2772 YY_BUFFER_STATE
config__scan_string (yyconst
char * yystr
, yyscan_t yyscanner
)
2775 return config__scan_bytes(yystr
,strlen(yystr
) ,yyscanner
);
2780 /** Setup the input buffer state to scan the given bytes. The next call to config_lex() will
2781 * scan from a @e copy of @a bytes.
2782 * @param bytes the byte buffer to scan
2783 * @param len the number of bytes in the buffer pointed to by @a bytes.
2784 * @param yyscanner The scanner object.
2785 * @return the newly allocated buffer state object.
2787 YY_BUFFER_STATE
config__scan_bytes (yyconst
char * yybytes
, int _yybytes_len
, yyscan_t yyscanner
)
2794 /* Get memory for full buffer, including space for trailing EOB's. */
2795 n
= _yybytes_len
+ 2;
2796 buf
= (char *) config_alloc(n
,yyscanner
);
2798 YY_FATAL_ERROR( "out of dynamic memory in config__scan_bytes()" );
2800 for ( i
= 0; i
< _yybytes_len
; ++i
)
2801 buf
[i
] = yybytes
[i
];
2803 buf
[_yybytes_len
] = buf
[_yybytes_len
+1] = YY_END_OF_BUFFER_CHAR
;
2805 b
= config__scan_buffer(buf
,n
,yyscanner
);
2807 YY_FATAL_ERROR( "bad buffer in config__scan_bytes()" );
2809 /* It's okay to grow etc. this buffer, and we should throw it
2810 * away when we're done.
2812 b
->yy_is_our_buffer
= 1;
2818 #ifndef YY_EXIT_FAILURE
2819 #define YY_EXIT_FAILURE 2
2823 static void yy_fatal_error (yyconst
char* msg
, yyscan_t yyscanner
)
2825 (void) fprintf( stderr
, "%s\n", msg
);
2826 exit( YY_EXIT_FAILURE
);
2832 /* Redefine yyless() so it works in section 3 code. */
2838 /* Undo effects of setting up yytext. */ \
2839 int yyless_macro_arg = (n); \
2840 YY_LESS_LINENO(yyless_macro_arg);\
2841 yytext[yyleng] = yyg->yy_hold_char; \
2842 yyg->yy_c_buf_p = yytext + yyless_macro_arg; \
2843 yyg->yy_hold_char = *yyg->yy_c_buf_p; \
2844 *yyg->yy_c_buf_p = '\0'; \
2845 yyleng = yyless_macro_arg; \
2849 /* Accessor methods (get/set functions) to struct members. */
2854 /** Get the user-defined data for this scanner.
2855 * @param yyscanner The scanner object.
2857 YY_EXTRA_TYPE
config_get_extra (yyscan_t yyscanner
)
2859 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
2865 /** Get the current line number.
2866 * @param yyscanner The scanner object.
2868 int config_get_lineno (yyscan_t yyscanner
)
2870 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
2872 if (! YY_CURRENT_BUFFER
)
2878 /** Get the current column number.
2879 * @param yyscanner The scanner object.
2881 int config_get_column (yyscan_t yyscanner
)
2883 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
2885 if (! YY_CURRENT_BUFFER
)
2891 /** Get the input stream.
2892 * @param yyscanner The scanner object.
2894 FILE *config_get_in (yyscan_t yyscanner
)
2896 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
2900 /** Get the output stream.
2901 * @param yyscanner The scanner object.
2903 FILE *config_get_out (yyscan_t yyscanner
)
2905 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
2909 /** Get the length of the current token.
2910 * @param yyscanner The scanner object.
2912 int config_get_leng (yyscan_t yyscanner
)
2914 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
2918 /** Get the current token.
2919 * @param yyscanner The scanner object.
2922 char *config_get_text (yyscan_t yyscanner
)
2924 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
2930 /** Set the user-defined data. This data is never touched by the scanner.
2931 * @param user_defined The data to be associated with this scanner.
2932 * @param yyscanner The scanner object.
2934 void config_set_extra (YY_EXTRA_TYPE user_defined
, yyscan_t yyscanner
)
2936 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
2937 yyextra
= user_defined
;
2942 /** Set the current line number.
2943 * @param line_number
2944 * @param yyscanner The scanner object.
2946 void config_set_lineno (int line_number
, yyscan_t yyscanner
)
2948 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
2950 /* lineno is only valid if an input buffer exists. */
2951 if (! YY_CURRENT_BUFFER
)
2952 yy_fatal_error( "config_set_lineno called with no buffer" , yyscanner
);
2954 yylineno
= line_number
;
2957 /** Set the current column.
2958 * @param line_number
2959 * @param yyscanner The scanner object.
2961 void config_set_column (int column_no
, yyscan_t yyscanner
)
2963 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
2965 /* column is only valid if an input buffer exists. */
2966 if (! YY_CURRENT_BUFFER
)
2967 yy_fatal_error( "config_set_column called with no buffer" , yyscanner
);
2969 yycolumn
= column_no
;
2972 /** Set the input stream. This does not discard the current
2974 * @param in_str A readable stream.
2975 * @param yyscanner The scanner object.
2976 * @see config__switch_to_buffer
2978 void config_set_in (FILE * in_str
, yyscan_t yyscanner
)
2980 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
2984 void config_set_out (FILE * out_str
, yyscan_t yyscanner
)
2986 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
2990 int config_get_debug (yyscan_t yyscanner
)
2992 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
2993 return yy_flex_debug
;
2996 void config_set_debug (int bdebug
, yyscan_t yyscanner
)
2998 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
2999 yy_flex_debug
= bdebug
;
3005 /* Accessor methods for yylval and yylloc */
3007 /* %if-bison-bridge */
3009 YYSTYPE
* config_get_lval (yyscan_t yyscanner
)
3011 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
3015 void config_set_lval (YYSTYPE
* yylval_param
, yyscan_t yyscanner
)
3017 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
3018 yylval
= yylval_param
;
3023 /* User-visible API */
3025 /* config_lex_init is special because it creates the scanner itself, so it is
3026 * the ONLY reentrant function that doesn't take the scanner as the last argument.
3027 * That's why we explicitly handle the declaration, instead of using our macros.
3030 int config_lex_init(yyscan_t
* ptr_yy_globals
)
3033 if (ptr_yy_globals
== NULL
){
3038 *ptr_yy_globals
= (yyscan_t
) config_alloc ( sizeof( struct yyguts_t
), NULL
);
3040 if (*ptr_yy_globals
== NULL
){
3045 /* By setting to 0xAA, we expose bugs in yy_init_globals. Leave at 0x00 for releases. */
3046 memset(*ptr_yy_globals
,0x00,sizeof(struct yyguts_t
));
3048 return yy_init_globals ( *ptr_yy_globals
);
3051 /* config_lex_init_extra has the same functionality as config_lex_init, but follows the
3052 * convention of taking the scanner as the last argument. Note however, that
3053 * this is a *pointer* to a scanner, as it will be allocated by this call (and
3054 * is the reason, too, why this function also must handle its own declaration).
3055 * The user defined value in the first argument will be available to config_alloc in
3056 * the yyextra field.
3059 int config_lex_init_extra(YY_EXTRA_TYPE yy_user_defined
,yyscan_t
* ptr_yy_globals
)
3062 struct yyguts_t dummy_yyguts
;
3064 config_set_extra (yy_user_defined
, &dummy_yyguts
);
3066 if (ptr_yy_globals
== NULL
){
3071 *ptr_yy_globals
= (yyscan_t
) config_alloc ( sizeof( struct yyguts_t
), &dummy_yyguts
);
3073 if (*ptr_yy_globals
== NULL
){
3078 /* By setting to 0xAA, we expose bugs in
3079 yy_init_globals. Leave at 0x00 for releases. */
3080 memset(*ptr_yy_globals
,0x00,sizeof(struct yyguts_t
));
3082 config_set_extra (yy_user_defined
, *ptr_yy_globals
);
3084 return yy_init_globals ( *ptr_yy_globals
);
3087 /* %endif if-c-only */
3090 static int yy_init_globals (yyscan_t yyscanner
)
3092 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
3093 /* Initialization is the same as for the non-reentrant scanner.
3094 * This function is called from config_lex_destroy(), so don't allocate here.
3097 yyg
->yy_buffer_stack
= 0;
3098 yyg
->yy_buffer_stack_top
= 0;
3099 yyg
->yy_buffer_stack_max
= 0;
3100 yyg
->yy_c_buf_p
= (char *) 0;
3104 yyg
->yy_start_stack_ptr
= 0;
3105 yyg
->yy_start_stack_depth
= 0;
3106 yyg
->yy_start_stack
= NULL
;
3108 /* Defined in main.c */
3117 /* For future reference: Set errno on error, since we are called by
3124 /* %if-c-only SNIP! this currently causes conflicts with the c++ scanner */
3125 /* config_lex_destroy is for both reentrant and non-reentrant scanners. */
3126 int config_lex_destroy (yyscan_t yyscanner
)
3128 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
3130 /* Pop the buffer stack, destroying each element. */
3131 while(YY_CURRENT_BUFFER
){
3132 config__delete_buffer(YY_CURRENT_BUFFER
,yyscanner
);
3133 YY_CURRENT_BUFFER_LVALUE
= NULL
;
3134 config_pop_buffer_state(yyscanner
);
3137 /* Destroy the stack itself. */
3138 config_free(yyg
->yy_buffer_stack
,yyscanner
);
3139 yyg
->yy_buffer_stack
= NULL
;
3141 /* Destroy the start condition stack. */
3142 config_free(yyg
->yy_start_stack
,yyscanner
);
3143 yyg
->yy_start_stack
= NULL
;
3145 /* Reset the globals. This is important in a non-reentrant scanner so the next time
3146 * config_lex() is called, initialization will occur. */
3147 yy_init_globals( yyscanner
);
3150 /* Destroy the main struct (reentrant only). */
3151 config_free ( yyscanner
, yyscanner
);
3159 * Internal utility routines.
3163 static void yy_flex_strncpy (char* s1
, yyconst
char * s2
, int n
, yyscan_t yyscanner
)
3166 for ( i
= 0; i
< n
; ++i
)
3171 #ifdef YY_NEED_STRLEN
3172 static int yy_flex_strlen (yyconst
char * s
, yyscan_t yyscanner
)
3175 for ( n
= 0; s
[n
]; ++n
)
3182 void *config_alloc (yy_size_t size
, yyscan_t yyscanner
)
3184 return (void *) malloc( size
);
3187 void *config_realloc (void * ptr
, yy_size_t size
, yyscan_t yyscanner
)
3189 /* The cast to (char *) in the following accommodates both
3190 * implementations that use char* generic pointers, and those
3191 * that use void* generic pointers. It works with the latter
3192 * because both ANSI C and C++ allow castless assignment from
3193 * any pointer type to void*, and deal with argument conversions
3194 * as though doing an assignment.
3196 return (void *) realloc( (char *) ptr
, size
);
3199 void config_free (void * ptr
, yyscan_t yyscanner
)
3201 free( (char *) ptr
); /* see config_realloc() for (char *) cast */
3204 /* %if-tables-serialization definitions */
3205 /* %define-yytables The name for this specific scanner's tables. */
3206 #define YYTABLES_NAME "yytables"
3209 /* %ok-for-header */
3211 #line 201 "libmemcached/csl/scanner.l"
3215 void Context::init_scanner()
3217 config_lex_init(&scanner
);
3218 config_set_extra(this,scanner
);
3221 void Context::destroy_scanner()
3223 config_lex_destroy(scanner
);