1 #line 2 "libmemcached/options/scanner.cc"
2 #line 22 "libmemcached/options/scanner.l"
4 #pragma GCC diagnostic ignored "-Wold-style-cast"
5 #pragma GCC diagnostic ignored "-Wsign-compare"
6 #pragma GCC diagnostic ignored "-Wunused-parameter"
8 #include <libmemcached/options/context.h>
9 #include <libmemcached/options/parser.h>
10 #include <libmemcached/options/string.h>
11 #include <libmemcached/options/symbol.h>
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 90
453 #define YY_END_OF_BUFFER 91
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
[769] =
463 0, 0, 91, 89, 5, 5, 1, 89, 89, 89,
464 2, 89, 89, 89, 89, 89, 89, 89, 89, 89,
465 89, 89, 89, 89, 89, 0, 88, 73, 0, 0,
466 0, 2, 3, 0, 0, 0, 0, 0, 0, 0,
467 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
468 0, 6, 73, 73, 73, 73, 73, 73, 73, 73,
469 73, 73, 73, 73, 73, 73, 4, 87, 87, 2,
470 3, 87, 78, 87, 69, 87, 87, 87, 87, 87,
471 87, 77, 87, 87, 87, 87, 87, 87, 73, 73,
472 73, 73, 73, 73, 73, 73, 73, 73, 73, 73,
474 73, 73, 73, 73, 73, 73, 73, 73, 73, 4,
475 0, 87, 2, 3, 87, 87, 87, 87, 87, 87,
476 87, 87, 87, 87, 87, 87, 87, 71, 73, 73,
477 73, 73, 73, 73, 0, 0, 73, 73, 73, 73,
478 73, 73, 73, 73, 73, 73, 73, 73, 73, 73,
479 73, 4, 87, 87, 3, 87, 67, 70, 72, 87,
480 0, 83, 87, 87, 87, 87, 87, 66, 87, 73,
481 73, 73, 73, 73, 73, 73, 0, 0, 0, 0,
482 0, 0, 73, 73, 73, 73, 73, 0, 0, 73,
483 73, 0, 0, 73, 73, 73, 0, 0, 0, 73,
485 0, 73, 4, 0, 87, 3, 87, 0, 87, 87,
486 87, 87, 75, 84, 76, 87, 0, 0, 73, 73,
487 73, 73, 73, 0, 21, 0, 0, 0, 0, 0,
488 0, 0, 73, 73, 0, 0, 73, 73, 0, 0,
489 73, 73, 0, 0, 73, 0, 0, 73, 0, 0,
490 0, 0, 0, 0, 0, 0, 73, 4, 86, 87,
491 87, 87, 87, 81, 79, 65, 85, 68, 0, 0,
492 73, 73, 73, 73, 73, 0, 0, 0, 0, 0,
493 0, 0, 0, 73, 73, 0, 0, 73, 73, 0,
494 0, 0, 0, 73, 0, 0, 73, 0, 0, 73,
496 0, 0, 0, 0, 0, 0, 0, 0, 73, 86,
497 87, 82, 80, 0, 0, 0, 0, 0, 0, 73,
498 73, 73, 0, 0, 0, 0, 0, 0, 0, 0,
499 30, 0, 0, 0, 0, 0, 0, 73, 0, 0,
500 0, 0, 0, 7, 0, 0, 0, 0, 0, 0,
501 0, 73, 0, 0, 0, 0, 62, 0, 0, 61,
502 0, 0, 86, 87, 0, 0, 0, 0, 0, 0,
503 73, 0, 0, 73, 0, 0, 0, 0, 0, 0,
504 0, 0, 0, 0, 0, 0, 0, 0, 73, 0,
505 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
507 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
508 0, 0, 0, 74, 0, 0, 0, 0, 0, 0,
509 73, 0, 0, 73, 0, 0, 0, 0, 0, 0,
510 0, 0, 0, 0, 0, 0, 0, 0, 73, 0,
511 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
512 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
513 0, 60, 59, 0, 0, 0, 0, 0, 0, 0,
514 0, 0, 0, 0, 0, 73, 0, 0, 0, 0,
515 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
516 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
518 0, 0, 0, 0, 50, 49, 0, 0, 0, 0,
519 0, 0, 0, 0, 9, 8, 0, 0, 0, 0,
520 0, 0, 0, 0, 0, 0, 73, 0, 0, 0,
521 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,
522 64, 0, 0, 0, 0, 0, 0, 0, 0, 0,
523 0, 0, 0, 0, 0, 52, 51, 0, 0, 54,
524 0, 0, 53, 0, 0, 0, 0, 0, 0, 0,
525 0, 0, 0, 73, 0, 0, 0, 0, 0, 0,
526 0, 0, 0, 0, 0, 0, 0, 0, 38, 37,
527 0, 0, 0, 0, 44, 43, 0, 0, 0, 0,
529 0, 58, 0, 57, 0, 0, 0, 0, 0, 0,
530 0, 0, 0, 0, 20, 0, 0, 0, 0, 0,
531 0, 0, 0, 0, 0, 34, 33, 0, 0, 0,
532 0, 0, 0, 0, 0, 0, 0, 56, 55, 0,
533 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
534 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
535 0, 40, 39, 0, 0, 0, 0, 0, 0, 0,
536 0, 13, 12, 15, 14, 17, 16, 0, 0, 0,
537 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
538 0, 0, 0, 0, 0, 0, 0, 11, 10, 19,
540 18, 0, 0, 0, 27, 0, 0, 26, 0, 0,
541 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
542 0, 0, 29, 0, 28, 0, 0, 0, 0, 0,
543 0, 46, 48, 45, 47, 0, 0, 0, 0, 0,
544 0, 0, 0, 0, 0, 0, 0, 25, 24, 32,
545 31, 0, 0, 0, 0, 23, 22, 0, 0, 0,
546 0, 0, 0, 42, 41, 36, 35, 0
549 static yyconst flex_int32_t yy_ec
[256] =
551 1, 1, 1, 1, 1, 1, 1, 1, 2, 3,
552 1, 1, 2, 1, 1, 1, 1, 1, 1, 1,
553 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
554 1, 4, 1, 5, 6, 1, 1, 1, 1, 1,
555 1, 1, 1, 7, 8, 9, 10, 11, 12, 13,
556 14, 15, 16, 17, 11, 11, 11, 18, 1, 1,
557 19, 1, 20, 1, 21, 22, 23, 24, 25, 26,
558 27, 28, 29, 30, 31, 32, 33, 34, 35, 36,
559 37, 38, 39, 40, 41, 42, 43, 44, 45, 46,
560 1, 1, 1, 1, 47, 1, 48, 49, 50, 51,
562 52, 53, 54, 55, 56, 57, 58, 59, 60, 61,
563 62, 63, 64, 65, 66, 67, 68, 69, 70, 71,
564 72, 73, 1, 1, 1, 1, 1, 1, 1, 1,
565 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
566 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
567 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
568 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
569 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
570 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
571 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
573 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
574 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
575 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
576 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
577 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
581 static yyconst flex_int32_t yy_meta
[74] =
583 1, 1, 2, 1, 3, 1, 1, 3, 3, 1,
584 3, 3, 3, 3, 3, 3, 3, 1, 1, 1,
585 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
586 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
587 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
588 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
589 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
593 static yyconst flex_int16_t yy_base
[773] =
595 0, 798, 802, 2094, 2094, 2094, 2094, 778, 760, 726,
596 65, 72, 0, 55, 50, 57, 71, 55, 62, 72,
597 74, 78, 75, 63, 733, 716, 701, 132, 195, 103,
598 208, 251, 215, 235, 228, 230, 237, 245, 265, 281,
599 286, 294, 296, 311, 313, 327, 343, 354, 361, 370,
600 702, 2094, 418, 63, 305, 71, 78, 89, 78, 246,
601 291, 362, 361, 91, 113, 189, 419, 398, 483, 526,
602 490, 416, 467, 503, 508, 510, 515, 517, 543, 551,
603 558, 570, 577, 579, 591, 622, 599, 624, 209, 224,
604 254, 277, 274, 306, 210, 311, 321, 323, 342, 337,
606 346, 349, 353, 376, 571, 401, 407, 419, 412, 639,
607 672, 715, 758, 646, 635, 687, 670, 693, 695, 748,
608 739, 704, 750, 776, 702, 782, 791, 784, 416, 432,
609 436, 567, 469, 519, 779, 793, 524, 531, 533, 544,
610 642, 292, 629, 628, 372, 641, 685, 702, 401, 780,
611 721, 843, 856, 827, 864, 877, 879, 884, 886, 891,
612 893, 900, 906, 912, 914, 920, 936, 943, 955, 485,
613 741, 769, 769, 788, 776, 800, 818, 887, 888, 904,
614 925, 916, 929, 943, 626, 941, 936, 932, 934, 933,
615 954, 940, 941, 959, 707, 951, 957, 969, 946, 714,
617 948, 968, 1020, 1033, 1076, 2094, 1054, 1052, 1059, 1068,
618 1070, 1095, 1100, 1102, 1111, 1120, 987, 999, 980, 988,
619 1001, 1006, 1014, 1028, 2094, 1043, 1057, 1067, 1087, 1078,
620 1081, 1100, 1098, 1095, 1095, 1096, 1093, 1105, 1114, 1115,
621 731, 1108, 1119, 1121, 1111, 1124, 1127, 1118, 1141, 1133,
622 1144, 1137, 1150, 1152, 1156, 1157, 1139, 2094, 1207, 1180,
623 1189, 1197, 1220, 1225, 1234, 1240, 1242, 1247, 1160, 1174,
624 803, 889, 1172, 1186, 1210, 1208, 1209, 1221, 682, 657,
625 1232, 601, 590, 1213, 1011, 1232, 1234, 1252, 1237, 1235,
626 1236, 1230, 1231, 1267, 1241, 1243, 1269, 1243, 1244, 1240,
628 1257, 1259, 1266, 1268, 1264, 1281, 1283, 1272, 1303, 1346,
629 1331, 1317, 1325, 1290, 1292, 1284, 1285, 1303, 1305, 1308,
630 1305, 1308, 1313, 1316, 1328, 1333, 1328, 1335, 1339, 1334,
631 0, 1344, 1346, 1349, 1351, 1354, 1355, 1341, 1363, 1364,
632 1361, 1362, 1369, 2094, 1371, 1374, 1375, 1381, 1390, 1364,
633 1366, 1402, 1371, 1396, 1387, 1400, 2094, 1391, 1393, 2094,
634 1404, 1405, 1432, 1434, 1415, 1421, 1407, 1413, 1428, 1432,
635 1434, 1421, 1424, 1426, 1439, 1440, 627, 1431, 1449, 578,
636 1435, 1454, 1450, 1451, 1457, 1458, 1460, 1462, 1464, 1455,
637 1457, 1465, 1466, 1484, 1485, 1472, 1473, 1486, 1488, 1490,
639 1493, 1480, 1481, 1499, 1500, 1507, 1492, 1508, 1495, 1509,
640 1510, 1514, 1516, 1562, 1506, 1512, 1518, 1524, 1523, 1524,
641 1535, 1533, 1536, 1540, 615, 575, 1529, 1549, 1535, 1533,
642 1552, 1538, 611, 567, 1546, 1548, 1539, 1540, 1582, 1550,
643 1552, 1569, 1570, 1568, 1569, 1559, 1565, 1584, 1579, 1591,
644 1581, 1577, 1578, 1598, 1602, 1594, 1604, 1609, 1599, 1608,
645 1614, 2094, 2094, 1591, 1592, 566, 564, 1598, 1599, 1604,
646 1606, 1622, 1623, 1618, 1619, 1619, 1620, 1624, 1640, 1641,
647 1643, 1648, 1644, 1646, 1635, 1639, 1639, 1641, 587, 584,
648 1646, 1647, 1646, 1649, 1655, 1656, 1660, 1661, 1659, 1661,
650 1660, 1679, 1663, 1682, 2094, 2094, 1669, 1671, 1685, 1683,
651 1676, 1693, 1691, 1679, 2094, 2094, 1697, 1699, 1696, 1699,
652 1711, 1713, 1710, 1711, 1718, 1719, 1711, 1708, 1709, 1713,
653 1730, 1718, 1717, 1734, 1722, 1737, 1739, 1728, 1729, 2094,
654 2094, 1750, 1751, 583, 572, 1736, 1737, 1738, 1740, 558,
655 550, 553, 550, 499, 486, 2094, 2094, 1743, 1763, 2094,
656 1748, 1767, 2094, 1758, 1759, 1774, 1775, 1760, 1761, 1769,
657 1775, 1774, 1775, 509, 1786, 1788, 1789, 1776, 1785, 1797,
658 1783, 1796, 1794, 1795, 508, 502, 1796, 1797, 2094, 2094,
659 1795, 1799, 1804, 1806, 2094, 2094, 1807, 1808, 1809, 1812,
661 1827, 2094, 1828, 2094, 1815, 1816, 1826, 1828, 1824, 1825,
662 1842, 1843, 1829, 1831, 2094, 1850, 1851, 1845, 1861, 1864,
663 1848, 1864, 1868, 1861, 1864, 2094, 2094, 1866, 1868, 491,
664 471, 1876, 1877, 1876, 1877, 1878, 1879, 2094, 2094, 1869,
665 1875, 1885, 1886, 1880, 1882, 446, 442, 1882, 1884, 1897,
666 1901, 1898, 1909, 1900, 1906, 1912, 1903, 1914, 1918, 1921,
667 1923, 2094, 2094, 441, 381, 1908, 1909, 1910, 1913, 1921,
668 1922, 2094, 2094, 2094, 2094, 2094, 2094, 386, 378, 1918,
669 1919, 1948, 365, 1940, 1951, 349, 1942, 1952, 1953, 1955,
670 1957, 1952, 1953, 1966, 1967, 1968, 1969, 2094, 2094, 2094,
672 2094, 300, 284, 1957, 2094, 306, 1959, 2094, 290, 1980,
673 1983, 1985, 1987, 1980, 1981, 287, 274, 253, 252, 1982,
674 1983, 1984, 2094, 1985, 2094, 1978, 1984, 240, 200, 1992,
675 1993, 2094, 2094, 2094, 2094, 2002, 2004, 215, 196, 132,
676 120, 1992, 1994, 2005, 2009, 1994, 2000, 2094, 2094, 2094,
677 2094, 2021, 2022, 2008, 2009, 2094, 2094, 2030, 2034, 119,
678 116, 2034, 2036, 2094, 2094, 2094, 2094, 2094, 2087, 126,
682 static yyconst flex_int16_t yy_def
[773] =
684 768, 1, 768, 768, 768, 768, 768, 769, 768, 768,
685 770, 768, 770, 770, 770, 770, 770, 770, 770, 770,
686 770, 770, 770, 770, 771, 769, 769, 768, 768, 772,
687 772, 772, 768, 772, 772, 772, 772, 772, 772, 772,
688 772, 772, 772, 772, 772, 772, 772, 772, 772, 772,
689 771, 768, 28, 53, 53, 53, 53, 53, 53, 53,
690 53, 53, 53, 53, 53, 53, 768, 772, 772, 772,
691 768, 772, 772, 772, 772, 772, 772, 772, 772, 772,
692 772, 772, 772, 772, 772, 772, 772, 772, 53, 53,
693 53, 53, 53, 53, 53, 53, 53, 53, 53, 53,
695 53, 53, 53, 53, 53, 53, 53, 53, 53, 768,
696 772, 772, 772, 768, 772, 772, 772, 772, 772, 772,
697 772, 772, 772, 772, 772, 772, 772, 772, 53, 53,
698 53, 53, 53, 53, 768, 768, 53, 53, 53, 53,
699 53, 53, 53, 53, 53, 53, 53, 53, 53, 53,
700 53, 768, 772, 772, 768, 772, 772, 772, 772, 772,
701 772, 772, 772, 772, 772, 772, 772, 772, 772, 53,
702 53, 53, 53, 53, 53, 53, 768, 768, 768, 768,
703 768, 768, 53, 53, 53, 53, 53, 768, 768, 53,
704 53, 768, 768, 53, 53, 53, 768, 768, 768, 53,
706 768, 53, 768, 772, 772, 768, 772, 772, 772, 772,
707 772, 772, 772, 772, 772, 772, 768, 768, 53, 53,
708 53, 53, 53, 768, 768, 768, 768, 768, 768, 768,
709 768, 768, 53, 53, 768, 768, 53, 53, 768, 768,
710 53, 53, 768, 768, 53, 768, 768, 53, 768, 768,
711 768, 768, 768, 768, 768, 768, 53, 768, 772, 772,
712 772, 772, 772, 772, 772, 772, 772, 772, 768, 768,
713 53, 53, 53, 53, 53, 768, 768, 768, 768, 768,
714 768, 768, 768, 53, 53, 768, 768, 53, 53, 768,
715 768, 768, 768, 53, 768, 768, 53, 768, 768, 53,
717 768, 768, 768, 768, 768, 768, 768, 768, 53, 772,
718 772, 772, 772, 768, 768, 768, 768, 768, 768, 53,
719 53, 53, 768, 768, 768, 768, 768, 768, 768, 768,
720 53, 768, 768, 768, 768, 768, 768, 53, 768, 768,
721 768, 768, 768, 768, 768, 768, 768, 768, 768, 768,
722 768, 53, 768, 768, 768, 768, 768, 768, 768, 768,
723 768, 768, 772, 772, 768, 768, 768, 768, 768, 768,
724 53, 768, 768, 53, 768, 768, 768, 768, 768, 768,
725 768, 768, 768, 768, 768, 768, 768, 768, 53, 768,
726 768, 768, 768, 768, 768, 768, 768, 768, 768, 768,
728 768, 768, 768, 768, 768, 768, 768, 768, 768, 768,
729 768, 768, 768, 772, 768, 768, 768, 768, 768, 768,
730 53, 768, 768, 53, 768, 768, 768, 768, 768, 768,
731 768, 768, 768, 768, 768, 768, 768, 768, 53, 768,
732 768, 768, 768, 768, 768, 768, 768, 768, 768, 768,
733 768, 768, 768, 768, 768, 768, 768, 768, 768, 768,
734 768, 768, 768, 768, 768, 768, 768, 768, 768, 768,
735 768, 768, 768, 768, 768, 53, 768, 768, 768, 768,
736 768, 768, 768, 768, 768, 768, 768, 768, 768, 768,
737 768, 768, 768, 768, 768, 768, 768, 768, 768, 768,
739 768, 768, 768, 768, 768, 768, 768, 768, 768, 768,
740 768, 768, 768, 768, 768, 768, 768, 768, 768, 768,
741 768, 768, 768, 768, 768, 768, 53, 768, 768, 768,
742 768, 768, 768, 768, 768, 768, 768, 768, 768, 768,
743 768, 768, 768, 768, 768, 768, 768, 768, 768, 768,
744 768, 768, 768, 768, 768, 768, 768, 768, 768, 768,
745 768, 768, 768, 768, 768, 768, 768, 768, 768, 768,
746 768, 768, 768, 53, 768, 768, 768, 768, 768, 768,
747 768, 768, 768, 768, 768, 768, 768, 768, 768, 768,
748 768, 768, 768, 768, 768, 768, 768, 768, 768, 768,
750 768, 768, 768, 768, 768, 768, 768, 768, 768, 768,
751 768, 768, 768, 768, 768, 768, 768, 768, 768, 768,
752 768, 768, 768, 768, 768, 768, 768, 768, 768, 768,
753 768, 768, 768, 768, 768, 768, 768, 768, 768, 768,
754 768, 768, 768, 768, 768, 768, 768, 768, 768, 768,
755 768, 768, 768, 768, 768, 768, 768, 768, 768, 768,
756 768, 768, 768, 768, 768, 768, 768, 768, 768, 768,
757 768, 768, 768, 768, 768, 768, 768, 768, 768, 768,
758 768, 768, 768, 768, 768, 768, 768, 768, 768, 768,
759 768, 768, 768, 768, 768, 768, 768, 768, 768, 768,
761 768, 768, 768, 768, 768, 768, 768, 768, 768, 768,
762 768, 768, 768, 768, 768, 768, 768, 768, 768, 768,
763 768, 768, 768, 768, 768, 768, 768, 768, 768, 768,
764 768, 768, 768, 768, 768, 768, 768, 768, 768, 768,
765 768, 768, 768, 768, 768, 768, 768, 768, 768, 768,
766 768, 768, 768, 768, 768, 768, 768, 768, 768, 768,
767 768, 768, 768, 768, 768, 768, 768, 0, 768, 768,
771 static yyconst flex_int16_t yy_nxt
[2168] =
773 4, 5, 6, 7, 8, 4, 7, 9, 4, 10,
774 11, 11, 11, 11, 11, 11, 11, 12, 7, 4,
775 13, 13, 14, 15, 16, 17, 13, 18, 19, 20,
776 13, 13, 21, 13, 13, 13, 13, 22, 23, 24,
777 13, 13, 13, 13, 13, 13, 4, 13, 13, 14,
778 15, 16, 17, 13, 18, 19, 20, 13, 13, 21,
779 13, 13, 13, 13, 22, 23, 24, 13, 13, 13,
780 13, 13, 13, 31, 36, 32, 32, 32, 32, 32,
781 32, 32, 33, 33, 33, 33, 33, 33, 33, 34,
782 37, 39, 35, 41, 38, 42, 43, 44, 47, 49,
784 50, 36, 48, 89, 40, 92, 93, 30, 45, 94,
785 30, 30, 95, 107, 46, 68, 34, 37, 39, 35,
786 41, 38, 42, 43, 44, 47, 49, 50, 30, 48,
787 89, 40, 92, 93, 765, 45, 94, 764, 751, 95,
788 107, 46, 53, 53, 53, 53, 53, 53, 53, 30,
789 750, 108, 54, 55, 56, 57, 53, 53, 53, 58,
790 59, 53, 53, 53, 53, 60, 53, 61, 53, 62,
791 63, 64, 65, 66, 53, 53, 53, 53, 108, 54,
792 55, 56, 57, 53, 53, 53, 58, 59, 53, 53,
793 53, 53, 60, 53, 61, 53, 62, 63, 64, 65,
795 66, 53, 53, 53, 53, 67, 67, 67, 67, 67,
796 67, 67, 30, 109, 749, 30, 30, 135, 69, 69,
797 69, 69, 69, 69, 69, 71, 71, 71, 71, 71,
798 71, 71, 30, 748, 30, 30, 30, 30, 30, 30,
799 109, 30, 30, 30, 30, 30, 743, 742, 129, 30,
800 73, 74, 30, 30, 30, 30, 136, 130, 30, 31,
801 75, 70, 70, 70, 70, 70, 70, 70, 72, 30,
802 735, 734, 30, 30, 30, 129, 30, 73, 74, 131,
803 96, 30, 76, 30, 130, 30, 97, 75, 30, 30,
804 30, 30, 733, 30, 30, 72, 77, 30, 30, 188,
806 30, 30, 30, 30, 30, 732, 131, 96, 725, 76,
807 132, 30, 133, 97, 79, 30, 80, 30, 30, 30,
808 30, 30, 78, 77, 723, 98, 82, 30, 99, 81,
809 721, 30, 30, 90, 30, 30, 83, 132, 189, 133,
810 30, 79, 30, 80, 134, 91, 720, 30, 137, 78,
811 30, 30, 98, 138, 139, 99, 81, 30, 30, 30,
812 90, 30, 30, 83, 84, 30, 140, 708, 30, 30,
813 141, 134, 91, 30, 30, 137, 85, 30, 30, 192,
814 138, 139, 100, 705, 101, 103, 102, 142, 143, 30,
815 144, 84, 86, 140, 104, 105, 701, 141, 87, 145,
817 30, 106, 30, 85, 700, 30, 30, 30, 197, 100,
818 88, 101, 103, 102, 142, 143, 30, 144, 193, 86,
819 30, 104, 105, 30, 30, 87, 145, 693, 106, 110,
820 110, 110, 110, 110, 110, 110, 148, 88, 53, 53,
821 53, 53, 149, 150, 30, 53, 53, 198, 692, 151,
822 170, 53, 171, 53, 115, 53, 53, 53, 53, 53,
823 677, 172, 30, 148, 676, 53, 53, 53, 53, 149,
824 150, 30, 53, 53, 30, 30, 151, 170, 53, 171,
825 53, 115, 53, 53, 53, 53, 53, 30, 172, 663,
826 30, 111, 217, 112, 112, 112, 112, 112, 112, 112,
828 114, 114, 114, 114, 114, 114, 114, 30, 175, 662,
829 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
830 627, 30, 30, 30, 30, 30, 626, 615, 119, 30,
831 30, 218, 600, 30, 31, 175, 113, 113, 113, 113,
832 113, 113, 113, 116, 117, 599, 176, 30, 183, 30,
833 30, 30, 184, 118, 30, 30, 30, 598, 30, 30,
834 597, 30, 30, 30, 185, 30, 30, 120, 596, 186,
835 116, 117, 30, 176, 30, 183, 595, 30, 30, 184,
836 118, 30, 121, 30, 30, 30, 30, 30, 122, 30,
837 590, 185, 173, 146, 120, 30, 186, 30, 30, 30,
839 174, 589, 541, 30, 30, 540, 30, 30, 147, 121,
840 518, 124, 517, 486, 125, 122, 30, 123, 485, 173,
841 146, 478, 477, 30, 430, 30, 30, 174, 30, 30,
842 30, 30, 30, 235, 427, 147, 330, 30, 124, 30,
843 127, 125, 30, 30, 123, 30, 126, 329, 128, 152,
844 152, 152, 152, 152, 152, 152, 155, 155, 155, 155,
845 155, 155, 155, 156, 327, 187, 190, 127, 30, 191,
846 30, 194, 236, 126, 30, 128, 30, 30, 30, 30,
847 30, 30, 153, 153, 153, 153, 153, 153, 153, 326,
848 156, 30, 187, 190, 30, 30, 191, 30, 194, 30,
850 30, 30, 30, 30, 52, 27, 30, 158, 30, 30,
851 30, 30, 30, 157, 246, 160, 30, 159, 30, 30,
852 27, 254, 30, 111, 195, 154, 154, 154, 154, 154,
853 154, 154, 164, 30, 158, 52, 167, 196, 292, 30,
854 157, 161, 160, 30, 159, 29, 30, 30, 30, 202,
855 30, 195, 30, 247, 30, 30, 30, 30, 30, 164,
856 255, 30, 30, 167, 196, 30, 30, 28, 113, 113,
857 113, 113, 113, 113, 113, 162, 202, 293, 219, 163,
858 30, 165, 27, 30, 30, 30, 30, 199, 30, 30,
859 30, 30, 30, 220, 30, 30, 30, 221, 30, 30,
861 177, 768, 162, 25, 30, 219, 163, 224, 165, 178,
862 316, 179, 222, 223, 180, 169, 166, 200, 225, 768,
863 220, 168, 30, 181, 221, 182, 201, 177, 30, 768,
864 30, 30, 768, 768, 30, 111, 178, 30, 179, 222,
865 223, 180, 169, 166, 200, 768, 226, 768, 168, 317,
866 181, 768, 182, 203, 203, 203, 203, 203, 203, 203,
867 30, 768, 227, 30, 204, 768, 205, 205, 205, 205,
868 205, 205, 205, 30, 206, 206, 206, 206, 206, 206,
869 206, 30, 768, 30, 30, 30, 30, 30, 30, 227,
870 30, 30, 30, 30, 30, 30, 318, 30, 30, 30,
872 30, 30, 30, 768, 30, 768, 209, 30, 30, 210,
873 30, 228, 768, 30, 30, 207, 30, 768, 30, 30,
874 30, 30, 30, 30, 30, 30, 229, 30, 30, 211,
875 30, 768, 30, 768, 213, 319, 768, 208, 228, 30,
876 30, 768, 207, 30, 30, 212, 30, 30, 230, 231,
877 30, 30, 30, 229, 232, 768, 211, 214, 30, 30,
878 30, 213, 30, 30, 233, 768, 30, 234, 215, 237,
879 238, 239, 212, 240, 768, 230, 231, 241, 242, 243,
880 244, 232, 30, 245, 214, 248, 253, 249, 256, 30,
881 250, 233, 216, 257, 234, 215, 237, 238, 239, 251,
883 240, 30, 252, 768, 241, 242, 243, 244, 768, 768,
884 245, 269, 248, 253, 249, 256, 768, 250, 332, 216,
885 257, 768, 768, 270, 271, 272, 251, 273, 274, 252,
886 258, 258, 258, 258, 258, 258, 258, 30, 269, 768,
887 30, 30, 275, 259, 259, 259, 259, 259, 259, 259,
888 270, 271, 272, 768, 273, 274, 30, 333, 30, 30,
889 30, 30, 30, 30, 768, 262, 30, 30, 263, 275,
890 276, 264, 30, 768, 30, 30, 30, 30, 30, 30,
891 30, 768, 265, 30, 204, 277, 260, 260, 260, 260,
892 260, 260, 260, 261, 266, 768, 278, 276, 30, 30,
894 30, 768, 30, 30, 30, 30, 30, 30, 30, 30,
895 30, 279, 277, 280, 30, 30, 30, 281, 30, 30,
896 261, 266, 30, 278, 30, 282, 283, 30, 30, 284,
897 768, 768, 285, 267, 286, 287, 288, 289, 279, 768,
898 280, 30, 290, 291, 281, 294, 30, 295, 30, 296,
899 297, 298, 282, 283, 299, 300, 284, 30, 268, 285,
900 267, 286, 287, 288, 289, 301, 30, 302, 303, 290,
901 291, 304, 294, 305, 295, 306, 296, 297, 298, 307,
902 308, 299, 300, 309, 30, 268, 768, 30, 204, 314,
903 768, 768, 301, 30, 302, 303, 30, 30, 304, 768,
905 305, 30, 306, 315, 30, 30, 307, 308, 768, 312,
906 309, 30, 320, 311, 30, 30, 314, 310, 310, 310,
907 310, 310, 310, 310, 30, 321, 30, 30, 30, 30,
908 315, 322, 30, 30, 313, 30, 323, 324, 30, 320,
909 311, 30, 30, 30, 30, 325, 30, 30, 30, 30,
910 30, 30, 321, 30, 30, 30, 328, 331, 322, 336,
911 334, 768, 335, 323, 324, 338, 30, 339, 340, 341,
912 342, 30, 325, 346, 343, 347, 348, 350, 351, 352,
913 30, 353, 354, 328, 331, 344, 30, 334, 30, 335,
914 355, 356, 338, 30, 339, 340, 341, 342, 337, 357,
916 346, 358, 347, 359, 350, 351, 352, 360, 353, 354,
917 361, 768, 372, 345, 365, 349, 366, 355, 356, 367,
918 368, 30, 768, 768, 30, 30, 357, 768, 358, 30,
919 359, 768, 30, 30, 360, 30, 768, 768, 30, 30,
920 369, 365, 370, 366, 768, 371, 367, 368, 374, 362,
921 30, 373, 375, 30, 30, 376, 363, 363, 363, 363,
922 363, 363, 363, 30, 364, 768, 377, 369, 378, 370,
923 379, 30, 371, 380, 381, 374, 382, 30, 383, 375,
924 384, 385, 376, 386, 387, 388, 389, 390, 391, 392,
925 393, 364, 30, 377, 394, 378, 395, 379, 396, 397,
927 380, 381, 402, 382, 403, 383, 406, 384, 385, 404,
928 386, 387, 388, 389, 390, 391, 392, 393, 398, 399,
929 407, 394, 408, 395, 409, 396, 397, 400, 401, 402,
930 410, 403, 411, 406, 412, 413, 30, 415, 30, 30,
931 30, 30, 30, 416, 417, 398, 399, 407, 405, 408,
932 418, 409, 419, 768, 400, 401, 420, 410, 421, 411,
933 422, 412, 413, 423, 415, 424, 425, 426, 428, 429,
934 416, 417, 431, 414, 432, 433, 434, 418, 30, 419,
935 30, 435, 436, 420, 437, 421, 438, 422, 439, 440,
936 423, 441, 424, 425, 426, 428, 429, 442, 443, 431,
938 414, 432, 433, 434, 444, 445, 446, 447, 435, 436,
939 448, 437, 449, 438, 450, 439, 440, 451, 441, 452,
940 453, 454, 455, 458, 442, 443, 461, 456, 459, 462,
941 463, 444, 445, 446, 447, 457, 460, 448, 464, 449,
942 465, 450, 472, 768, 451, 466, 452, 453, 454, 455,
943 458, 467, 468, 461, 456, 459, 462, 463, 469, 470,
944 471, 474, 457, 460, 475, 464, 30, 465, 476, 30,
945 30, 479, 466, 480, 481, 482, 483, 484, 467, 468,
946 487, 473, 488, 489, 490, 469, 470, 471, 474, 491,
947 493, 475, 494, 495, 496, 476, 497, 498, 479, 499,
949 480, 481, 482, 483, 484, 500, 501, 487, 30, 488,
950 489, 490, 502, 503, 504, 505, 506, 493, 507, 494,
951 495, 496, 508, 497, 498, 509, 499, 510, 492, 511,
952 512, 513, 500, 501, 514, 515, 516, 519, 520, 502,
953 503, 504, 505, 506, 521, 507, 522, 523, 524, 508,
954 525, 526, 509, 527, 510, 528, 511, 512, 513, 529,
955 530, 514, 515, 516, 519, 520, 531, 532, 533, 534,
956 535, 521, 536, 522, 523, 524, 537, 525, 526, 538,
957 527, 539, 528, 542, 543, 544, 529, 530, 545, 546,
958 547, 548, 549, 531, 532, 533, 534, 535, 550, 536,
960 551, 552, 553, 537, 554, 555, 538, 556, 539, 557,
961 542, 543, 544, 558, 559, 545, 546, 547, 548, 549,
962 560, 561, 562, 563, 564, 550, 565, 551, 552, 553,
963 566, 554, 555, 567, 556, 568, 557, 569, 570, 571,
964 558, 559, 572, 573, 574, 575, 576, 560, 561, 562,
965 563, 564, 577, 565, 578, 579, 580, 566, 581, 582,
966 567, 583, 568, 584, 569, 570, 571, 585, 586, 572,
967 573, 574, 575, 576, 587, 588, 591, 592, 593, 577,
968 594, 578, 579, 580, 601, 581, 582, 602, 583, 603,
969 584, 604, 605, 606, 585, 586, 607, 608, 609, 610,
971 611, 587, 588, 591, 592, 593, 612, 594, 613, 614,
972 616, 601, 617, 618, 602, 619, 603, 620, 604, 605,
973 606, 621, 622, 607, 608, 609, 610, 611, 623, 624,
974 625, 628, 629, 612, 630, 613, 614, 616, 631, 617,
975 618, 632, 619, 633, 620, 634, 635, 636, 621, 622,
976 637, 638, 639, 640, 641, 623, 624, 625, 628, 629,
977 642, 630, 643, 644, 645, 631, 646, 647, 632, 648,
978 633, 649, 634, 635, 636, 650, 651, 637, 638, 639,
979 640, 641, 652, 653, 654, 655, 656, 642, 657, 643,
980 644, 645, 658, 646, 647, 659, 648, 660, 649, 661,
982 664, 665, 650, 651, 666, 667, 668, 669, 670, 652,
983 653, 654, 655, 656, 671, 657, 672, 673, 674, 658,
984 675, 678, 659, 679, 660, 680, 661, 664, 665, 681,
985 682, 666, 667, 668, 669, 670, 683, 684, 685, 686,
986 687, 671, 688, 672, 673, 674, 689, 675, 678, 690,
987 679, 691, 680, 694, 695, 696, 681, 682, 697, 698,
988 699, 702, 703, 683, 684, 685, 686, 687, 704, 688,
989 706, 707, 709, 689, 710, 711, 690, 712, 691, 713,
990 694, 695, 696, 714, 715, 697, 698, 699, 702, 703,
991 716, 717, 718, 719, 722, 704, 724, 706, 707, 709,
993 726, 710, 711, 727, 712, 728, 713, 729, 730, 731,
994 714, 715, 736, 737, 738, 739, 740, 716, 717, 718,
995 719, 722, 741, 724, 744, 745, 746, 726, 747, 752,
996 727, 753, 728, 754, 729, 730, 731, 755, 756, 736,
997 737, 738, 739, 740, 757, 758, 759, 760, 761, 741,
998 762, 744, 745, 746, 763, 747, 752, 766, 753, 767,
999 754, 768, 768, 768, 755, 756, 768, 768, 768, 768,
1000 768, 757, 758, 759, 760, 761, 768, 762, 768, 768,
1001 768, 763, 768, 768, 766, 768, 767, 26, 768, 26,
1002 51, 51, 51, 3, 768, 768, 768, 768, 768, 768,
1004 768, 768, 768, 768, 768, 768, 768, 768, 768, 768,
1005 768, 768, 768, 768, 768, 768, 768, 768, 768, 768,
1006 768, 768, 768, 768, 768, 768, 768, 768, 768, 768,
1007 768, 768, 768, 768, 768, 768, 768, 768, 768, 768,
1008 768, 768, 768, 768, 768, 768, 768, 768, 768, 768,
1009 768, 768, 768, 768, 768, 768, 768, 768, 768, 768,
1010 768, 768, 768, 768, 768, 768, 768
1013 static yyconst flex_int16_t yy_chk
[2168] =
1015 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1016 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1017 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1018 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1019 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1020 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1021 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1022 1, 1, 1, 11, 15, 11, 11, 11, 11, 11,
1023 11, 11, 12, 12, 12, 12, 12, 12, 12, 14,
1024 16, 17, 14, 18, 16, 19, 20, 21, 22, 23,
1026 24, 15, 22, 54, 17, 56, 57, 30, 21, 58,
1027 30, 30, 59, 64, 21, 772, 14, 16, 17, 14,
1028 18, 16, 19, 20, 21, 22, 23, 24, 770, 22,
1029 54, 17, 56, 57, 761, 21, 58, 760, 741, 59,
1030 64, 21, 28, 28, 28, 28, 28, 28, 28, 30,
1031 740, 65, 28, 28, 28, 28, 28, 28, 28, 28,
1032 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
1033 28, 28, 28, 28, 28, 28, 28, 28, 65, 28,
1034 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
1035 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
1037 28, 28, 28, 28, 28, 29, 29, 29, 29, 29,
1038 29, 29, 31, 66, 739, 31, 31, 95, 31, 31,
1039 31, 31, 31, 31, 31, 33, 33, 33, 33, 33,
1040 33, 33, 35, 738, 36, 35, 35, 36, 36, 34,
1041 66, 37, 34, 34, 37, 37, 729, 728, 89, 38,
1042 35, 36, 38, 38, 31, 32, 95, 90, 32, 32,
1043 37, 32, 32, 32, 32, 32, 32, 32, 34, 39,
1044 719, 718, 39, 39, 35, 89, 36, 35, 36, 91,
1045 60, 34, 38, 37, 90, 40, 60, 37, 40, 40,
1046 41, 38, 717, 41, 41, 34, 39, 32, 42, 142,
1048 43, 42, 42, 43, 43, 716, 91, 60, 709, 38,
1049 92, 39, 93, 60, 41, 44, 42, 45, 44, 44,
1050 45, 45, 40, 39, 706, 61, 44, 40, 61, 43,
1051 703, 46, 41, 55, 46, 46, 45, 92, 142, 93,
1052 42, 41, 43, 42, 94, 55, 702, 47, 96, 40,
1053 47, 47, 61, 97, 98, 61, 43, 44, 48, 45,
1054 55, 48, 48, 45, 46, 49, 99, 686, 49, 49,
1055 100, 94, 55, 46, 50, 96, 47, 50, 50, 145,
1056 97, 98, 62, 683, 62, 63, 62, 101, 102, 47,
1057 103, 46, 48, 99, 63, 63, 679, 100, 49, 104,
1059 48, 63, 68, 47, 678, 68, 68, 49, 149, 62,
1060 50, 62, 63, 62, 101, 102, 50, 103, 145, 48,
1061 72, 63, 63, 72, 72, 49, 104, 665, 63, 67,
1062 67, 67, 67, 67, 67, 67, 106, 50, 53, 53,
1063 53, 53, 107, 108, 68, 53, 53, 149, 664, 109,
1064 129, 53, 130, 53, 72, 53, 53, 53, 53, 53,
1065 647, 131, 72, 106, 646, 53, 53, 53, 53, 107,
1066 108, 73, 53, 53, 73, 73, 109, 129, 53, 130,
1067 53, 72, 53, 53, 53, 53, 53, 69, 131, 631,
1068 69, 69, 170, 69, 69, 69, 69, 69, 69, 69,
1070 71, 71, 71, 71, 71, 71, 71, 74, 133, 630,
1071 74, 74, 75, 73, 76, 75, 75, 76, 76, 77,
1072 586, 78, 77, 77, 78, 78, 585, 574, 78, 69,
1073 70, 170, 555, 70, 70, 133, 70, 70, 70, 70,
1074 70, 70, 70, 74, 76, 554, 134, 79, 137, 74,
1075 79, 79, 138, 77, 75, 80, 76, 553, 80, 80,
1076 552, 77, 81, 78, 139, 81, 81, 79, 551, 140,
1077 74, 76, 70, 134, 82, 137, 550, 82, 82, 138,
1078 77, 83, 80, 84, 83, 83, 84, 84, 81, 79,
1079 545, 139, 132, 105, 79, 85, 140, 80, 85, 85,
1081 132, 544, 490, 87, 81, 489, 87, 87, 105, 80,
1082 467, 84, 466, 434, 85, 81, 82, 83, 433, 132,
1083 105, 426, 425, 83, 380, 84, 86, 132, 88, 86,
1084 86, 88, 88, 185, 377, 105, 283, 85, 84, 115,
1085 87, 85, 115, 115, 83, 87, 86, 282, 88, 110,
1086 110, 110, 110, 110, 110, 110, 114, 114, 114, 114,
1087 114, 114, 114, 115, 280, 141, 143, 87, 86, 144,
1088 88, 146, 185, 86, 117, 88, 111, 117, 117, 111,
1089 111, 115, 111, 111, 111, 111, 111, 111, 111, 279,
1090 115, 116, 141, 143, 116, 116, 144, 118, 146, 119,
1092 118, 118, 119, 119, 51, 27, 125, 117, 122, 125,
1093 125, 122, 122, 116, 195, 119, 117, 118, 111, 112,
1094 26, 200, 112, 112, 147, 112, 112, 112, 112, 112,
1095 112, 112, 122, 116, 117, 25, 125, 148, 241, 118,
1096 116, 119, 119, 121, 118, 10, 121, 121, 125, 151,
1097 122, 147, 120, 195, 123, 120, 120, 123, 123, 122,
1098 200, 112, 113, 125, 148, 113, 113, 9, 113, 113,
1099 113, 113, 113, 113, 113, 120, 151, 241, 171, 121,
1100 124, 123, 8, 124, 124, 121, 126, 150, 128, 126,
1101 126, 128, 128, 172, 120, 127, 123, 173, 127, 127,
1103 135, 3, 120, 2, 113, 171, 121, 176, 123, 135,
1104 271, 135, 174, 175, 136, 127, 124, 150, 176, 0,
1105 172, 126, 124, 136, 173, 136, 150, 135, 126, 0,
1106 128, 154, 0, 0, 154, 154, 135, 127, 135, 174,
1107 175, 136, 127, 124, 150, 0, 176, 0, 126, 271,
1108 136, 0, 136, 152, 152, 152, 152, 152, 152, 152,
1109 153, 0, 177, 153, 153, 0, 153, 153, 153, 153,
1110 153, 153, 153, 154, 155, 155, 155, 155, 155, 155,
1111 155, 156, 0, 157, 156, 156, 157, 157, 158, 177,
1112 159, 158, 158, 159, 159, 160, 272, 161, 160, 160,
1114 161, 161, 153, 0, 162, 0, 161, 162, 162, 161,
1115 163, 178, 0, 163, 163, 156, 164, 0, 165, 164,
1116 164, 165, 165, 156, 166, 157, 179, 166, 166, 163,
1117 158, 0, 159, 0, 165, 272, 0, 160, 178, 161,
1118 167, 0, 156, 167, 167, 164, 162, 168, 180, 181,
1119 168, 168, 163, 179, 182, 0, 163, 166, 164, 169,
1120 165, 165, 169, 169, 183, 0, 166, 184, 167, 186,
1121 187, 188, 164, 189, 0, 180, 181, 190, 191, 192,
1122 193, 182, 167, 194, 166, 196, 199, 197, 201, 168,
1123 197, 183, 169, 202, 184, 167, 186, 187, 188, 198,
1125 189, 169, 198, 0, 190, 191, 192, 193, 0, 0,
1126 194, 217, 196, 199, 197, 201, 0, 197, 285, 169,
1127 202, 0, 0, 218, 219, 220, 198, 221, 222, 198,
1128 203, 203, 203, 203, 203, 203, 203, 204, 217, 0,
1129 204, 204, 223, 204, 204, 204, 204, 204, 204, 204,
1130 218, 219, 220, 0, 221, 222, 208, 285, 207, 208,
1131 208, 207, 207, 209, 0, 208, 209, 209, 208, 223,
1132 224, 209, 210, 0, 211, 210, 210, 211, 211, 204,
1133 205, 0, 210, 205, 205, 226, 205, 205, 205, 205,
1134 205, 205, 205, 207, 211, 0, 227, 224, 208, 212,
1136 207, 0, 212, 212, 213, 209, 214, 213, 213, 214,
1137 214, 228, 226, 229, 210, 215, 211, 230, 215, 215,
1138 207, 211, 205, 227, 216, 231, 232, 216, 216, 233,
1139 0, 0, 234, 212, 235, 236, 237, 238, 228, 0,
1140 229, 212, 239, 240, 230, 242, 213, 243, 214, 244,
1141 245, 246, 231, 232, 247, 248, 233, 215, 216, 234,
1142 212, 235, 236, 237, 238, 249, 216, 250, 251, 239,
1143 240, 252, 242, 253, 243, 254, 244, 245, 246, 255,
1144 256, 247, 248, 257, 260, 216, 0, 260, 260, 269,
1145 0, 0, 249, 261, 250, 251, 261, 261, 252, 0,
1147 253, 262, 254, 270, 262, 262, 255, 256, 0, 262,
1148 257, 259, 273, 261, 259, 259, 269, 259, 259, 259,
1149 259, 259, 259, 259, 263, 274, 260, 263, 263, 264,
1150 270, 275, 264, 264, 263, 261, 276, 277, 265, 273,
1151 261, 265, 265, 262, 266, 278, 267, 266, 266, 267,
1152 267, 268, 274, 259, 268, 268, 281, 284, 275, 288,
1153 286, 0, 287, 276, 277, 289, 263, 290, 291, 292,
1154 293, 264, 278, 295, 294, 296, 297, 298, 299, 300,
1155 265, 301, 302, 281, 284, 294, 266, 286, 267, 287,
1156 303, 304, 289, 268, 290, 291, 292, 293, 288, 305,
1158 295, 306, 296, 307, 298, 299, 300, 308, 301, 302,
1159 309, 0, 321, 294, 314, 297, 315, 303, 304, 316,
1160 317, 312, 0, 0, 312, 312, 305, 0, 306, 313,
1161 307, 0, 313, 313, 308, 311, 0, 0, 311, 311,
1162 318, 314, 319, 315, 0, 320, 316, 317, 322, 309,
1163 310, 321, 323, 310, 310, 324, 310, 310, 310, 310,
1164 310, 310, 310, 312, 311, 0, 325, 318, 326, 319,
1165 327, 313, 320, 328, 329, 322, 330, 311, 332, 323,
1166 333, 334, 324, 335, 336, 337, 338, 339, 340, 341,
1167 342, 311, 310, 325, 343, 326, 345, 327, 346, 347,
1169 328, 329, 350, 330, 351, 332, 353, 333, 334, 352,
1170 335, 336, 337, 338, 339, 340, 341, 342, 348, 348,
1171 354, 343, 355, 345, 356, 346, 347, 349, 349, 350,
1172 358, 351, 359, 353, 361, 362, 363, 365, 364, 363,
1173 363, 364, 364, 366, 367, 348, 348, 354, 352, 355,
1174 368, 356, 369, 0, 349, 349, 370, 358, 371, 359,
1175 372, 361, 362, 373, 365, 374, 375, 376, 378, 379,
1176 366, 367, 381, 364, 382, 383, 384, 368, 363, 369,
1177 364, 385, 386, 370, 387, 371, 388, 372, 389, 390,
1178 373, 391, 374, 375, 376, 378, 379, 392, 393, 381,
1180 364, 382, 383, 384, 394, 395, 396, 397, 385, 386,
1181 398, 387, 399, 388, 400, 389, 390, 401, 391, 402,
1182 403, 404, 405, 407, 392, 393, 409, 406, 408, 410,
1183 411, 394, 395, 396, 397, 406, 408, 398, 412, 399,
1184 413, 400, 421, 0, 401, 415, 402, 403, 404, 405,
1185 407, 416, 417, 409, 406, 408, 410, 411, 418, 419,
1186 420, 422, 406, 408, 423, 412, 414, 413, 424, 414,
1187 414, 427, 415, 428, 429, 430, 431, 432, 416, 417,
1188 435, 421, 436, 437, 438, 418, 419, 420, 422, 439,
1189 440, 423, 441, 442, 443, 424, 444, 445, 427, 446,
1191 428, 429, 430, 431, 432, 447, 448, 435, 414, 436,
1192 437, 438, 449, 450, 451, 452, 453, 440, 454, 441,
1193 442, 443, 455, 444, 445, 456, 446, 457, 439, 458,
1194 459, 460, 447, 448, 461, 464, 465, 468, 469, 449,
1195 450, 451, 452, 453, 470, 454, 471, 472, 473, 455,
1196 474, 475, 456, 476, 457, 477, 458, 459, 460, 478,
1197 479, 461, 464, 465, 468, 469, 480, 481, 482, 483,
1198 484, 470, 485, 471, 472, 473, 486, 474, 475, 487,
1199 476, 488, 477, 491, 492, 493, 478, 479, 494, 495,
1200 496, 497, 498, 480, 481, 482, 483, 484, 499, 485,
1202 500, 501, 502, 486, 503, 504, 487, 507, 488, 508,
1203 491, 492, 493, 509, 510, 494, 495, 496, 497, 498,
1204 511, 512, 513, 514, 517, 499, 518, 500, 501, 502,
1205 519, 503, 504, 520, 507, 521, 508, 522, 523, 524,
1206 509, 510, 525, 526, 527, 528, 529, 511, 512, 513,
1207 514, 517, 530, 518, 531, 532, 533, 519, 534, 535,
1208 520, 536, 521, 537, 522, 523, 524, 538, 539, 525,
1209 526, 527, 528, 529, 542, 543, 546, 547, 548, 530,
1210 549, 531, 532, 533, 558, 534, 535, 559, 536, 561,
1211 537, 562, 564, 565, 538, 539, 566, 567, 568, 569,
1213 570, 542, 543, 546, 547, 548, 571, 549, 572, 573,
1214 575, 558, 576, 577, 559, 578, 561, 579, 562, 564,
1215 565, 580, 581, 566, 567, 568, 569, 570, 582, 583,
1216 584, 587, 588, 571, 591, 572, 573, 575, 592, 576,
1217 577, 593, 578, 594, 579, 597, 598, 599, 580, 581,
1218 600, 601, 603, 605, 606, 582, 583, 584, 587, 588,
1219 607, 591, 608, 609, 610, 592, 611, 612, 593, 613,
1220 594, 614, 597, 598, 599, 616, 617, 600, 601, 603,
1221 605, 606, 618, 619, 620, 621, 622, 607, 623, 608,
1222 609, 610, 624, 611, 612, 625, 613, 628, 614, 629,
1224 632, 633, 616, 617, 634, 635, 636, 637, 640, 618,
1225 619, 620, 621, 622, 641, 623, 642, 643, 644, 624,
1226 645, 648, 625, 649, 628, 650, 629, 632, 633, 651,
1227 652, 634, 635, 636, 637, 640, 653, 654, 655, 656,
1228 657, 641, 658, 642, 643, 644, 659, 645, 648, 660,
1229 649, 661, 650, 666, 667, 668, 651, 652, 669, 670,
1230 671, 680, 681, 653, 654, 655, 656, 657, 682, 658,
1231 684, 685, 687, 659, 688, 689, 660, 690, 661, 691,
1232 666, 667, 668, 692, 693, 669, 670, 671, 680, 681,
1233 694, 695, 696, 697, 704, 682, 707, 684, 685, 687,
1235 710, 688, 689, 711, 690, 712, 691, 713, 714, 715,
1236 692, 693, 720, 721, 722, 724, 726, 694, 695, 696,
1237 697, 704, 727, 707, 730, 731, 736, 710, 737, 742,
1238 711, 743, 712, 744, 713, 714, 715, 745, 746, 720,
1239 721, 722, 724, 726, 747, 752, 753, 754, 755, 727,
1240 758, 730, 731, 736, 759, 737, 742, 762, 743, 763,
1241 744, 0, 0, 0, 745, 746, 0, 0, 0, 0,
1242 0, 747, 752, 753, 754, 755, 0, 758, 0, 0,
1243 0, 759, 0, 0, 762, 0, 763, 769, 0, 769,
1244 771, 771, 771, 768, 768, 768, 768, 768, 768, 768,
1246 768, 768, 768, 768, 768, 768, 768, 768, 768, 768,
1247 768, 768, 768, 768, 768, 768, 768, 768, 768, 768,
1248 768, 768, 768, 768, 768, 768, 768, 768, 768, 768,
1249 768, 768, 768, 768, 768, 768, 768, 768, 768, 768,
1250 768, 768, 768, 768, 768, 768, 768, 768, 768, 768,
1251 768, 768, 768, 768, 768, 768, 768, 768, 768, 768,
1252 768, 768, 768, 768, 768, 768, 768
1255 static yyconst flex_int16_t yy_rule_linenum
[90] =
1257 77, 79, 81, 83, 85, 88, 92, 94, 95, 96,
1258 97, 98, 99, 100, 101, 102, 103, 104, 105, 106,
1259 107, 108, 109, 110, 111, 112, 113, 114, 115, 116,
1260 117, 118, 119, 120, 121, 122, 123, 124, 125, 126,
1261 127, 128, 129, 130, 131, 132, 133, 134, 135, 136,
1262 137, 138, 139, 140, 141, 142, 143, 144, 145, 146,
1263 147, 148, 150, 151, 153, 154, 155, 156, 157, 158,
1264 160, 161, 164, 169, 170, 171, 173, 174, 175, 176,
1265 177, 178, 179, 180, 181, 183, 192, 210, 216
1268 /* The intent behind this definition is that it'll catch
1269 * any uses of REJECT which flex missed.
1271 #define REJECT reject_used_but_not_detected
1272 #define yymore() yymore_used_but_not_detected
1273 #define YY_MORE_ADJ 0
1274 #define YY_RESTORE_YY_MORE_OFFSET
1275 #line 1 "libmemcached/options/scanner.l"
1276 /* vim:expandtab:shiftwidth=2:tabstop=2:smarttab:
1278 * Libmemcached Scanner and Parser
1280 * Copyright (C) 2011 DataDifferental, http://datadifferential.com
1282 * This program is free software: you can redistribute it and/or modify
1283 * it under the terms of the GNU Affero General Public License as
1284 * published by the Free Software Foundation, either version 3 of the
1285 * License, or (at your option) any later version.
1287 * This program is distributed in the hope that it will be useful,
1288 * but WITHOUT ANY WARRANTY; without even the implied warranty of
1289 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
1290 * GNU Affero General Public License for more details.
1292 * You should have received a copy of the GNU Affero General Public License
1293 * along with this program. If not, see <http://www.gnu.org/licenses/>.
1296 #line 38 "libmemcached/options/scanner.l"
1300 #define PARAM config_get_extra(yyscanner)
1302 #define get_lex_chars(buffer, result, max_size, context) \
1304 if (context->pos >= context->length) \
1310 result= (int)(context->length - context->pos); \
1311 (size_t)result > (size_t)max_size ? result= max_size : 0; \
1312 memcpy(buffer, context->buf + context->pos, result); \
1313 context->pos += result; \
1318 #define YY_INPUT(buffer, result, max_size) get_lex_chars(buffer, result, max_size, PARAM)
1320 #line 1321 "libmemcached/options/scanner.cc"
1324 #ifndef YY_NO_UNISTD_H
1325 /* Special case for "unistd.h", since it is non-ANSI. We include it way
1326 * down here because we want the user's section 1 to have been scanned first.
1327 * The user has a chance to override it with an option.
1336 #ifndef YY_EXTRA_TYPE
1337 #define YY_EXTRA_TYPE void *
1340 /* %if-c-only Reentrant structure and macros (non-C++). */
1343 /* Holds the entire state of the reentrant scanner. */
1347 /* User-defined. Not touched by flex. */
1348 YY_EXTRA_TYPE yyextra_r
;
1350 /* The rest are the same as the globals declared in the non-reentrant scanner. */
1351 FILE *yyin_r
, *yyout_r
;
1352 size_t yy_buffer_stack_top
; /**< index of top of stack. */
1353 size_t yy_buffer_stack_max
; /**< capacity of stack. */
1354 YY_BUFFER_STATE
* yy_buffer_stack
; /**< Stack as an array. */
1361 int yy_did_buffer_switch_on_eof
;
1362 int yy_start_stack_ptr
;
1363 int yy_start_stack_depth
;
1364 int *yy_start_stack
;
1365 yy_state_type yy_last_accepting_state
;
1366 char* yy_last_accepting_cpos
;
1369 int yy_flex_debug_r
;
1377 }; /* end struct yyguts_t */
1381 static int yy_init_globals (yyscan_t yyscanner
);
1387 /* This must go here because YYSTYPE and YYLTYPE are included
1388 * from bison output in section 1.*/
1389 # define yylval yyg->yylval_r
1391 int config_lex_init (yyscan_t
* scanner
);
1393 int config_lex_init_extra (YY_EXTRA_TYPE user_defined
,yyscan_t
* scanner
);
1397 /* %endif End reentrant structures and macros. */
1399 /* Accessor methods to globals.
1400 These are made visible to non-reentrant scanners for convenience. */
1402 int config_lex_destroy (yyscan_t yyscanner
);
1404 int config_get_debug (yyscan_t yyscanner
);
1406 void config_set_debug (int debug_flag
,yyscan_t yyscanner
);
1408 YY_EXTRA_TYPE
config_get_extra (yyscan_t yyscanner
);
1410 void config_set_extra (YY_EXTRA_TYPE user_defined
,yyscan_t yyscanner
);
1412 FILE *config_get_in (yyscan_t yyscanner
);
1414 void config_set_in (FILE * in_str
,yyscan_t yyscanner
);
1416 FILE *config_get_out (yyscan_t yyscanner
);
1418 void config_set_out (FILE * out_str
,yyscan_t yyscanner
);
1420 int config_get_leng (yyscan_t yyscanner
);
1422 char *config_get_text (yyscan_t yyscanner
);
1424 int config_get_lineno (yyscan_t yyscanner
);
1426 void config_set_lineno (int line_number
,yyscan_t yyscanner
);
1428 int config_get_column (yyscan_t yyscanner
);
1430 void config_set_column (int column_no
,yyscan_t yyscanner
);
1432 /* %if-bison-bridge */
1434 YYSTYPE
* config_get_lval (yyscan_t yyscanner
);
1436 void config_set_lval (YYSTYPE
* yylval_param
,yyscan_t yyscanner
);
1440 /* Macros after this point can all be overridden by user definitions in
1444 #ifndef YY_SKIP_YYWRAP
1446 extern "C" int config_wrap (yyscan_t yyscanner
);
1448 extern int config_wrap (yyscan_t yyscanner
);
1452 /* %not-for-header */
1454 /* %ok-for-header */
1459 static void yy_flex_strncpy (char *,yyconst
char *,int ,yyscan_t yyscanner
);
1462 #ifdef YY_NEED_STRLEN
1463 static int yy_flex_strlen (yyconst
char * ,yyscan_t yyscanner
);
1467 /* %if-c-only Standard (non-C++) definition */
1468 /* %not-for-header */
1471 static int yyinput (yyscan_t yyscanner
);
1473 static int input (yyscan_t yyscanner
);
1475 /* %ok-for-header */
1484 /* Amount of stuff to slurp up with each read. */
1485 #ifndef YY_READ_BUF_SIZE
1486 #define YY_READ_BUF_SIZE 8192
1489 /* Copy whatever the last rule matched to the standard output. */
1491 /* %if-c-only Standard (non-C++) definition */
1492 /* This used to be an fputs(), but since the string might contain NUL's,
1493 * we now use fwrite().
1495 #define ECHO do { if (fwrite( yytext, yyleng, 1, yyout )) {} } while (0)
1497 /* %if-c++-only C++ definition */
1501 /* Gets input and stuffs it into "buf". number of characters read, or YY_NULL,
1502 * is returned in "result".
1505 #define YY_INPUT(buf,result,max_size) \
1506 /* %% [5.0] fread()/read() definition of YY_INPUT goes here unless we're doing C++ \ */\
1507 if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \
1511 for ( n = 0; n < max_size && \
1512 (c = getc( yyin )) != EOF && c != '\n'; ++n ) \
1513 buf[n] = (char) c; \
1515 buf[n++] = (char) c; \
1516 if ( c == EOF && ferror( yyin ) ) \
1517 YY_FATAL_ERROR( "input in flex scanner failed" ); \
1523 while ( (result = fread(buf, 1, max_size, yyin))==0 && ferror(yyin)) \
1525 if( errno != EINTR) \
1527 YY_FATAL_ERROR( "input in flex scanner failed" ); \
1535 /* %if-c++-only C++ definition \ */\
1540 /* No semi-colon after return; correct usage is to write "yyterminate();" -
1541 * we don't want an extra ';' after the "return" because that will cause
1542 * some compilers to complain about unreachable statements.
1545 #define yyterminate() return YY_NULL
1548 /* Number of entries by which start-condition stack grows. */
1549 #ifndef YY_START_STACK_INCR
1550 #define YY_START_STACK_INCR 25
1553 /* Report a fatal error. */
1554 #ifndef YY_FATAL_ERROR
1556 #define YY_FATAL_ERROR(msg) yy_fatal_error( msg , yyscanner)
1562 /* %if-tables-serialization structures and prototypes */
1563 /* %not-for-header */
1565 /* %ok-for-header */
1567 /* %not-for-header */
1569 /* %tables-yydmap generated elements */
1571 /* end tables serialization structures and prototypes */
1573 /* %ok-for-header */
1575 /* Default declaration of generated scanner - a define so the user can
1576 * easily add parameters.
1579 #define YY_DECL_IS_OURS 1
1580 /* %if-c-only Standard (non-C++) definition */
1582 extern int config_lex \
1583 (YYSTYPE
* yylval_param
,yyscan_t yyscanner
);
1585 #define YY_DECL int config_lex \
1586 (YYSTYPE * yylval_param , yyscan_t yyscanner)
1588 /* %if-c++-only C++ definition */
1590 #endif /* !YY_DECL */
1592 /* Code executed at the beginning of each rule, after yytext and yyleng
1595 #ifndef YY_USER_ACTION
1596 #define YY_USER_ACTION
1599 /* Code executed at the end of each rule. */
1601 #define YY_BREAK break;
1604 /* %% [6.0] YY_RULE_SETUP definition goes here */
1605 #define YY_RULE_SETUP \
1607 YY_CURRENT_BUFFER_LVALUE->yy_at_bol = \
1608 (yytext[yyleng - 1] == '\n'); \
1611 /* %not-for-header */
1613 /** The main scanner function which does all the work.
1617 register yy_state_type yy_current_state
;
1618 register char *yy_cp
, *yy_bp
;
1619 register int yy_act
;
1620 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
1622 /* %% [7.0] user's declarations go here */
1623 #line 74 "libmemcached/options/scanner.l"
1627 #line 1628 "libmemcached/options/scanner.cc"
1629 yylval
= yylval_param
;
1631 if ( !yyg
->yy_init
)
1639 if ( ! yyg
->yy_start
)
1640 yyg
->yy_start
= 1; /* first start state */
1656 if ( ! YY_CURRENT_BUFFER
) {
1657 config_ensure_buffer_stack (yyscanner
);
1658 YY_CURRENT_BUFFER_LVALUE
=
1659 config__create_buffer(yyin
,YY_BUF_SIZE
,yyscanner
);
1662 config__load_buffer_state(yyscanner
);
1665 while ( 1 ) /* loops until end-of-file is reached */
1667 /* %% [8.0] yymore()-related code goes here */
1668 yy_cp
= yyg
->yy_c_buf_p
;
1670 /* Support of yytext. */
1671 *yy_cp
= yyg
->yy_hold_char
;
1673 /* yy_bp points to the position in yy_ch_buf of the start of
1678 /* %% [9.0] code to set up and find next match goes here */
1679 yy_current_state
= yyg
->yy_start
;
1680 yy_current_state
+= YY_AT_BOL();
1684 register YY_CHAR yy_c
= yy_ec
[YY_SC_TO_UI(*yy_cp
)];
1685 if ( yy_accept
[yy_current_state
] )
1687 yyg
->yy_last_accepting_state
= yy_current_state
;
1688 yyg
->yy_last_accepting_cpos
= yy_cp
;
1690 while ( yy_chk
[yy_base
[yy_current_state
] + yy_c
] != yy_current_state
)
1692 yy_current_state
= (int) yy_def
[yy_current_state
];
1693 if ( yy_current_state
>= 769 )
1694 yy_c
= yy_meta
[(unsigned int) yy_c
];
1696 yy_current_state
= yy_nxt
[yy_base
[yy_current_state
] + (unsigned int) yy_c
];
1699 while ( yy_base
[yy_current_state
] != 2094 );
1702 /* %% [10.0] code to find the action number goes here */
1703 yy_act
= yy_accept
[yy_current_state
];
1705 { /* have to back up */
1706 yy_cp
= yyg
->yy_last_accepting_cpos
;
1707 yy_current_state
= yyg
->yy_last_accepting_state
;
1708 yy_act
= yy_accept
[yy_current_state
];
1711 YY_DO_BEFORE_ACTION
;
1713 /* %% [11.0] code for yylineno update goes here */
1715 do_action
: /* This label is used only to access EOF actions. */
1717 /* %% [12.0] debug code goes here */
1718 if ( yy_flex_debug
)
1721 fprintf( stderr
, "--scanner backing up\n" );
1722 else if ( yy_act
< 90 )
1723 fprintf( stderr
, "--accepting rule at line %ld (\"%s\")\n",
1724 (long)yy_rule_linenum
[yy_act
], yytext
);
1725 else if ( yy_act
== 90 )
1726 fprintf( stderr
, "--accepting default rule (\"%s\")\n",
1728 else if ( yy_act
== 91 )
1729 fprintf( stderr
, "--(end of buffer or a NUL)\n" );
1731 fprintf( stderr
, "--EOF (start condition %d)\n", YY_START
);
1735 { /* beginning of action switch */
1736 /* %% [13.0] actions go here */
1737 case 0: /* must back up */
1738 /* undo the effects of YY_DO_BEFORE_ACTION */
1739 *yy_cp
= yyg
->yy_hold_char
;
1740 yy_cp
= yyg
->yy_last_accepting_cpos
;
1741 yy_current_state
= yyg
->yy_last_accepting_state
;
1742 goto yy_find_action
;
1746 #line 77 "libmemcached/options/scanner.l"
1747 { return yytext
[0];}
1751 #line 79 "libmemcached/options/scanner.l"
1752 { yylval
->number
= atoi(yytext
); return (NUMBER
); }
1756 #line 81 "libmemcached/options/scanner.l"
1757 { yylval
->server
.port
= atoi(yytext
+1); return PORT
; }
1761 #line 83 "libmemcached/options/scanner.l"
1762 { yylval
->server
.weight
= atoi(yytext
+2); return WEIGHT_START
; }
1765 /* rule 5 can match eol */
1767 #line 85 "libmemcached/options/scanner.l"
1768 ; /* skip whitespace */
1771 *yy_cp
= yyg
->yy_hold_char
; /* undo effects of setting up yytext */
1772 yyg
->yy_c_buf_p
= yy_cp
-= 1;
1773 YY_DO_BEFORE_ACTION
; /* set up yytext again */
1775 #line 88 "libmemcached/options/scanner.l"
1782 #line 92 "libmemcached/options/scanner.l"
1783 { yyextra
->begin
= yytext
; yyextra
->set_server(); return SERVER
; }
1787 #line 94 "libmemcached/options/scanner.l"
1788 { yyextra
->begin
= yytext
; return VERIFY_KEY
; }
1792 #line 95 "libmemcached/options/scanner.l"
1793 { yyextra
->begin
= yytext
; return VERIFY_KEY
; }
1797 #line 96 "libmemcached/options/scanner.l"
1798 { yyextra
->begin
= yytext
; return AUTO_EJECT_HOSTS
; }
1802 #line 97 "libmemcached/options/scanner.l"
1803 { yyextra
->begin
= yytext
; return AUTO_EJECT_HOSTS
; }
1807 #line 98 "libmemcached/options/scanner.l"
1808 { yyextra
->begin
= yytext
; return BINARY_PROTOCOL
; }
1812 #line 99 "libmemcached/options/scanner.l"
1813 { yyextra
->begin
= yytext
; return BINARY_PROTOCOL
; }
1817 #line 100 "libmemcached/options/scanner.l"
1818 { yyextra
->begin
= yytext
; return BUFFER_REQUESTS
; }
1822 #line 101 "libmemcached/options/scanner.l"
1823 { yyextra
->begin
= yytext
; return BUFFER_REQUESTS
; }
1827 #line 102 "libmemcached/options/scanner.l"
1828 { yyextra
->begin
= yytext
; return CONFIGURE_FILE
; }
1832 #line 103 "libmemcached/options/scanner.l"
1833 { yyextra
->begin
= yytext
; return CONFIGURE_FILE
; }
1837 #line 104 "libmemcached/options/scanner.l"
1838 { yyextra
->begin
= yytext
; return CONNECT_TIMEOUT
; }
1842 #line 105 "libmemcached/options/scanner.l"
1843 { yyextra
->begin
= yytext
; return CONNECT_TIMEOUT
; }
1847 #line 106 "libmemcached/options/scanner.l"
1848 { yyextra
->begin
= yytext
; return DISTRIBUTION
; }
1852 #line 107 "libmemcached/options/scanner.l"
1853 { yyextra
->begin
= yytext
; return HASH
; }
1857 #line 108 "libmemcached/options/scanner.l"
1858 { yyextra
->begin
= yytext
; return HASH_WITH_PREFIX_KEY
; }
1862 #line 109 "libmemcached/options/scanner.l"
1863 { yyextra
->begin
= yytext
; return HASH_WITH_PREFIX_KEY
; }
1867 #line 110 "libmemcached/options/scanner.l"
1868 { yyextra
->begin
= yytext
; return IO_BYTES_WATERMARK
; }
1872 #line 111 "libmemcached/options/scanner.l"
1873 { yyextra
->begin
= yytext
; return IO_BYTES_WATERMARK
; }
1877 #line 112 "libmemcached/options/scanner.l"
1878 { yyextra
->begin
= yytext
; return IO_KEY_PREFETCH
; }
1882 #line 113 "libmemcached/options/scanner.l"
1883 { yyextra
->begin
= yytext
; return IO_KEY_PREFETCH
; }
1887 #line 114 "libmemcached/options/scanner.l"
1888 { yyextra
->begin
= yytext
; return IO_MSG_WATERMARK
; }
1892 #line 115 "libmemcached/options/scanner.l"
1893 { yyextra
->begin
= yytext
; return IO_MSG_WATERMARK
; }
1897 #line 116 "libmemcached/options/scanner.l"
1898 { yyextra
->begin
= yytext
; return NOREPLY
; }
1902 #line 117 "libmemcached/options/scanner.l"
1903 { yyextra
->begin
= yytext
; return NUMBER_OF_REPLICAS
; }
1907 #line 118 "libmemcached/options/scanner.l"
1908 { yyextra
->begin
= yytext
; return NUMBER_OF_REPLICAS
; }
1912 #line 119 "libmemcached/options/scanner.l"
1913 { yyextra
->begin
= yytext
; return POLL_TIMEOUT
; }
1917 #line 120 "libmemcached/options/scanner.l"
1918 { yyextra
->begin
= yytext
; return POLL_TIMEOUT
; }
1922 #line 121 "libmemcached/options/scanner.l"
1923 { yyextra
->begin
= yytext
; return RANDOMIZE_REPLICA_READ
; }
1927 #line 122 "libmemcached/options/scanner.l"
1928 { yyextra
->begin
= yytext
; return RANDOMIZE_REPLICA_READ
; }
1932 #line 123 "libmemcached/options/scanner.l"
1933 { yyextra
->begin
= yytext
; return RCV_TIMEOUT
; }
1937 #line 124 "libmemcached/options/scanner.l"
1938 { yyextra
->begin
= yytext
; return RCV_TIMEOUT
; }
1942 #line 125 "libmemcached/options/scanner.l"
1943 { yyextra
->begin
= yytext
; return RETRY_TIMEOUT
; }
1947 #line 126 "libmemcached/options/scanner.l"
1948 { yyextra
->begin
= yytext
; return RETRY_TIMEOUT
; }
1952 #line 127 "libmemcached/options/scanner.l"
1953 { yyextra
->begin
= yytext
; return SERVER_FAILURE_LIMIT
; }
1957 #line 128 "libmemcached/options/scanner.l"
1958 { yyextra
->begin
= yytext
; return SERVER_FAILURE_LIMIT
; }
1962 #line 129 "libmemcached/options/scanner.l"
1963 { yyextra
->begin
= yytext
; return SND_TIMEOUT
; }
1967 #line 130 "libmemcached/options/scanner.l"
1968 { yyextra
->begin
= yytext
; return SND_TIMEOUT
; }
1972 #line 131 "libmemcached/options/scanner.l"
1973 { yyextra
->begin
= yytext
; return SOCKET_RECV_SIZE
; }
1977 #line 132 "libmemcached/options/scanner.l"
1978 { yyextra
->begin
= yytext
; return SOCKET_RECV_SIZE
; }
1982 #line 133 "libmemcached/options/scanner.l"
1983 { yyextra
->begin
= yytext
; return SOCKET_SEND_SIZE
; }
1987 #line 134 "libmemcached/options/scanner.l"
1988 { yyextra
->begin
= yytext
; return SOCKET_SEND_SIZE
; }
1992 #line 135 "libmemcached/options/scanner.l"
1993 { yyextra
->begin
= yytext
; return SORT_HOSTS
; }
1997 #line 136 "libmemcached/options/scanner.l"
1998 { yyextra
->begin
= yytext
; return SORT_HOSTS
; }
2002 #line 137 "libmemcached/options/scanner.l"
2003 { yyextra
->begin
= yytext
; return SUPPORT_CAS
; }
2007 #line 138 "libmemcached/options/scanner.l"
2008 { yyextra
->begin
= yytext
; return SUPPORT_CAS
; }
2012 #line 139 "libmemcached/options/scanner.l"
2013 { yyextra
->begin
= yytext
; return _TCP_NODELAY
; }
2017 #line 140 "libmemcached/options/scanner.l"
2018 { yyextra
->begin
= yytext
; return _TCP_NODELAY
; }
2022 #line 141 "libmemcached/options/scanner.l"
2023 { yyextra
->begin
= yytext
; return _TCP_KEEPALIVE
; }
2027 #line 142 "libmemcached/options/scanner.l"
2028 { yyextra
->begin
= yytext
; return _TCP_KEEPALIVE
; }
2032 #line 143 "libmemcached/options/scanner.l"
2033 { yyextra
->begin
= yytext
; return _TCP_KEEPIDLE
; }
2037 #line 144 "libmemcached/options/scanner.l"
2038 { yyextra
->begin
= yytext
; return _TCP_KEEPIDLE
; }
2042 #line 145 "libmemcached/options/scanner.l"
2043 { yyextra
->begin
= yytext
; return USER_DATA
; }
2047 #line 146 "libmemcached/options/scanner.l"
2048 { yyextra
->begin
= yytext
; return USER_DATA
; }
2052 #line 147 "libmemcached/options/scanner.l"
2053 { yyextra
->begin
= yytext
; return USE_UDP
; }
2057 #line 148 "libmemcached/options/scanner.l"
2058 { yyextra
->begin
= yytext
; return USE_UDP
; }
2062 #line 150 "libmemcached/options/scanner.l"
2063 { yyextra
->begin
= yytext
; return PREFIX_KEY
; }
2067 #line 151 "libmemcached/options/scanner.l"
2068 { yyextra
->begin
= yytext
; return PREFIX_KEY
; }
2072 #line 153 "libmemcached/options/scanner.l"
2073 { yyextra
->begin
= yytext
; return INCLUDE
; }
2077 #line 154 "libmemcached/options/scanner.l"
2078 { yyextra
->begin
= yytext
; return RESET
; }
2082 #line 155 "libmemcached/options/scanner.l"
2083 { yyextra
->begin
= yytext
; return PARSER_DEBUG
; }
2087 #line 156 "libmemcached/options/scanner.l"
2088 { yyextra
->begin
= yytext
; return SERVERS
; }
2092 #line 157 "libmemcached/options/scanner.l"
2093 { yyextra
->begin
= yytext
; return END
; }
2097 #line 158 "libmemcached/options/scanner.l"
2098 { yyextra
->begin
= yytext
; return ERROR
; }
2102 #line 160 "libmemcached/options/scanner.l"
2107 #line 161 "libmemcached/options/scanner.l"
2112 #line 164 "libmemcached/options/scanner.l"
2114 yyextra
->begin
= yytext
;
2115 return UNKNOWN_OPTION
;
2120 #line 169 "libmemcached/options/scanner.l"
2121 { return CONSISTENT
; }
2125 #line 170 "libmemcached/options/scanner.l"
2130 #line 171 "libmemcached/options/scanner.l"
2135 #line 173 "libmemcached/options/scanner.l"
2140 #line 174 "libmemcached/options/scanner.l"
2145 #line 175 "libmemcached/options/scanner.l"
2150 #line 176 "libmemcached/options/scanner.l"
2151 { return FNV1A_64
; }
2155 #line 177 "libmemcached/options/scanner.l"
2160 #line 178 "libmemcached/options/scanner.l"
2161 { return FNV1A_32
; }
2165 #line 179 "libmemcached/options/scanner.l"
2170 #line 180 "libmemcached/options/scanner.l"
2175 #line 181 "libmemcached/options/scanner.l"
2180 #line 183 "libmemcached/options/scanner.l"
2182 yylval
->server
.port
= MEMCACHED_DEFAULT_PORT
;
2183 yylval
->server
.weight
= 1;
2184 yylval
->server
.c_str
= yyextra
->set_hostname(yytext
, yyleng
);
2185 if (yylval
->server
.c_str
)
2186 yylval
->server
.length
= yyleng
;
2192 #line 192 "libmemcached/options/scanner.l"
2194 if (yyextra
->is_server())
2196 yylval
->server
.port
= MEMCACHED_DEFAULT_PORT
;
2197 yylval
->server
.weight
= 1;
2198 yylval
->server
.c_str
= yyextra
->set_hostname(yytext
, yyleng
);
2199 if (yylval
->server
.c_str
)
2200 yylval
->server
.length
= yyleng
;
2205 yylval
->string
.c_str
= yytext
;
2206 yylval
->string
.length
= yyleng
;
2213 #line 210 "libmemcached/options/scanner.l"
2215 yylval
->string
.c_str
= yytext
;
2216 yylval
->string
.length
= yyleng
;
2217 return QUOTED_STRING
;
2222 #line 216 "libmemcached/options/scanner.l"
2224 yyextra
->begin
= yytext
;
2230 #line 221 "libmemcached/options/scanner.l"
2233 #line 2234 "libmemcached/options/scanner.cc"
2234 case YY_STATE_EOF(INITIAL
):
2237 case YY_END_OF_BUFFER
:
2239 /* Amount of text matched not including the EOB char. */
2240 int yy_amount_of_matched_text
= (int) (yy_cp
- yyg
->yytext_ptr
) - 1;
2242 /* Undo the effects of YY_DO_BEFORE_ACTION. */
2243 *yy_cp
= yyg
->yy_hold_char
;
2244 YY_RESTORE_YY_MORE_OFFSET
2246 if ( YY_CURRENT_BUFFER_LVALUE
->yy_buffer_status
== YY_BUFFER_NEW
)
2248 /* We're scanning a new file or input source. It's
2249 * possible that this happened because the user
2250 * just pointed yyin at a new source and called
2251 * config_lex(). If so, then we have to assure
2252 * consistency between YY_CURRENT_BUFFER and our
2253 * globals. Here is the right place to do so, because
2254 * this is the first action (other than possibly a
2255 * back-up) that will match for the new input source.
2257 yyg
->yy_n_chars
= YY_CURRENT_BUFFER_LVALUE
->yy_n_chars
;
2258 YY_CURRENT_BUFFER_LVALUE
->yy_input_file
= yyin
;
2259 YY_CURRENT_BUFFER_LVALUE
->yy_buffer_status
= YY_BUFFER_NORMAL
;
2262 /* Note that here we test for yy_c_buf_p "<=" to the position
2263 * of the first EOB in the buffer, since yy_c_buf_p will
2264 * already have been incremented past the NUL character
2265 * (since all states make transitions on EOB to the
2266 * end-of-buffer state). Contrast this with the test
2269 if ( yyg
->yy_c_buf_p
<= &YY_CURRENT_BUFFER_LVALUE
->yy_ch_buf
[yyg
->yy_n_chars
] )
2270 { /* This was really a NUL. */
2271 yy_state_type yy_next_state
;
2273 yyg
->yy_c_buf_p
= yyg
->yytext_ptr
+ yy_amount_of_matched_text
;
2275 yy_current_state
= yy_get_previous_state( yyscanner
);
2277 /* Okay, we're now positioned to make the NUL
2278 * transition. We couldn't have
2279 * yy_get_previous_state() go ahead and do it
2280 * for us because it doesn't know how to deal
2281 * with the possibility of jamming (and we don't
2282 * want to build jamming into it because then it
2283 * will run more slowly).
2286 yy_next_state
= yy_try_NUL_trans( yy_current_state
, yyscanner
);
2288 yy_bp
= yyg
->yytext_ptr
+ YY_MORE_ADJ
;
2290 if ( yy_next_state
)
2292 /* Consume the NUL. */
2293 yy_cp
= ++yyg
->yy_c_buf_p
;
2294 yy_current_state
= yy_next_state
;
2300 /* %% [14.0] code to do back-up for compressed tables and set up yy_cp goes here */
2301 yy_cp
= yyg
->yy_c_buf_p
;
2302 goto yy_find_action
;
2306 else switch ( yy_get_next_buffer( yyscanner
) )
2308 case EOB_ACT_END_OF_FILE
:
2310 yyg
->yy_did_buffer_switch_on_eof
= 0;
2312 if ( config_wrap(yyscanner
) )
2314 /* Note: because we've taken care in
2315 * yy_get_next_buffer() to have set up
2316 * yytext, we can now set up
2317 * yy_c_buf_p so that if some total
2318 * hoser (like flex itself) wants to
2319 * call the scanner after we return the
2320 * YY_NULL, it'll still work - another
2321 * YY_NULL will get returned.
2323 yyg
->yy_c_buf_p
= yyg
->yytext_ptr
+ YY_MORE_ADJ
;
2325 yy_act
= YY_STATE_EOF(YY_START
);
2331 if ( ! yyg
->yy_did_buffer_switch_on_eof
)
2337 case EOB_ACT_CONTINUE_SCAN
:
2339 yyg
->yytext_ptr
+ yy_amount_of_matched_text
;
2341 yy_current_state
= yy_get_previous_state( yyscanner
);
2343 yy_cp
= yyg
->yy_c_buf_p
;
2344 yy_bp
= yyg
->yytext_ptr
+ YY_MORE_ADJ
;
2347 case EOB_ACT_LAST_MATCH
:
2349 &YY_CURRENT_BUFFER_LVALUE
->yy_ch_buf
[yyg
->yy_n_chars
];
2351 yy_current_state
= yy_get_previous_state( yyscanner
);
2353 yy_cp
= yyg
->yy_c_buf_p
;
2354 yy_bp
= yyg
->yytext_ptr
+ YY_MORE_ADJ
;
2355 goto yy_find_action
;
2362 "fatal flex scanner internal error--no action found" );
2363 } /* end of action switch */
2364 } /* end of scanning one token */
2365 } /* end of config_lex */
2366 /* %ok-for-header */
2369 /* %not-for-header */
2371 /* %ok-for-header */
2375 /* yy_get_next_buffer - try to read in a new buffer
2377 * Returns a code representing an action:
2378 * EOB_ACT_LAST_MATCH -
2379 * EOB_ACT_CONTINUE_SCAN - continue scanning from current position
2380 * EOB_ACT_END_OF_FILE - end of file
2383 static int yy_get_next_buffer (yyscan_t yyscanner
)
2388 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
2389 register char *dest
= YY_CURRENT_BUFFER_LVALUE
->yy_ch_buf
;
2390 register char *source
= yyg
->yytext_ptr
;
2391 register int number_to_move
, i
;
2394 if ( yyg
->yy_c_buf_p
> &YY_CURRENT_BUFFER_LVALUE
->yy_ch_buf
[yyg
->yy_n_chars
+ 1] )
2396 "fatal flex scanner internal error--end of buffer missed" );
2398 if ( YY_CURRENT_BUFFER_LVALUE
->yy_fill_buffer
== 0 )
2399 { /* Don't try to fill the buffer, so this is an EOF. */
2400 if ( yyg
->yy_c_buf_p
- yyg
->yytext_ptr
- YY_MORE_ADJ
== 1 )
2402 /* We matched a single character, the EOB, so
2403 * treat this as a final EOF.
2405 return EOB_ACT_END_OF_FILE
;
2410 /* We matched some text prior to the EOB, first
2413 return EOB_ACT_LAST_MATCH
;
2417 /* Try to read more data. */
2419 /* First move last chars to start of buffer. */
2420 number_to_move
= (int) (yyg
->yy_c_buf_p
- yyg
->yytext_ptr
) - 1;
2422 for ( i
= 0; i
< number_to_move
; ++i
)
2423 *(dest
++) = *(source
++);
2425 if ( YY_CURRENT_BUFFER_LVALUE
->yy_buffer_status
== YY_BUFFER_EOF_PENDING
)
2426 /* don't do the read, it's not guaranteed to return an EOF,
2429 YY_CURRENT_BUFFER_LVALUE
->yy_n_chars
= yyg
->yy_n_chars
= 0;
2434 YY_CURRENT_BUFFER_LVALUE
->yy_buf_size
- number_to_move
- 1;
2436 while ( num_to_read
<= 0 )
2437 { /* Not enough room in the buffer - grow it. */
2439 /* just a shorter name for the current buffer */
2440 YY_BUFFER_STATE b
= YY_CURRENT_BUFFER
;
2442 int yy_c_buf_p_offset
=
2443 (int) (yyg
->yy_c_buf_p
- b
->yy_ch_buf
);
2445 if ( b
->yy_is_our_buffer
)
2447 int new_size
= b
->yy_buf_size
* 2;
2449 if ( new_size
<= 0 )
2450 b
->yy_buf_size
+= b
->yy_buf_size
/ 8;
2452 b
->yy_buf_size
*= 2;
2454 b
->yy_ch_buf
= (char *)
2455 /* Include room in for 2 EOB chars. */
2456 config_realloc((void *) b
->yy_ch_buf
,b
->yy_buf_size
+ 2 ,yyscanner
);
2459 /* Can't grow it, we don't own it. */
2462 if ( ! b
->yy_ch_buf
)
2464 "fatal error - scanner input buffer overflow" );
2466 yyg
->yy_c_buf_p
= &b
->yy_ch_buf
[yy_c_buf_p_offset
];
2468 num_to_read
= YY_CURRENT_BUFFER_LVALUE
->yy_buf_size
-
2473 if ( num_to_read
> YY_READ_BUF_SIZE
)
2474 num_to_read
= YY_READ_BUF_SIZE
;
2476 /* Read in more data. */
2477 YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE
->yy_ch_buf
[number_to_move
]),
2478 yyg
->yy_n_chars
, (size_t) num_to_read
);
2480 YY_CURRENT_BUFFER_LVALUE
->yy_n_chars
= yyg
->yy_n_chars
;
2483 if ( yyg
->yy_n_chars
== 0 )
2485 if ( number_to_move
== YY_MORE_ADJ
)
2487 ret_val
= EOB_ACT_END_OF_FILE
;
2488 config_restart(yyin
,yyscanner
);
2493 ret_val
= EOB_ACT_LAST_MATCH
;
2494 YY_CURRENT_BUFFER_LVALUE
->yy_buffer_status
=
2495 YY_BUFFER_EOF_PENDING
;
2500 ret_val
= EOB_ACT_CONTINUE_SCAN
;
2502 if ((yy_size_t
) (yyg
->yy_n_chars
+ number_to_move
) > YY_CURRENT_BUFFER_LVALUE
->yy_buf_size
) {
2503 /* Extend the array by 50%, plus the number we really need. */
2504 yy_size_t new_size
= yyg
->yy_n_chars
+ number_to_move
+ (yyg
->yy_n_chars
>> 1);
2505 YY_CURRENT_BUFFER_LVALUE
->yy_ch_buf
= (char *) config_realloc((void *) YY_CURRENT_BUFFER_LVALUE
->yy_ch_buf
,new_size
,yyscanner
);
2506 if ( ! YY_CURRENT_BUFFER_LVALUE
->yy_ch_buf
)
2507 YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" );
2510 yyg
->yy_n_chars
+= number_to_move
;
2511 YY_CURRENT_BUFFER_LVALUE
->yy_ch_buf
[yyg
->yy_n_chars
] = YY_END_OF_BUFFER_CHAR
;
2512 YY_CURRENT_BUFFER_LVALUE
->yy_ch_buf
[yyg
->yy_n_chars
+ 1] = YY_END_OF_BUFFER_CHAR
;
2514 yyg
->yytext_ptr
= &YY_CURRENT_BUFFER_LVALUE
->yy_ch_buf
[0];
2519 /* yy_get_previous_state - get the state just before the EOB char was reached */
2522 /* %not-for-header */
2524 static yy_state_type
yy_get_previous_state (yyscan_t yyscanner
)
2529 register yy_state_type yy_current_state
;
2530 register char *yy_cp
;
2531 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
2533 /* %% [15.0] code to get the start state into yy_current_state goes here */
2534 yy_current_state
= yyg
->yy_start
;
2535 yy_current_state
+= YY_AT_BOL();
2537 for ( yy_cp
= yyg
->yytext_ptr
+ YY_MORE_ADJ
; yy_cp
< yyg
->yy_c_buf_p
; ++yy_cp
)
2539 /* %% [16.0] code to find the next state goes here */
2540 register YY_CHAR yy_c
= (*yy_cp
? yy_ec
[YY_SC_TO_UI(*yy_cp
)] : 1);
2541 if ( yy_accept
[yy_current_state
] )
2543 yyg
->yy_last_accepting_state
= yy_current_state
;
2544 yyg
->yy_last_accepting_cpos
= yy_cp
;
2546 while ( yy_chk
[yy_base
[yy_current_state
] + yy_c
] != yy_current_state
)
2548 yy_current_state
= (int) yy_def
[yy_current_state
];
2549 if ( yy_current_state
>= 769 )
2550 yy_c
= yy_meta
[(unsigned int) yy_c
];
2552 yy_current_state
= yy_nxt
[yy_base
[yy_current_state
] + (unsigned int) yy_c
];
2555 return yy_current_state
;
2558 /* yy_try_NUL_trans - try to make a transition on the NUL character
2561 * next_state = yy_try_NUL_trans( current_state );
2564 static yy_state_type
yy_try_NUL_trans (yy_state_type yy_current_state
, yyscan_t yyscanner
)
2569 register int yy_is_jam
;
2570 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
; /* This var may be unused depending upon options. */
2571 /* %% [17.0] code to find the next state, and perhaps do backing up, goes here */
2572 register char *yy_cp
= yyg
->yy_c_buf_p
;
2574 register YY_CHAR yy_c
= 1;
2575 if ( yy_accept
[yy_current_state
] )
2577 yyg
->yy_last_accepting_state
= yy_current_state
;
2578 yyg
->yy_last_accepting_cpos
= yy_cp
;
2580 while ( yy_chk
[yy_base
[yy_current_state
] + yy_c
] != yy_current_state
)
2582 yy_current_state
= (int) yy_def
[yy_current_state
];
2583 if ( yy_current_state
>= 769 )
2584 yy_c
= yy_meta
[(unsigned int) yy_c
];
2586 yy_current_state
= yy_nxt
[yy_base
[yy_current_state
] + (unsigned int) yy_c
];
2587 yy_is_jam
= (yy_current_state
== 768);
2589 return yy_is_jam
? 0 : yy_current_state
;
2599 static int yyinput (yyscan_t yyscanner
)
2601 static int input (yyscan_t yyscanner
)
2609 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
2611 *yyg
->yy_c_buf_p
= yyg
->yy_hold_char
;
2613 if ( *yyg
->yy_c_buf_p
== YY_END_OF_BUFFER_CHAR
)
2615 /* yy_c_buf_p now points to the character we want to return.
2616 * If this occurs *before* the EOB characters, then it's a
2617 * valid NUL; if not, then we've hit the end of the buffer.
2619 if ( yyg
->yy_c_buf_p
< &YY_CURRENT_BUFFER_LVALUE
->yy_ch_buf
[yyg
->yy_n_chars
] )
2620 /* This was really a NUL. */
2621 *yyg
->yy_c_buf_p
= '\0';
2624 { /* need more input */
2625 int offset
= yyg
->yy_c_buf_p
- yyg
->yytext_ptr
;
2628 switch ( yy_get_next_buffer( yyscanner
) )
2630 case EOB_ACT_LAST_MATCH
:
2631 /* This happens because yy_g_n_b()
2632 * sees that we've accumulated a
2633 * token and flags that we need to
2634 * try matching the token before
2635 * proceeding. But for input(),
2636 * there's no matching to consider.
2637 * So convert the EOB_ACT_LAST_MATCH
2638 * to EOB_ACT_END_OF_FILE.
2641 /* Reset buffer status. */
2642 config_restart(yyin
,yyscanner
);
2646 case EOB_ACT_END_OF_FILE
:
2648 if ( config_wrap(yyscanner
) )
2651 if ( ! yyg
->yy_did_buffer_switch_on_eof
)
2654 return yyinput(yyscanner
);
2656 return input(yyscanner
);
2660 case EOB_ACT_CONTINUE_SCAN
:
2661 yyg
->yy_c_buf_p
= yyg
->yytext_ptr
+ offset
;
2667 c
= *(unsigned char *) yyg
->yy_c_buf_p
; /* cast for 8-bit char's */
2668 *yyg
->yy_c_buf_p
= '\0'; /* preserve yytext */
2669 yyg
->yy_hold_char
= *++yyg
->yy_c_buf_p
;
2671 /* %% [19.0] update BOL and yylineno */
2672 YY_CURRENT_BUFFER_LVALUE
->yy_at_bol
= (c
== '\n');
2677 #endif /* ifndef YY_NO_INPUT */
2680 /** Immediately switch to a different input stream.
2681 * @param input_file A readable stream.
2682 * @param yyscanner The scanner object.
2683 * @note This function does not reset the start condition to @c INITIAL .
2686 void config_restart (FILE * input_file
, yyscan_t yyscanner
)
2691 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
2693 if ( ! YY_CURRENT_BUFFER
){
2694 config_ensure_buffer_stack (yyscanner
);
2695 YY_CURRENT_BUFFER_LVALUE
=
2696 config__create_buffer(yyin
,YY_BUF_SIZE
,yyscanner
);
2699 config__init_buffer(YY_CURRENT_BUFFER
,input_file
,yyscanner
);
2700 config__load_buffer_state(yyscanner
);
2703 /** Switch to a different input buffer.
2704 * @param new_buffer The new input buffer.
2705 * @param yyscanner The scanner object.
2708 void config__switch_to_buffer (YY_BUFFER_STATE new_buffer
, yyscan_t yyscanner
)
2713 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
2715 /* TODO. We should be able to replace this entire function body
2717 * config_pop_buffer_state();
2718 * config_push_buffer_state(new_buffer);
2720 config_ensure_buffer_stack (yyscanner
);
2721 if ( YY_CURRENT_BUFFER
== new_buffer
)
2724 if ( YY_CURRENT_BUFFER
)
2726 /* Flush out information for old buffer. */
2727 *yyg
->yy_c_buf_p
= yyg
->yy_hold_char
;
2728 YY_CURRENT_BUFFER_LVALUE
->yy_buf_pos
= yyg
->yy_c_buf_p
;
2729 YY_CURRENT_BUFFER_LVALUE
->yy_n_chars
= yyg
->yy_n_chars
;
2732 YY_CURRENT_BUFFER_LVALUE
= new_buffer
;
2733 config__load_buffer_state(yyscanner
);
2735 /* We don't actually know whether we did this switch during
2736 * EOF (config_wrap()) processing, but the only time this flag
2737 * is looked at is after config_wrap() is called, so it's safe
2738 * to go ahead and always set it.
2740 yyg
->yy_did_buffer_switch_on_eof
= 1;
2744 static void config__load_buffer_state (yyscan_t yyscanner
)
2749 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
2750 yyg
->yy_n_chars
= YY_CURRENT_BUFFER_LVALUE
->yy_n_chars
;
2751 yyg
->yytext_ptr
= yyg
->yy_c_buf_p
= YY_CURRENT_BUFFER_LVALUE
->yy_buf_pos
;
2752 yyin
= YY_CURRENT_BUFFER_LVALUE
->yy_input_file
;
2753 yyg
->yy_hold_char
= *yyg
->yy_c_buf_p
;
2756 /** Allocate and initialize an input buffer state.
2757 * @param file A readable stream.
2758 * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE.
2759 * @param yyscanner The scanner object.
2760 * @return the allocated buffer state.
2763 YY_BUFFER_STATE
config__create_buffer (FILE * file
, int size
, yyscan_t yyscanner
)
2770 b
= (YY_BUFFER_STATE
) config_alloc(sizeof( struct yy_buffer_state
) ,yyscanner
);
2772 YY_FATAL_ERROR( "out of dynamic memory in config__create_buffer()" );
2774 b
->yy_buf_size
= size
;
2776 /* yy_ch_buf has to be 2 characters longer than the size given because
2777 * we need to put in 2 end-of-buffer characters.
2779 b
->yy_ch_buf
= (char *) config_alloc(b
->yy_buf_size
+ 2 ,yyscanner
);
2780 if ( ! b
->yy_ch_buf
)
2781 YY_FATAL_ERROR( "out of dynamic memory in config__create_buffer()" );
2783 b
->yy_is_our_buffer
= 1;
2785 config__init_buffer(b
,file
,yyscanner
);
2790 /** Destroy the buffer.
2791 * @param b a buffer created with config__create_buffer()
2792 * @param yyscanner The scanner object.
2795 void config__delete_buffer (YY_BUFFER_STATE b
, yyscan_t yyscanner
)
2800 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
2805 if ( b
== YY_CURRENT_BUFFER
) /* Not sure if we should pop here. */
2806 YY_CURRENT_BUFFER_LVALUE
= (YY_BUFFER_STATE
) 0;
2808 if ( b
->yy_is_our_buffer
)
2809 config_free((void *) b
->yy_ch_buf
,yyscanner
);
2811 config_free((void *) b
,yyscanner
);
2817 extern int isatty (int );
2818 #endif /* __cplusplus */
2825 /* Initializes or reinitializes a buffer.
2826 * This function is sometimes called more than once on the same buffer,
2827 * such as during a config_restart() or at EOF.
2830 static void config__init_buffer (YY_BUFFER_STATE b
, FILE * file
, yyscan_t yyscanner
)
2837 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
2839 config__flush_buffer(b
,yyscanner
);
2841 b
->yy_input_file
= file
;
2842 b
->yy_fill_buffer
= 1;
2844 /* If b is the current buffer, then config__init_buffer was _probably_
2845 * called from config_restart() or through yy_get_next_buffer.
2846 * In that case, we don't want to reset the lineno or column.
2848 if (b
!= YY_CURRENT_BUFFER
){
2849 b
->yy_bs_lineno
= 1;
2850 b
->yy_bs_column
= 0;
2855 b
->yy_is_interactive
= file
? (isatty( fileno(file
) ) > 0) : 0;
2863 /** Discard all buffered characters. On the next scan, YY_INPUT will be called.
2864 * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER.
2865 * @param yyscanner The scanner object.
2868 void config__flush_buffer (YY_BUFFER_STATE b
, yyscan_t yyscanner
)
2873 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
2879 /* We always need two end-of-buffer characters. The first causes
2880 * a transition to the end-of-buffer state. The second causes
2881 * a jam in that state.
2883 b
->yy_ch_buf
[0] = YY_END_OF_BUFFER_CHAR
;
2884 b
->yy_ch_buf
[1] = YY_END_OF_BUFFER_CHAR
;
2886 b
->yy_buf_pos
= &b
->yy_ch_buf
[0];
2889 b
->yy_buffer_status
= YY_BUFFER_NEW
;
2891 if ( b
== YY_CURRENT_BUFFER
)
2892 config__load_buffer_state(yyscanner
);
2896 /** Pushes the new state onto the stack. The new state becomes
2897 * the current state. This function will allocate the stack
2899 * @param new_buffer The new state.
2900 * @param yyscanner The scanner object.
2903 void config_push_buffer_state (YY_BUFFER_STATE new_buffer
, yyscan_t yyscanner
)
2908 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
2909 if (new_buffer
== NULL
)
2912 config_ensure_buffer_stack(yyscanner
);
2914 /* This block is copied from config__switch_to_buffer. */
2915 if ( YY_CURRENT_BUFFER
)
2917 /* Flush out information for old buffer. */
2918 *yyg
->yy_c_buf_p
= yyg
->yy_hold_char
;
2919 YY_CURRENT_BUFFER_LVALUE
->yy_buf_pos
= yyg
->yy_c_buf_p
;
2920 YY_CURRENT_BUFFER_LVALUE
->yy_n_chars
= yyg
->yy_n_chars
;
2923 /* Only push if top exists. Otherwise, replace top. */
2924 if (YY_CURRENT_BUFFER
)
2925 yyg
->yy_buffer_stack_top
++;
2926 YY_CURRENT_BUFFER_LVALUE
= new_buffer
;
2928 /* copied from config__switch_to_buffer. */
2929 config__load_buffer_state(yyscanner
);
2930 yyg
->yy_did_buffer_switch_on_eof
= 1;
2935 /** Removes and deletes the top of the stack, if present.
2936 * The next element becomes the new top.
2937 * @param yyscanner The scanner object.
2940 void config_pop_buffer_state (yyscan_t yyscanner
)
2945 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
2946 if (!YY_CURRENT_BUFFER
)
2949 config__delete_buffer(YY_CURRENT_BUFFER
,yyscanner
);
2950 YY_CURRENT_BUFFER_LVALUE
= NULL
;
2951 if (yyg
->yy_buffer_stack_top
> 0)
2952 --yyg
->yy_buffer_stack_top
;
2954 if (YY_CURRENT_BUFFER
) {
2955 config__load_buffer_state(yyscanner
);
2956 yyg
->yy_did_buffer_switch_on_eof
= 1;
2962 /* Allocates the stack if it does not exist.
2963 * Guarantees space for at least one push.
2966 static void config_ensure_buffer_stack (yyscan_t yyscanner
)
2972 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
2974 if (!yyg
->yy_buffer_stack
) {
2976 /* First allocation is just for 2 elements, since we don't know if this
2977 * scanner will even need a stack. We use 2 instead of 1 to avoid an
2978 * immediate realloc on the next call.
2981 yyg
->yy_buffer_stack
= (struct yy_buffer_state
**)config_alloc
2982 (num_to_alloc
* sizeof(struct yy_buffer_state
*)
2984 if ( ! yyg
->yy_buffer_stack
)
2985 YY_FATAL_ERROR( "out of dynamic memory in config_ensure_buffer_stack()" );
2987 memset(yyg
->yy_buffer_stack
, 0, num_to_alloc
* sizeof(struct yy_buffer_state
*));
2989 yyg
->yy_buffer_stack_max
= num_to_alloc
;
2990 yyg
->yy_buffer_stack_top
= 0;
2994 if (yyg
->yy_buffer_stack_top
>= (yyg
->yy_buffer_stack_max
) - 1){
2996 /* Increase the buffer to prepare for a possible push. */
2997 int grow_size
= 8 /* arbitrary grow size */;
2999 num_to_alloc
= yyg
->yy_buffer_stack_max
+ grow_size
;
3000 yyg
->yy_buffer_stack
= (struct yy_buffer_state
**)config_realloc
3001 (yyg
->yy_buffer_stack
,
3002 num_to_alloc
* sizeof(struct yy_buffer_state
*)
3004 if ( ! yyg
->yy_buffer_stack
)
3005 YY_FATAL_ERROR( "out of dynamic memory in config_ensure_buffer_stack()" );
3007 /* zero only the new slots.*/
3008 memset(yyg
->yy_buffer_stack
+ yyg
->yy_buffer_stack_max
, 0, grow_size
* sizeof(struct yy_buffer_state
*));
3009 yyg
->yy_buffer_stack_max
= num_to_alloc
;
3015 /** Setup the input buffer state to scan directly from a user-specified character buffer.
3016 * @param base the character buffer
3017 * @param size the size in bytes of the character buffer
3018 * @param yyscanner The scanner object.
3019 * @return the newly allocated buffer state object.
3021 YY_BUFFER_STATE
config__scan_buffer (char * base
, yy_size_t size
, yyscan_t yyscanner
)
3026 base
[size
-2] != YY_END_OF_BUFFER_CHAR
||
3027 base
[size
-1] != YY_END_OF_BUFFER_CHAR
)
3028 /* They forgot to leave room for the EOB's. */
3031 b
= (YY_BUFFER_STATE
) config_alloc(sizeof( struct yy_buffer_state
) ,yyscanner
);
3033 YY_FATAL_ERROR( "out of dynamic memory in config__scan_buffer()" );
3035 b
->yy_buf_size
= size
- 2; /* "- 2" to take care of EOB's */
3036 b
->yy_buf_pos
= b
->yy_ch_buf
= base
;
3037 b
->yy_is_our_buffer
= 0;
3038 b
->yy_input_file
= 0;
3039 b
->yy_n_chars
= b
->yy_buf_size
;
3040 b
->yy_is_interactive
= 0;
3042 b
->yy_fill_buffer
= 0;
3043 b
->yy_buffer_status
= YY_BUFFER_NEW
;
3045 config__switch_to_buffer(b
,yyscanner
);
3052 /** Setup the input buffer state to scan a string. The next call to config_lex() will
3053 * scan from a @e copy of @a str.
3054 * @param yystr a NUL-terminated string to scan
3055 * @param yyscanner The scanner object.
3056 * @return the newly allocated buffer state object.
3057 * @note If you want to scan bytes that may contain NUL values, then use
3058 * config__scan_bytes() instead.
3060 YY_BUFFER_STATE
config__scan_string (yyconst
char * yystr
, yyscan_t yyscanner
)
3063 return config__scan_bytes(yystr
,strlen(yystr
) ,yyscanner
);
3068 /** Setup the input buffer state to scan the given bytes. The next call to config_lex() will
3069 * scan from a @e copy of @a bytes.
3070 * @param bytes the byte buffer to scan
3071 * @param len the number of bytes in the buffer pointed to by @a bytes.
3072 * @param yyscanner The scanner object.
3073 * @return the newly allocated buffer state object.
3075 YY_BUFFER_STATE
config__scan_bytes (yyconst
char * yybytes
, int _yybytes_len
, yyscan_t yyscanner
)
3082 /* Get memory for full buffer, including space for trailing EOB's. */
3083 n
= _yybytes_len
+ 2;
3084 buf
= (char *) config_alloc(n
,yyscanner
);
3086 YY_FATAL_ERROR( "out of dynamic memory in config__scan_bytes()" );
3088 for ( i
= 0; i
< _yybytes_len
; ++i
)
3089 buf
[i
] = yybytes
[i
];
3091 buf
[_yybytes_len
] = buf
[_yybytes_len
+1] = YY_END_OF_BUFFER_CHAR
;
3093 b
= config__scan_buffer(buf
,n
,yyscanner
);
3095 YY_FATAL_ERROR( "bad buffer in config__scan_bytes()" );
3097 /* It's okay to grow etc. this buffer, and we should throw it
3098 * away when we're done.
3100 b
->yy_is_our_buffer
= 1;
3106 #ifndef YY_EXIT_FAILURE
3107 #define YY_EXIT_FAILURE 2
3111 static void yy_fatal_error (yyconst
char* msg
, yyscan_t yyscanner
)
3113 (void) fprintf( stderr
, "%s\n", msg
);
3114 exit( YY_EXIT_FAILURE
);
3120 /* Redefine yyless() so it works in section 3 code. */
3126 /* Undo effects of setting up yytext. */ \
3127 int yyless_macro_arg = (n); \
3128 YY_LESS_LINENO(yyless_macro_arg);\
3129 yytext[yyleng] = yyg->yy_hold_char; \
3130 yyg->yy_c_buf_p = yytext + yyless_macro_arg; \
3131 yyg->yy_hold_char = *yyg->yy_c_buf_p; \
3132 *yyg->yy_c_buf_p = '\0'; \
3133 yyleng = yyless_macro_arg; \
3137 /* Accessor methods (get/set functions) to struct members. */
3142 /** Get the user-defined data for this scanner.
3143 * @param yyscanner The scanner object.
3145 YY_EXTRA_TYPE
config_get_extra (yyscan_t yyscanner
)
3147 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
3153 /** Get the current line number.
3154 * @param yyscanner The scanner object.
3156 int config_get_lineno (yyscan_t yyscanner
)
3158 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
3160 if (! YY_CURRENT_BUFFER
)
3166 /** Get the current column number.
3167 * @param yyscanner The scanner object.
3169 int config_get_column (yyscan_t yyscanner
)
3171 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
3173 if (! YY_CURRENT_BUFFER
)
3179 /** Get the input stream.
3180 * @param yyscanner The scanner object.
3182 FILE *config_get_in (yyscan_t yyscanner
)
3184 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
3188 /** Get the output stream.
3189 * @param yyscanner The scanner object.
3191 FILE *config_get_out (yyscan_t yyscanner
)
3193 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
3197 /** Get the length of the current token.
3198 * @param yyscanner The scanner object.
3200 int config_get_leng (yyscan_t yyscanner
)
3202 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
3206 /** Get the current token.
3207 * @param yyscanner The scanner object.
3210 char *config_get_text (yyscan_t yyscanner
)
3212 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
3218 /** Set the user-defined data. This data is never touched by the scanner.
3219 * @param user_defined The data to be associated with this scanner.
3220 * @param yyscanner The scanner object.
3222 void config_set_extra (YY_EXTRA_TYPE user_defined
, yyscan_t yyscanner
)
3224 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
3225 yyextra
= user_defined
;
3230 /** Set the current line number.
3231 * @param line_number
3232 * @param yyscanner The scanner object.
3234 void config_set_lineno (int line_number
, yyscan_t yyscanner
)
3236 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
3238 /* lineno is only valid if an input buffer exists. */
3239 if (! YY_CURRENT_BUFFER
)
3240 yy_fatal_error( "config_set_lineno called with no buffer" , yyscanner
);
3242 yylineno
= line_number
;
3245 /** Set the current column.
3246 * @param line_number
3247 * @param yyscanner The scanner object.
3249 void config_set_column (int column_no
, yyscan_t yyscanner
)
3251 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
3253 /* column is only valid if an input buffer exists. */
3254 if (! YY_CURRENT_BUFFER
)
3255 yy_fatal_error( "config_set_column called with no buffer" , yyscanner
);
3257 yycolumn
= column_no
;
3260 /** Set the input stream. This does not discard the current
3262 * @param in_str A readable stream.
3263 * @param yyscanner The scanner object.
3264 * @see config__switch_to_buffer
3266 void config_set_in (FILE * in_str
, yyscan_t yyscanner
)
3268 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
3272 void config_set_out (FILE * out_str
, yyscan_t yyscanner
)
3274 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
3278 int config_get_debug (yyscan_t yyscanner
)
3280 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
3281 return yy_flex_debug
;
3284 void config_set_debug (int bdebug
, yyscan_t yyscanner
)
3286 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
3287 yy_flex_debug
= bdebug
;
3293 /* Accessor methods for yylval and yylloc */
3295 /* %if-bison-bridge */
3297 YYSTYPE
* config_get_lval (yyscan_t yyscanner
)
3299 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
3303 void config_set_lval (YYSTYPE
* yylval_param
, yyscan_t yyscanner
)
3305 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
3306 yylval
= yylval_param
;
3311 /* User-visible API */
3313 /* config_lex_init is special because it creates the scanner itself, so it is
3314 * the ONLY reentrant function that doesn't take the scanner as the last argument.
3315 * That's why we explicitly handle the declaration, instead of using our macros.
3318 int config_lex_init(yyscan_t
* ptr_yy_globals
)
3321 if (ptr_yy_globals
== NULL
){
3326 *ptr_yy_globals
= (yyscan_t
) config_alloc ( sizeof( struct yyguts_t
), NULL
);
3328 if (*ptr_yy_globals
== NULL
){
3333 /* By setting to 0xAA, we expose bugs in yy_init_globals. Leave at 0x00 for releases. */
3334 memset(*ptr_yy_globals
,0x00,sizeof(struct yyguts_t
));
3336 return yy_init_globals ( *ptr_yy_globals
);
3339 /* config_lex_init_extra has the same functionality as config_lex_init, but follows the
3340 * convention of taking the scanner as the last argument. Note however, that
3341 * this is a *pointer* to a scanner, as it will be allocated by this call (and
3342 * is the reason, too, why this function also must handle its own declaration).
3343 * The user defined value in the first argument will be available to config_alloc in
3344 * the yyextra field.
3347 int config_lex_init_extra(YY_EXTRA_TYPE yy_user_defined
,yyscan_t
* ptr_yy_globals
)
3350 struct yyguts_t dummy_yyguts
;
3352 config_set_extra (yy_user_defined
, &dummy_yyguts
);
3354 if (ptr_yy_globals
== NULL
){
3359 *ptr_yy_globals
= (yyscan_t
) config_alloc ( sizeof( struct yyguts_t
), &dummy_yyguts
);
3361 if (*ptr_yy_globals
== NULL
){
3366 /* By setting to 0xAA, we expose bugs in
3367 yy_init_globals. Leave at 0x00 for releases. */
3368 memset(*ptr_yy_globals
,0x00,sizeof(struct yyguts_t
));
3370 config_set_extra (yy_user_defined
, *ptr_yy_globals
);
3372 return yy_init_globals ( *ptr_yy_globals
);
3375 /* %endif if-c-only */
3378 static int yy_init_globals (yyscan_t yyscanner
)
3380 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
3381 /* Initialization is the same as for the non-reentrant scanner.
3382 * This function is called from config_lex_destroy(), so don't allocate here.
3385 yyg
->yy_buffer_stack
= 0;
3386 yyg
->yy_buffer_stack_top
= 0;
3387 yyg
->yy_buffer_stack_max
= 0;
3388 yyg
->yy_c_buf_p
= (char *) 0;
3392 yyg
->yy_start_stack_ptr
= 0;
3393 yyg
->yy_start_stack_depth
= 0;
3394 yyg
->yy_start_stack
= NULL
;
3396 /* Defined in main.c */
3405 /* For future reference: Set errno on error, since we are called by
3412 /* %if-c-only SNIP! this currently causes conflicts with the c++ scanner */
3413 /* config_lex_destroy is for both reentrant and non-reentrant scanners. */
3414 int config_lex_destroy (yyscan_t yyscanner
)
3416 struct yyguts_t
* yyg
= (struct yyguts_t
*)yyscanner
;
3418 /* Pop the buffer stack, destroying each element. */
3419 while(YY_CURRENT_BUFFER
){
3420 config__delete_buffer(YY_CURRENT_BUFFER
,yyscanner
);
3421 YY_CURRENT_BUFFER_LVALUE
= NULL
;
3422 config_pop_buffer_state(yyscanner
);
3425 /* Destroy the stack itself. */
3426 config_free(yyg
->yy_buffer_stack
,yyscanner
);
3427 yyg
->yy_buffer_stack
= NULL
;
3429 /* Destroy the start condition stack. */
3430 config_free(yyg
->yy_start_stack
,yyscanner
);
3431 yyg
->yy_start_stack
= NULL
;
3433 /* Reset the globals. This is important in a non-reentrant scanner so the next time
3434 * config_lex() is called, initialization will occur. */
3435 yy_init_globals( yyscanner
);
3438 /* Destroy the main struct (reentrant only). */
3439 config_free ( yyscanner
, yyscanner
);
3447 * Internal utility routines.
3451 static void yy_flex_strncpy (char* s1
, yyconst
char * s2
, int n
, yyscan_t yyscanner
)
3454 for ( i
= 0; i
< n
; ++i
)
3459 #ifdef YY_NEED_STRLEN
3460 static int yy_flex_strlen (yyconst
char * s
, yyscan_t yyscanner
)
3463 for ( n
= 0; s
[n
]; ++n
)
3470 void *config_alloc (yy_size_t size
, yyscan_t yyscanner
)
3472 return (void *) malloc( size
);
3475 void *config_realloc (void * ptr
, yy_size_t size
, yyscan_t yyscanner
)
3477 /* The cast to (char *) in the following accommodates both
3478 * implementations that use char* generic pointers, and those
3479 * that use void* generic pointers. It works with the latter
3480 * because both ANSI C and C++ allow castless assignment from
3481 * any pointer type to void*, and deal with argument conversions
3482 * as though doing an assignment.
3484 return (void *) realloc( (char *) ptr
, size
);
3487 void config_free (void * ptr
, yyscan_t yyscanner
)
3489 free( (char *) ptr
); /* see config_realloc() for (char *) cast */
3492 /* %if-tables-serialization definitions */
3493 /* %define-yytables The name for this specific scanner's tables. */
3494 #define YYTABLES_NAME "yytables"
3497 /* %ok-for-header */
3499 #line 221 "libmemcached/options/scanner.l"
3503 void Context::init_scanner()
3505 config_lex_init(&scanner
);
3506 config_set_extra(this,scanner
);
3509 void Context::destroy_scanner()
3511 config_lex_destroy(scanner
);