Add docs for tap, and update all other documentation.
[m6w6/libmemcached] / libmemcached / options / scanner.cc
1 #line 2 "libmemcached/options/scanner.cc"
2 #line 22 "libmemcached/options/scanner.l"
3
4 #pragma GCC diagnostic ignored "-Wold-style-cast"
5 #pragma GCC diagnostic ignored "-Wsign-compare"
6 #pragma GCC diagnostic ignored "-Wunused-parameter"
7
8 #include <libmemcached/options/context.h>
9 #include <libmemcached/options/parser.h>
10 #include <libmemcached/options/string.h>
11 #include <libmemcached/options/symbol.h>
12
13 #define YY_EXTRA_TYPE Context*
14
15
16
17
18 #line 19 "libmemcached/options/scanner.cc"
19
20 #define YY_INT_ALIGNED short int
21
22 /* A lexical scanner generated by flex */
23
24 /* %not-for-header */
25
26 /* %if-c-only */
27 /* %if-not-reentrant */
28 /* %endif */
29 /* %endif */
30 /* %ok-for-header */
31
32 #define FLEX_SCANNER
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
37 #define FLEX_BETA
38 #endif
39
40 /* %if-c++-only */
41 /* %endif */
42
43 /* %if-c-only */
44
45 /* %endif */
46
47 /* %if-c-only */
48
49 /* %endif */
50
51 /* First, we deal with platform-specific or compiler-specific issues. */
52
53 /* begin standard C headers. */
54 /* %if-c-only */
55 #include <stdio.h>
56 #include <string.h>
57 #include <errno.h>
58 #include <stdlib.h>
59 /* %endif */
60
61 /* %if-tables-serialization */
62 /* %endif */
63 /* end standard C headers. */
64
65 /* %if-c-or-c++ */
66 /* flex integer type definitions */
67
68 #ifndef FLEXINT_H
69 #define FLEXINT_H
70
71 /* C99 systems have <inttypes.h>. Non-C99 systems may or may not. */
72
73 #if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
74
75 /* C99 says to define __STDC_LIMIT_MACROS before including stdint.h,
76 * if you want the limit (max/min) macros for int types.
77 */
78 #ifndef __STDC_LIMIT_MACROS
79 #define __STDC_LIMIT_MACROS 1
80 #endif
81
82 #include <inttypes.h>
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;
89 #else
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;
96 #endif /* ! C99 */
97
98 /* Limits of integral types. */
99 #ifndef INT8_MIN
100 #define INT8_MIN (-128)
101 #endif
102 #ifndef INT16_MIN
103 #define INT16_MIN (-32767-1)
104 #endif
105 #ifndef INT32_MIN
106 #define INT32_MIN (-2147483647-1)
107 #endif
108 #ifndef INT8_MAX
109 #define INT8_MAX (127)
110 #endif
111 #ifndef INT16_MAX
112 #define INT16_MAX (32767)
113 #endif
114 #ifndef INT32_MAX
115 #define INT32_MAX (2147483647)
116 #endif
117 #ifndef UINT8_MAX
118 #define UINT8_MAX (255U)
119 #endif
120 #ifndef UINT16_MAX
121 #define UINT16_MAX (65535U)
122 #endif
123 #ifndef UINT32_MAX
124 #define UINT32_MAX (4294967295U)
125 #endif
126
127 #endif /* ! FLEXINT_H */
128
129 /* %endif */
130
131 /* %if-c++-only */
132 /* %endif */
133
134 #ifdef __cplusplus
135
136 /* The "const" storage-class-modifier is valid. */
137 #define YY_USE_CONST
138
139 #else /* ! __cplusplus */
140
141 /* C99 requires __STDC__ to be defined as 1. */
142 #if defined (__STDC__)
143
144 #define YY_USE_CONST
145
146 #endif /* defined (__STDC__) */
147 #endif /* ! __cplusplus */
148
149 #ifdef YY_USE_CONST
150 #define yyconst const
151 #else
152 #define yyconst
153 #endif
154
155 /* %not-for-header */
156
157 /* Returned upon end-of-file. */
158 #define YY_NULL 0
159 /* %ok-for-header */
160
161 /* %not-for-header */
162
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
166 * double cast.
167 */
168 #define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c)
169 /* %ok-for-header */
170
171 /* %if-reentrant */
172
173 /* An opaque pointer. */
174 #ifndef YY_TYPEDEF_YY_SCANNER_T
175 #define YY_TYPEDEF_YY_SCANNER_T
176 typedef void* yyscan_t;
177 #endif
178
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
189
190 /* %endif */
191
192 /* %if-not-reentrant */
193 /* %endif */
194
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.
198 */
199 #define BEGIN yyg->yy_start = 1 + 2 *
200
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
203 * compatibility.
204 */
205 #define YY_START ((yyg->yy_start - 1) / 2)
206 #define YYSTATE YY_START
207
208 /* Action number for EOF rule of a given start state. */
209 #define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
210
211 /* Special action meaning "start processing a new file". */
212 #define YY_NEW_FILE config_restart(yyin ,yyscanner )
213
214 #define YY_END_OF_BUFFER_CHAR 0
215
216 /* Size of default input buffer. */
217 #ifndef YY_BUF_SIZE
218 #define YY_BUF_SIZE 16384
219 #endif
220
221 /* The state buf must be large enough to hold one state per character in the main buffer.
222 */
223 #define YY_STATE_BUF_SIZE ((YY_BUF_SIZE + 2) * sizeof(yy_state_type))
224
225 #ifndef YY_TYPEDEF_YY_BUFFER_STATE
226 #define YY_TYPEDEF_YY_BUFFER_STATE
227 typedef struct yy_buffer_state *YY_BUFFER_STATE;
228 #endif
229
230 /* %if-not-reentrant */
231 /* %endif */
232
233 /* %if-c-only */
234 /* %if-not-reentrant */
235 /* %endif */
236 /* %endif */
237
238 #define EOB_ACT_CONTINUE_SCAN 0
239 #define EOB_ACT_END_OF_FILE 1
240 #define EOB_ACT_LAST_MATCH 2
241
242 #define YY_LESS_LINENO(n)
243
244 /* Return all but the first "n" matched characters back to the input stream. */
245 #define yyless(n) \
246 do \
247 { \
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 */ \
255 } \
256 while ( 0 )
257
258 #define unput(c) yyunput( c, yyg->yytext_ptr , yyscanner )
259
260 #ifndef YY_TYPEDEF_YY_SIZE_T
261 #define YY_TYPEDEF_YY_SIZE_T
262 typedef size_t yy_size_t;
263 #endif
264
265 #ifndef YY_STRUCT_YY_BUFFER_STATE
266 #define YY_STRUCT_YY_BUFFER_STATE
267 struct yy_buffer_state
268 {
269 /* %if-c-only */
270 FILE *yy_input_file;
271 /* %endif */
272
273 /* %if-c++-only */
274 /* %endif */
275
276 char *yy_ch_buf; /* input buffer */
277 char *yy_buf_pos; /* current position in input buffer */
278
279 /* Size of input buffer in bytes, not including room for EOB
280 * characters.
281 */
282 yy_size_t yy_buf_size;
283
284 /* Number of characters read into yy_ch_buf, not including EOB
285 * characters.
286 */
287 int yy_n_chars;
288
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
291 * delete it.
292 */
293 int yy_is_our_buffer;
294
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
298 * each newline.
299 */
300 int yy_is_interactive;
301
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
304 * not.
305 */
306 int yy_at_bol;
307
308 int yy_bs_lineno; /**< The line count. */
309 int yy_bs_column; /**< The column count. */
310
311 /* Whether to try to fill the input buffer when we reach the
312 * end of it.
313 */
314 int yy_fill_buffer;
315
316 int yy_buffer_status;
317
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.
325 *
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.
329 */
330 #define YY_BUFFER_EOF_PENDING 2
331
332 };
333 #endif /* !YY_STRUCT_YY_BUFFER_STATE */
334
335 /* %if-c-only Standard (non-C++) definition */
336 /* %not-for-header */
337
338 /* %if-not-reentrant */
339 /* %endif */
340 /* %ok-for-header */
341
342 /* %endif */
343
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
346 * "scanner state".
347 *
348 * Returns the top of the stack, or NULL.
349 */
350 #define YY_CURRENT_BUFFER ( yyg->yy_buffer_stack \
351 ? yyg->yy_buffer_stack[yyg->yy_buffer_stack_top] \
352 : NULL)
353
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.
356 */
357 #define YY_CURRENT_BUFFER_LVALUE yyg->yy_buffer_stack[yyg->yy_buffer_stack_top]
358
359 /* %if-c-only Standard (non-C++) definition */
360
361 /* %if-not-reentrant */
362 /* %not-for-header */
363
364 /* %ok-for-header */
365
366 /* %endif */
367
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 );
375
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 );
379
380 #define YY_FLUSH_BUFFER config__flush_buffer(YY_CURRENT_BUFFER ,yyscanner)
381
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 );
385
386 /* %endif */
387
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 );
391
392 #define yy_new_buffer config__create_buffer
393
394 #define yy_set_interactive(is_interactive) \
395 { \
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); \
400 } \
401 YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \
402 }
403
404 #define yy_set_bol(at_bol) \
405 { \
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); \
410 } \
411 YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \
412 }
413
414 #define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol)
415
416 /* %% [1.0] yytext/yyin/yyout/yy_state_type/yylineno etc. def's & init go here */
417 /* Begin user sect3 */
418
419 #define config_wrap(n) 1
420 #define YY_SKIP_YYWRAP
421
422 #define FLEX_DEBUG
423
424 typedef unsigned char YY_CHAR;
425
426 typedef int yy_state_type;
427
428 #define yytext_ptr yytext_r
429
430 /* %if-c-only Standard (non-C++) definition */
431
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 );
436
437 /* %endif */
438
439 /* Done after the current pattern has been matched and before the
440 * corresponding action - sets up yytext.
441 */
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; \
447 *yy_cp = '\0'; \
448 /* %% [3.0] code to copy yytext_ptr to yytext[] goes here, if %array \ */\
449 yyg->yy_c_buf_p = yy_cp;
450
451 /* %% [4.0] data tables for the DFA and the user's section 1 definitions go here */
452 #define YY_NUM_RULES 87
453 #define YY_END_OF_BUFFER 88
454 /* This struct is not used in this scanner,
455 but its presence is necessary. */
456 struct yy_trans_info
457 {
458 flex_int32_t yy_verify;
459 flex_int32_t yy_nxt;
460 };
461 static yyconst flex_int16_t yy_accept[739] =
462 { 0,
463 0, 0, 88, 86, 5, 5, 1, 86, 86, 86,
464 2, 86, 86, 86, 86, 86, 86, 86, 86, 86,
465 86, 86, 86, 86, 86, 0, 85, 70, 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, 70, 70, 70, 70, 70, 70, 70, 70,
469 70, 70, 70, 70, 70, 4, 84, 84, 2, 3,
470 84, 75, 84, 66, 84, 84, 84, 84, 84, 84,
471 74, 84, 84, 84, 84, 84, 84, 70, 70, 70,
472 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
473
474 70, 70, 70, 70, 70, 70, 70, 4, 0, 84,
475 2, 3, 84, 84, 84, 84, 84, 84, 84, 84,
476 84, 84, 84, 84, 84, 68, 70, 70, 70, 70,
477 70, 0, 0, 70, 70, 70, 70, 70, 70, 70,
478 70, 70, 70, 70, 70, 70, 70, 70, 70, 4,
479 84, 84, 3, 84, 64, 67, 69, 84, 0, 80,
480 84, 84, 84, 84, 84, 63, 84, 70, 70, 70,
481 70, 70, 70, 0, 0, 0, 0, 0, 0, 70,
482 70, 70, 70, 70, 0, 0, 70, 70, 70, 0,
483 0, 70, 70, 70, 0, 0, 0, 70, 0, 70,
484
485 4, 0, 84, 3, 84, 0, 84, 84, 84, 84,
486 72, 81, 73, 84, 70, 70, 70, 70, 70, 0,
487 19, 0, 0, 0, 0, 0, 0, 0, 70, 70,
488 70, 0, 0, 70, 0, 0, 70, 70, 70, 0,
489 0, 70, 0, 0, 70, 0, 0, 0, 0, 0,
490 0, 0, 0, 70, 4, 83, 84, 84, 84, 84,
491 78, 76, 62, 82, 65, 70, 70, 70, 70, 70,
492 0, 0, 0, 0, 0, 0, 0, 0, 70, 70,
493 70, 0, 0, 70, 0, 0, 70, 0, 0, 70,
494 0, 0, 70, 0, 0, 70, 0, 0, 0, 0,
495
496 0, 0, 0, 0, 70, 83, 84, 79, 77, 0,
497 0, 0, 0, 70, 70, 70, 0, 0, 0, 0,
498 0, 0, 0, 0, 70, 28, 0, 0, 0, 0,
499 70, 0, 0, 0, 0, 0, 0, 7, 0, 0,
500 0, 0, 0, 0, 70, 0, 0, 0, 0, 60,
501 0, 0, 59, 0, 0, 83, 84, 0, 0, 0,
502 0, 70, 0, 0, 70, 0, 0, 0, 0, 0,
503 0, 0, 0, 70, 0, 0, 0, 0, 70, 0,
504 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
505 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
506
507 0, 0, 0, 71, 0, 0, 0, 0, 70, 0,
508 0, 70, 0, 0, 0, 0, 0, 0, 0, 0,
509 70, 0, 0, 0, 0, 70, 0, 0, 0, 0,
510 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
511 0, 0, 0, 0, 0, 0, 0, 0, 58, 57,
512 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
513 70, 0, 0, 0, 0, 0, 0, 0, 0, 61,
514 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
515 0, 0, 0, 0, 0, 0, 0, 0, 48, 47,
516 0, 0, 0, 0, 0, 0, 0, 0, 9, 8,
517
518 0, 0, 0, 0, 0, 0, 0, 0, 70, 0,
519 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
520 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
521 0, 0, 0, 0, 0, 50, 49, 0, 0, 52,
522 0, 0, 51, 0, 0, 0, 0, 0, 0, 0,
523 0, 70, 0, 0, 0, 0, 0, 0, 0, 0,
524 0, 0, 0, 0, 0, 0, 36, 35, 0, 0,
525 0, 0, 40, 39, 0, 0, 0, 0, 0, 56,
526 0, 55, 0, 0, 0, 0, 0, 0, 0, 0,
527 18, 0, 0, 0, 0, 0, 0, 0, 0, 0,
528
529 0, 32, 31, 0, 0, 0, 0, 0, 0, 0,
530 0, 0, 0, 54, 53, 0, 0, 0, 0, 0,
531 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
532 0, 0, 0, 0, 0, 0, 0, 38, 37, 0,
533 0, 0, 0, 11, 10, 13, 12, 15, 14, 0,
534 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
535 0, 0, 0, 0, 0, 0, 0, 0, 0, 17,
536 16, 0, 0, 0, 25, 0, 0, 24, 0, 0,
537 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
538 0, 0, 27, 0, 26, 0, 0, 0, 0, 0,
539
540 0, 44, 46, 43, 45, 0, 0, 0, 0, 0,
541 0, 0, 0, 0, 0, 21, 20, 23, 22, 30,
542 29, 0, 0, 0, 0, 0, 0, 0, 0, 0,
543 0, 0, 0, 34, 33, 42, 41, 0
544 } ;
545
546 static yyconst flex_int32_t yy_ec[256] =
547 { 0,
548 1, 1, 1, 1, 1, 1, 1, 1, 2, 3,
549 1, 1, 2, 1, 1, 1, 1, 1, 1, 1,
550 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
551 1, 4, 1, 5, 6, 1, 1, 1, 1, 1,
552 1, 1, 1, 7, 8, 9, 10, 11, 12, 13,
553 14, 15, 16, 17, 11, 11, 11, 18, 1, 1,
554 19, 1, 20, 1, 21, 22, 23, 24, 25, 26,
555 27, 28, 29, 30, 31, 32, 33, 34, 35, 36,
556 37, 38, 39, 40, 41, 42, 43, 44, 45, 46,
557 1, 1, 1, 1, 47, 1, 48, 49, 50, 51,
558
559 52, 53, 54, 55, 56, 57, 58, 59, 60, 61,
560 62, 63, 64, 65, 66, 67, 68, 69, 70, 44,
561 71, 72, 1, 1, 1, 1, 1, 1, 1, 1,
562 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
563 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
564 1, 1, 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
570 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
571 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
572 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
576 } ;
577
578 static yyconst flex_int32_t yy_meta[73] =
579 { 0,
580 1, 1, 2, 1, 3, 1, 1, 3, 3, 1,
581 3, 3, 3, 3, 3, 3, 3, 1, 1, 1,
582 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
583 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
584 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
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
588 } ;
589
590 static yyconst flex_int16_t yy_base[743] =
591 { 0,
592 0, 825, 827, 2013, 2013, 2013, 2013, 794, 772, 745,
593 64, 71, 0, 54, 49, 56, 70, 54, 61, 71,
594 73, 77, 74, 62, 740, 728, 717, 131, 193, 102,
595 206, 249, 213, 233, 226, 228, 235, 243, 263, 279,
596 284, 292, 294, 309, 311, 325, 341, 352, 359, 368,
597 715, 2013, 415, 303, 68, 76, 85, 74, 345, 77,
598 360, 400, 90, 112, 187, 415, 395, 480, 523, 487,
599 411, 464, 500, 505, 507, 512, 514, 540, 548, 555,
600 567, 574, 576, 588, 619, 596, 621, 213, 230, 244,
601 240, 246, 208, 276, 273, 291, 295, 309, 305, 354,
602
603 314, 341, 346, 342, 359, 408, 402, 636, 669, 712,
604 755, 643, 632, 684, 667, 690, 692, 745, 736, 701,
605 747, 773, 699, 779, 788, 781, 426, 422, 564, 419,
606 435, 776, 790, 454, 519, 524, 518, 538, 290, 532,
607 553, 564, 623, 632, 624, 631, 688, 711, 718, 840,
608 853, 824, 861, 874, 876, 881, 883, 888, 890, 897,
609 903, 909, 911, 917, 933, 940, 952, 753, 770, 774,
610 785, 773, 797, 462, 790, 821, 484, 884, 885, 907,
611 911, 927, 704, 927, 925, 927, 926, 529, 944, 931,
612 935, 951, 728, 942, 947, 952, 943, 754, 944, 962,
613
614 1007, 1020, 1063, 2013, 1041, 992, 1035, 1046, 1048, 1055,
615 1057, 1078, 1098, 1104, 563, 976, 1015, 1035, 1041, 1041,
616 2013, 1046, 1050, 574, 1064, 1052, 772, 1069, 1063, 1069,
617 1067, 1074, 1075, 1087, 1093, 1098, 1104, 777, 1092, 1102,
618 1104, 1094, 1107, 1108, 1099, 1113, 1104, 1115, 1109, 1122,
619 1124, 1126, 1128, 858, 2013, 1175, 1173, 1188, 1190, 1196,
620 1201, 1207, 1209, 1216, 1218, 800, 886, 1161, 1167, 1197,
621 1199, 1201, 1206, 695, 694, 1207, 640, 622, 1212, 981,
622 983, 1210, 1212, 1213, 1211, 1212, 1051, 1207, 1209, 643,
623 1217, 1218, 1147, 1217, 1218, 1221, 1237, 1240, 1242, 1246,
624
625 1237, 1254, 1260, 1246, 1161, 1305, 1278, 1287, 1296, 1248,
626 1263, 1265, 1268, 1277, 1277, 1282, 1287, 1288, 1290, 1295,
627 1289, 1296, 1300, 1294, 1315, 0, 1305, 1306, 1311, 1312,
628 1113, 1321, 1322, 1322, 1323, 1322, 1324, 2013, 1332, 1335,
629 1331, 1343, 1322, 1327, 1369, 1343, 1358, 1349, 1361, 2013,
630 1350, 1351, 2013, 1361, 1363, 1390, 1395, 1363, 1364, 1380,
631 1382, 1386, 1374, 1380, 1382, 1395, 1396, 624, 1387, 1405,
632 575, 1389, 1409, 1406, 1407, 1410, 1414, 1415, 1418, 1409,
633 1410, 1425, 1427, 1422, 1423, 1424, 1426, 1439, 1440, 1443,
634 1444, 1434, 1436, 1454, 1455, 1458, 1448, 1460, 1452, 1464,
635
636 1469, 1468, 1469, 1510, 1462, 1463, 1462, 1463, 1494, 1480,
637 1481, 1484, 612, 569, 1479, 1498, 1488, 1486, 1506, 1492,
638 592, 602, 556, 1498, 1499, 1522, 1494, 1497, 1510, 1514,
639 1519, 1520, 1505, 1506, 1525, 1517, 1529, 1519, 1515, 1524,
640 1543, 1546, 1536, 1552, 1556, 1550, 1559, 1563, 2013, 2013,
641 1129, 1344, 1545, 1546, 1546, 1547, 1563, 1566, 1560, 1563,
642 1562, 1564, 1565, 1579, 1575, 1577, 1584, 1580, 1582, 2013,
643 1570, 1579, 1577, 1580, 1584, 1592, 1591, 1596, 1605, 1606,
644 1604, 1605, 1601, 1602, 1601, 1622, 1605, 1626, 2013, 2013,
645 1612, 1613, 1624, 1622, 1611, 1630, 1628, 1617, 2013, 2013,
646
647 1636, 1637, 1650, 1651, 1654, 1655, 1660, 1664, 1656, 1670,
648 1671, 1653, 1669, 1657, 1656, 1672, 1662, 1676, 1679, 1665,
649 1666, 1682, 1683, 580, 569, 1684, 1688, 1673, 1674, 547,
650 539, 535, 522, 478, 477, 2013, 2013, 1683, 1701, 2013,
651 1687, 1705, 2013, 1714, 1715, 1700, 1704, 1712, 1713, 1711,
652 1712, 499, 1715, 1716, 1725, 1711, 1721, 1730, 1718, 1726,
653 1724, 1725, 468, 427, 1726, 1727, 2013, 2013, 1743, 1744,
654 1729, 1739, 2013, 2013, 1741, 1744, 1745, 1752, 1767, 2013,
655 1768, 2013, 1762, 1763, 1759, 1760, 1776, 1777, 1762, 1763,
656 2013, 1780, 1783, 1771, 1789, 1792, 1776, 1792, 1795, 1785,
657
658 1789, 2013, 2013, 1790, 1791, 437, 376, 398, 382, 1804,
659 1805, 1808, 1809, 2013, 2013, 1813, 1814, 1808, 1812, 379,
660 370, 1812, 1813, 1815, 1816, 1823, 1829, 1820, 1826, 1834,
661 1825, 1837, 1838, 1839, 1840, 1831, 1832, 2013, 2013, 1829,
662 1830, 1831, 1841, 2013, 2013, 2013, 2013, 2013, 2013, 363,
663 334, 1852, 1855, 1871, 326, 1868, 1879, 310, 1873, 1882,
664 1883, 1884, 1885, 1884, 1885, 1886, 1887, 1889, 1891, 2013,
665 2013, 1896, 1899, 1883, 2013, 304, 1884, 2013, 288, 1902,
666 1903, 1904, 1907, 1891, 1892, 285, 272, 251, 250, 1917,
667 1919, 1914, 2013, 1915, 2013, 1914, 1915, 238, 198, 1916,
668
669 1917, 2013, 2013, 2013, 2013, 1935, 1936, 213, 194, 131,
670 119, 1924, 1925, 1939, 1940, 2013, 2013, 2013, 2013, 2013,
671 2013, 1941, 1943, 1932, 1933, 1953, 1954, 1937, 1938, 1954,
672 1955, 118, 115, 2013, 2013, 2013, 2013, 2013, 2006, 125,
673 2009, 112
674 } ;
675
676 static yyconst flex_int16_t yy_def[743] =
677 { 0,
678 738, 1, 738, 738, 738, 738, 738, 739, 738, 738,
679 740, 738, 740, 740, 740, 740, 740, 740, 740, 740,
680 740, 740, 740, 740, 741, 739, 739, 738, 738, 742,
681 742, 742, 738, 742, 742, 742, 742, 742, 742, 742,
682 742, 742, 742, 742, 742, 742, 742, 742, 742, 742,
683 741, 738, 28, 53, 53, 53, 53, 53, 53, 53,
684 53, 53, 53, 53, 53, 738, 742, 742, 742, 738,
685 742, 742, 742, 742, 742, 742, 742, 742, 742, 742,
686 742, 742, 742, 742, 742, 742, 742, 53, 53, 53,
687 53, 53, 53, 53, 53, 53, 53, 53, 53, 53,
688
689 53, 53, 53, 53, 53, 53, 53, 738, 742, 742,
690 742, 738, 742, 742, 742, 742, 742, 742, 742, 742,
691 742, 742, 742, 742, 742, 742, 53, 53, 53, 53,
692 53, 738, 738, 53, 53, 53, 53, 53, 53, 53,
693 53, 53, 53, 53, 53, 53, 53, 53, 53, 738,
694 742, 742, 738, 742, 742, 742, 742, 742, 742, 742,
695 742, 742, 742, 742, 742, 742, 742, 53, 53, 53,
696 53, 53, 53, 738, 738, 738, 738, 738, 738, 53,
697 53, 53, 53, 53, 738, 738, 53, 53, 53, 738,
698 738, 53, 53, 53, 738, 738, 738, 53, 738, 53,
699
700 738, 742, 742, 738, 742, 742, 742, 742, 742, 742,
701 742, 742, 742, 742, 53, 53, 53, 53, 53, 738,
702 738, 738, 738, 738, 738, 738, 738, 738, 53, 53,
703 53, 738, 738, 53, 738, 738, 53, 53, 53, 738,
704 738, 53, 738, 738, 53, 738, 738, 738, 738, 738,
705 738, 738, 738, 53, 738, 742, 742, 742, 742, 742,
706 742, 742, 742, 742, 742, 53, 53, 53, 53, 53,
707 738, 738, 738, 738, 738, 738, 738, 738, 53, 53,
708 53, 738, 738, 53, 738, 738, 53, 738, 738, 53,
709 738, 738, 53, 738, 738, 53, 738, 738, 738, 738,
710
711 738, 738, 738, 738, 53, 742, 742, 742, 742, 738,
712 738, 738, 738, 53, 53, 53, 738, 738, 738, 738,
713 738, 738, 738, 738, 53, 53, 738, 738, 738, 738,
714 53, 738, 738, 738, 738, 738, 738, 738, 738, 738,
715 738, 738, 738, 738, 53, 738, 738, 738, 738, 738,
716 738, 738, 738, 738, 738, 742, 742, 738, 738, 738,
717 738, 53, 738, 738, 53, 738, 738, 738, 738, 738,
718 738, 738, 738, 53, 738, 738, 738, 738, 53, 738,
719 738, 738, 738, 738, 738, 738, 738, 738, 738, 738,
720 738, 738, 738, 738, 738, 738, 738, 738, 738, 738,
721
722 738, 738, 738, 742, 738, 738, 738, 738, 53, 738,
723 738, 53, 738, 738, 738, 738, 738, 738, 738, 738,
724 53, 738, 738, 738, 738, 53, 738, 738, 738, 738,
725 738, 738, 738, 738, 738, 738, 738, 738, 738, 738,
726 738, 738, 738, 738, 738, 738, 738, 738, 738, 738,
727 738, 738, 738, 738, 738, 738, 738, 738, 738, 738,
728 53, 738, 738, 738, 738, 738, 738, 738, 738, 738,
729 738, 738, 738, 738, 738, 738, 738, 738, 738, 738,
730 738, 738, 738, 738, 738, 738, 738, 738, 738, 738,
731 738, 738, 738, 738, 738, 738, 738, 738, 738, 738,
732
733 738, 738, 738, 738, 738, 738, 738, 738, 53, 738,
734 738, 738, 738, 738, 738, 738, 738, 738, 738, 738,
735 738, 738, 738, 738, 738, 738, 738, 738, 738, 738,
736 738, 738, 738, 738, 738, 738, 738, 738, 738, 738,
737 738, 738, 738, 738, 738, 738, 738, 738, 738, 738,
738 738, 53, 738, 738, 738, 738, 738, 738, 738, 738,
739 738, 738, 738, 738, 738, 738, 738, 738, 738, 738,
740 738, 738, 738, 738, 738, 738, 738, 738, 738, 738,
741 738, 738, 738, 738, 738, 738, 738, 738, 738, 738,
742 738, 738, 738, 738, 738, 738, 738, 738, 738, 738,
743
744 738, 738, 738, 738, 738, 738, 738, 738, 738, 738,
745 738, 738, 738, 738, 738, 738, 738, 738, 738, 738,
746 738, 738, 738, 738, 738, 738, 738, 738, 738, 738,
747 738, 738, 738, 738, 738, 738, 738, 738, 738, 738,
748 738, 738, 738, 738, 738, 738, 738, 738, 738, 738,
749 738, 738, 738, 738, 738, 738, 738, 738, 738, 738,
750 738, 738, 738, 738, 738, 738, 738, 738, 738, 738,
751 738, 738, 738, 738, 738, 738, 738, 738, 738, 738,
752 738, 738, 738, 738, 738, 738, 738, 738, 738, 738,
753 738, 738, 738, 738, 738, 738, 738, 738, 738, 738,
754
755 738, 738, 738, 738, 738, 738, 738, 738, 738, 738,
756 738, 738, 738, 738, 738, 738, 738, 738, 738, 738,
757 738, 738, 738, 738, 738, 738, 738, 738, 738, 738,
758 738, 738, 738, 738, 738, 738, 738, 0, 738, 738,
759 738, 738
760 } ;
761
762 static yyconst flex_int16_t yy_nxt[2086] =
763 { 0,
764 4, 5, 6, 7, 8, 4, 7, 9, 4, 10,
765 11, 11, 11, 11, 11, 11, 11, 12, 7, 4,
766 13, 13, 14, 15, 16, 17, 13, 18, 19, 20,
767 13, 13, 21, 13, 13, 13, 13, 22, 23, 24,
768 13, 13, 13, 13, 13, 13, 4, 13, 13, 14,
769 15, 16, 17, 13, 18, 19, 20, 13, 13, 21,
770 13, 13, 13, 13, 22, 23, 24, 13, 13, 13,
771 13, 13, 31, 36, 32, 32, 32, 32, 32, 32,
772 32, 33, 33, 33, 33, 33, 33, 33, 34, 37,
773 39, 35, 41, 38, 42, 43, 44, 47, 49, 50,
774
775 36, 48, 90, 40, 91, 92, 30, 45, 93, 30,
776 30, 97, 105, 46, 67, 34, 37, 39, 35, 41,
777 38, 42, 43, 44, 47, 49, 50, 30, 48, 90,
778 40, 91, 92, 737, 45, 93, 736, 721, 97, 105,
779 46, 53, 53, 53, 53, 53, 53, 53, 30, 720,
780 106, 53, 54, 55, 56, 53, 53, 53, 57, 58,
781 53, 53, 53, 53, 59, 53, 60, 53, 61, 62,
782 63, 64, 65, 53, 53, 53, 53, 106, 53, 54,
783 55, 56, 53, 53, 53, 57, 58, 53, 53, 53,
784 53, 59, 53, 60, 53, 61, 62, 63, 64, 65,
785
786 53, 53, 53, 66, 66, 66, 66, 66, 66, 66,
787 30, 107, 719, 30, 30, 132, 68, 68, 68, 68,
788 68, 68, 68, 70, 70, 70, 70, 70, 70, 70,
789 30, 718, 30, 30, 30, 30, 30, 30, 107, 30,
790 30, 30, 30, 30, 713, 712, 127, 30, 72, 73,
791 30, 30, 30, 30, 133, 128, 30, 31, 74, 69,
792 69, 69, 69, 69, 69, 69, 71, 30, 705, 704,
793 30, 30, 30, 127, 30, 72, 73, 129, 130, 30,
794 75, 30, 128, 30, 131, 74, 30, 30, 30, 30,
795 703, 30, 30, 71, 76, 30, 30, 185, 30, 30,
796
797 30, 30, 30, 702, 129, 130, 695, 75, 134, 30,
798 135, 131, 78, 30, 79, 30, 30, 30, 30, 30,
799 77, 76, 693, 136, 81, 30, 137, 80, 678, 30,
800 30, 88, 30, 30, 82, 134, 186, 135, 30, 78,
801 30, 79, 138, 89, 675, 30, 139, 77, 30, 30,
802 136, 142, 671, 137, 80, 30, 30, 30, 88, 30,
803 30, 82, 83, 30, 143, 94, 30, 30, 144, 138,
804 89, 30, 30, 139, 84, 30, 30, 146, 142, 95,
805 98, 670, 99, 145, 100, 96, 140, 30, 649, 83,
806 85, 143, 94, 141, 147, 144, 86, 648, 30, 30,
807
808 639, 84, 30, 30, 146, 30, 95, 98, 87, 99,
809 145, 100, 96, 140, 30, 30, 638, 85, 30, 30,
810 141, 147, 637, 86, 101, 108, 108, 108, 108, 108,
811 108, 108, 148, 102, 103, 87, 53, 53, 53, 149,
812 104, 30, 53, 53, 636, 603, 168, 169, 53, 113,
813 53, 101, 53, 53, 53, 53, 53, 30, 172, 148,
814 102, 103, 173, 53, 53, 53, 149, 104, 30, 53,
815 53, 30, 30, 168, 169, 53, 113, 53, 180, 53,
816 53, 53, 53, 53, 30, 172, 602, 30, 109, 173,
817 110, 110, 110, 110, 110, 110, 110, 112, 112, 112,
818
819 112, 112, 112, 112, 30, 180, 223, 30, 30, 30,
820 30, 30, 30, 30, 30, 30, 30, 591, 30, 30,
821 30, 30, 30, 578, 577, 117, 30, 30, 226, 576,
822 30, 31, 223, 111, 111, 111, 111, 111, 111, 111,
823 114, 115, 575, 181, 30, 182, 30, 30, 30, 183,
824 116, 30, 30, 30, 226, 30, 30, 574, 30, 30,
825 30, 184, 30, 30, 118, 573, 187, 114, 115, 30,
826 181, 30, 182, 238, 30, 30, 183, 116, 30, 119,
827 30, 30, 30, 30, 30, 120, 30, 568, 184, 170,
828 188, 118, 30, 187, 30, 30, 30, 171, 567, 238,
829
830 30, 30, 472, 30, 30, 189, 119, 266, 122, 471,
831 470, 123, 120, 30, 121, 463, 170, 188, 274, 462,
832 30, 418, 30, 30, 171, 30, 30, 30, 30, 30,
833 190, 415, 189, 266, 30, 122, 30, 125, 123, 30,
834 30, 121, 30, 124, 274, 126, 150, 150, 150, 150,
835 150, 150, 150, 153, 153, 153, 153, 153, 153, 153,
836 154, 338, 192, 193, 125, 30, 194, 30, 324, 191,
837 124, 30, 126, 30, 30, 30, 30, 30, 30, 151,
838 151, 151, 151, 151, 151, 151, 323, 154, 30, 192,
839 193, 30, 30, 194, 30, 195, 30, 30, 30, 30,
840
841 30, 321, 320, 30, 156, 30, 30, 30, 30, 30,
842 155, 232, 158, 30, 157, 30, 30, 52, 197, 30,
843 109, 27, 152, 152, 152, 152, 152, 152, 152, 162,
844 30, 156, 27, 165, 196, 243, 30, 155, 159, 158,
845 30, 157, 52, 30, 30, 30, 200, 30, 198, 30,
846 233, 30, 30, 30, 30, 30, 162, 199, 30, 30,
847 165, 251, 30, 30, 29, 111, 111, 111, 111, 111,
848 111, 111, 160, 200, 244, 198, 161, 30, 163, 28,
849 30, 30, 30, 30, 288, 30, 30, 30, 30, 30,
850 215, 30, 30, 30, 216, 30, 30, 174, 27, 160,
851
852 252, 30, 217, 161, 220, 163, 175, 310, 176, 218,
853 219, 177, 167, 164, 224, 221, 277, 215, 166, 30,
854 178, 216, 179, 289, 174, 30, 738, 30, 30, 217,
855 25, 30, 109, 175, 30, 176, 218, 219, 177, 167,
856 164, 224, 277, 222, 738, 166, 311, 178, 738, 179,
857 201, 201, 201, 201, 201, 201, 201, 30, 738, 225,
858 30, 202, 738, 203, 203, 203, 203, 203, 203, 203,
859 30, 204, 204, 204, 204, 204, 204, 204, 30, 738,
860 30, 30, 30, 30, 30, 30, 225, 30, 30, 30,
861 30, 30, 30, 312, 30, 30, 30, 30, 30, 30,
862
863 738, 30, 305, 207, 30, 30, 208, 30, 227, 738,
864 30, 30, 205, 30, 738, 30, 30, 30, 30, 30,
865 30, 30, 30, 228, 30, 30, 209, 30, 305, 30,
866 738, 211, 313, 738, 206, 227, 30, 30, 738, 205,
867 30, 30, 210, 30, 30, 229, 230, 30, 30, 30,
868 228, 231, 738, 209, 212, 30, 30, 30, 211, 30,
869 30, 234, 738, 30, 235, 213, 236, 237, 239, 210,
870 240, 738, 229, 230, 241, 242, 245, 246, 231, 30,
871 247, 212, 248, 250, 253, 249, 30, 254, 234, 214,
872 327, 235, 213, 236, 237, 239, 30, 240, 30, 30,
873
874 30, 241, 242, 245, 246, 259, 738, 247, 260, 248,
875 250, 253, 249, 267, 254, 738, 214, 255, 255, 255,
876 255, 255, 255, 255, 30, 326, 738, 30, 30, 328,
877 256, 256, 256, 256, 256, 256, 256, 738, 30, 30,
878 267, 268, 30, 30, 738, 30, 738, 261, 30, 30,
879 30, 326, 30, 30, 30, 30, 30, 269, 334, 30,
880 262, 30, 30, 30, 30, 30, 30, 30, 268, 270,
881 30, 202, 263, 257, 257, 257, 257, 257, 257, 257,
882 258, 30, 30, 271, 269, 30, 30, 30, 272, 273,
883 275, 276, 30, 264, 30, 278, 270, 335, 279, 263,
884
885 280, 30, 30, 30, 281, 30, 30, 258, 30, 30,
886 271, 30, 30, 282, 283, 272, 273, 275, 276, 284,
887 264, 285, 278, 738, 30, 279, 286, 280, 287, 290,
888 291, 281, 292, 293, 294, 295, 296, 297, 298, 299,
889 282, 283, 265, 300, 30, 301, 284, 302, 285, 303,
890 30, 304, 738, 286, 341, 287, 290, 291, 379, 292,
891 293, 294, 295, 296, 297, 298, 299, 738, 354, 265,
892 300, 738, 301, 499, 302, 738, 303, 30, 304, 30,
893 30, 202, 30, 30, 379, 306, 306, 306, 306, 306,
894 306, 306, 30, 342, 30, 30, 30, 30, 30, 499,
895
896 30, 314, 308, 30, 30, 30, 315, 355, 30, 30,
897 309, 30, 307, 30, 30, 30, 30, 30, 316, 30,
898 30, 30, 30, 30, 30, 30, 30, 317, 314, 318,
899 319, 322, 325, 315, 30, 738, 30, 738, 329, 307,
900 330, 331, 30, 332, 333, 316, 336, 30, 337, 339,
901 340, 343, 344, 30, 317, 30, 318, 319, 322, 325,
902 345, 346, 30, 347, 30, 329, 348, 330, 331, 349,
903 332, 333, 350, 336, 351, 337, 339, 340, 343, 344,
904 352, 353, 30, 358, 363, 30, 30, 345, 346, 738,
905 347, 30, 738, 348, 30, 30, 349, 738, 359, 350,
906
907 30, 351, 360, 30, 30, 361, 738, 352, 353, 30,
908 358, 357, 30, 30, 362, 356, 356, 356, 356, 356,
909 356, 356, 365, 364, 30, 359, 366, 367, 368, 360,
910 369, 370, 361, 30, 371, 372, 373, 374, 357, 375,
911 376, 362, 30, 377, 378, 380, 381, 382, 383, 365,
912 384, 30, 385, 366, 367, 368, 386, 369, 370, 387,
913 392, 371, 372, 373, 374, 393, 375, 376, 388, 389,
914 377, 378, 380, 381, 382, 383, 394, 384, 396, 385,
915 390, 391, 397, 386, 398, 399, 387, 392, 500, 400,
916 401, 402, 393, 403, 30, 388, 389, 30, 30, 30,
917
918 405, 406, 30, 30, 407, 396, 408, 390, 391, 397,
919 409, 398, 399, 410, 500, 395, 400, 401, 402, 411,
920 403, 412, 413, 414, 416, 417, 419, 405, 406, 420,
921 421, 407, 422, 408, 404, 423, 30, 409, 424, 425,
922 410, 30, 426, 427, 428, 429, 411, 430, 412, 413,
923 414, 416, 417, 419, 431, 432, 420, 421, 433, 422,
924 434, 404, 423, 435, 436, 424, 425, 437, 438, 426,
925 427, 428, 429, 439, 430, 440, 441, 442, 443, 445,
926 446, 431, 432, 448, 449, 433, 444, 434, 447, 450,
927 435, 436, 451, 452, 437, 438, 453, 454, 455, 456,
928
929 439, 457, 440, 441, 442, 443, 445, 446, 459, 460,
930 448, 449, 461, 444, 30, 447, 450, 30, 30, 451,
931 452, 464, 465, 453, 454, 455, 456, 466, 467, 475,
932 468, 469, 473, 474, 477, 459, 460, 478, 479, 461,
933 458, 738, 480, 481, 482, 483, 484, 485, 464, 465,
934 486, 487, 488, 489, 466, 467, 30, 468, 469, 473,
935 474, 477, 490, 491, 478, 479, 492, 493, 476, 480,
936 481, 482, 483, 484, 485, 494, 495, 486, 487, 488,
937 489, 496, 497, 498, 501, 502, 503, 504, 505, 490,
938 491, 506, 507, 492, 493, 508, 509, 510, 511, 512,
939
940 513, 514, 494, 495, 515, 516, 517, 518, 496, 497,
941 498, 501, 502, 503, 504, 505, 519, 520, 506, 507,
942 521, 522, 508, 509, 510, 511, 512, 513, 514, 523,
943 524, 515, 516, 517, 518, 525, 526, 527, 528, 529,
944 530, 531, 532, 519, 520, 533, 534, 521, 522, 535,
945 536, 537, 538, 539, 738, 540, 523, 524, 541, 542,
946 738, 543, 525, 526, 527, 528, 529, 530, 531, 532,
947 544, 545, 533, 534, 546, 547, 535, 536, 537, 538,
948 539, 540, 548, 549, 550, 541, 542, 543, 551, 552,
949 553, 554, 555, 556, 557, 558, 559, 544, 545, 560,
950
951 561, 546, 547, 562, 563, 564, 565, 566, 569, 548,
952 549, 550, 570, 571, 572, 551, 552, 553, 554, 555,
953 556, 557, 558, 559, 579, 580, 560, 561, 581, 582,
954 562, 563, 564, 565, 566, 569, 583, 584, 585, 570,
955 571, 572, 586, 587, 588, 589, 590, 592, 593, 594,
956 595, 579, 580, 596, 597, 581, 582, 598, 599, 600,
957 601, 604, 605, 583, 584, 585, 606, 607, 608, 586,
958 587, 588, 589, 590, 592, 593, 594, 595, 609, 610,
959 596, 597, 611, 612, 598, 599, 600, 601, 604, 605,
960 613, 614, 615, 606, 607, 608, 616, 617, 618, 619,
961
962 620, 621, 622, 623, 624, 609, 610, 625, 626, 611,
963 612, 627, 628, 629, 630, 631, 632, 613, 614, 615,
964 633, 634, 635, 616, 617, 618, 619, 620, 621, 622,
965 623, 624, 640, 641, 625, 626, 642, 643, 627, 628,
966 629, 630, 631, 632, 644, 645, 646, 633, 634, 635,
967 647, 650, 651, 652, 653, 654, 655, 656, 657, 640,
968 641, 658, 659, 642, 643, 660, 661, 662, 663, 664,
969 665, 644, 645, 646, 666, 667, 668, 647, 650, 651,
970 652, 653, 654, 655, 656, 657, 669, 672, 658, 659,
971 673, 674, 660, 661, 662, 663, 664, 665, 676, 677,
972
973 666, 667, 668, 679, 680, 681, 682, 683, 684, 685,
974 686, 687, 669, 688, 672, 689, 690, 673, 674, 691,
975 692, 694, 696, 697, 698, 676, 677, 699, 700, 701,
976 679, 680, 681, 682, 683, 684, 685, 686, 687, 706,
977 688, 707, 689, 690, 708, 709, 691, 692, 694, 696,
978 697, 698, 710, 711, 699, 700, 701, 714, 715, 716,
979 717, 722, 723, 724, 725, 726, 706, 727, 707, 728,
980 729, 708, 709, 730, 731, 732, 733, 734, 735, 710,
981 711, 738, 738, 738, 714, 715, 716, 717, 722, 723,
982 724, 725, 726, 738, 727, 738, 728, 729, 738, 738,
983
984 730, 731, 732, 733, 734, 735, 26, 738, 26, 51,
985 51, 51, 3, 738, 738, 738, 738, 738, 738, 738,
986 738, 738, 738, 738, 738, 738, 738, 738, 738, 738,
987 738, 738, 738, 738, 738, 738, 738, 738, 738, 738,
988 738, 738, 738, 738, 738, 738, 738, 738, 738, 738,
989 738, 738, 738, 738, 738, 738, 738, 738, 738, 738,
990 738, 738, 738, 738, 738, 738, 738, 738, 738, 738,
991 738, 738, 738, 738, 738, 738, 738, 738, 738, 738,
992 738, 738, 738, 738, 738
993 } ;
994
995 static yyconst flex_int16_t yy_chk[2086] =
996 { 0,
997 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
998 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
999 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1000 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1001 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1002 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1003 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1004 1, 1, 11, 15, 11, 11, 11, 11, 11, 11,
1005 11, 12, 12, 12, 12, 12, 12, 12, 14, 16,
1006 17, 14, 18, 16, 19, 20, 21, 22, 23, 24,
1007
1008 15, 22, 55, 17, 56, 57, 30, 21, 58, 30,
1009 30, 60, 63, 21, 742, 14, 16, 17, 14, 18,
1010 16, 19, 20, 21, 22, 23, 24, 740, 22, 55,
1011 17, 56, 57, 733, 21, 58, 732, 711, 60, 63,
1012 21, 28, 28, 28, 28, 28, 28, 28, 30, 710,
1013 64, 28, 28, 28, 28, 28, 28, 28, 28, 28,
1014 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
1015 28, 28, 28, 28, 28, 28, 28, 64, 28, 28,
1016 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
1017 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
1018
1019 28, 28, 28, 29, 29, 29, 29, 29, 29, 29,
1020 31, 65, 709, 31, 31, 93, 31, 31, 31, 31,
1021 31, 31, 31, 33, 33, 33, 33, 33, 33, 33,
1022 35, 708, 36, 35, 35, 36, 36, 34, 65, 37,
1023 34, 34, 37, 37, 699, 698, 88, 38, 35, 36,
1024 38, 38, 31, 32, 93, 89, 32, 32, 37, 32,
1025 32, 32, 32, 32, 32, 32, 34, 39, 689, 688,
1026 39, 39, 35, 88, 36, 35, 36, 90, 91, 34,
1027 38, 37, 89, 40, 92, 37, 40, 40, 41, 38,
1028 687, 41, 41, 34, 39, 32, 42, 139, 43, 42,
1029
1030 42, 43, 43, 686, 90, 91, 679, 38, 94, 39,
1031 95, 92, 41, 44, 42, 45, 44, 44, 45, 45,
1032 40, 39, 676, 96, 44, 40, 97, 43, 658, 46,
1033 41, 54, 46, 46, 45, 94, 139, 95, 42, 41,
1034 43, 42, 98, 54, 655, 47, 99, 40, 47, 47,
1035 96, 101, 651, 97, 43, 44, 48, 45, 54, 48,
1036 48, 45, 46, 49, 102, 59, 49, 49, 103, 98,
1037 54, 46, 50, 99, 47, 50, 50, 104, 101, 59,
1038 61, 650, 61, 103, 61, 59, 100, 47, 621, 46,
1039 48, 102, 59, 100, 105, 103, 49, 620, 48, 67,
1040
1041 609, 47, 67, 67, 104, 49, 59, 61, 50, 61,
1042 103, 61, 59, 100, 50, 71, 608, 48, 71, 71,
1043 100, 105, 607, 49, 62, 66, 66, 66, 66, 66,
1044 66, 66, 106, 62, 62, 50, 53, 53, 53, 107,
1045 62, 67, 53, 53, 606, 564, 127, 128, 53, 71,
1046 53, 62, 53, 53, 53, 53, 53, 71, 130, 106,
1047 62, 62, 131, 53, 53, 53, 107, 62, 72, 53,
1048 53, 72, 72, 127, 128, 53, 71, 53, 134, 53,
1049 53, 53, 53, 53, 68, 130, 563, 68, 68, 131,
1050 68, 68, 68, 68, 68, 68, 68, 70, 70, 70,
1051
1052 70, 70, 70, 70, 73, 134, 174, 73, 73, 74,
1053 72, 75, 74, 74, 75, 75, 76, 552, 77, 76,
1054 76, 77, 77, 535, 534, 77, 68, 69, 177, 533,
1055 69, 69, 174, 69, 69, 69, 69, 69, 69, 69,
1056 73, 75, 532, 135, 78, 136, 73, 78, 78, 137,
1057 76, 74, 79, 75, 177, 79, 79, 531, 76, 80,
1058 77, 138, 80, 80, 78, 530, 140, 73, 75, 69,
1059 135, 81, 136, 188, 81, 81, 137, 76, 82, 79,
1060 83, 82, 82, 83, 83, 80, 78, 525, 138, 129,
1061 141, 78, 84, 140, 79, 84, 84, 129, 524, 188,
1062
1063 86, 80, 423, 86, 86, 142, 79, 215, 83, 422,
1064 421, 84, 80, 81, 82, 414, 129, 141, 224, 413,
1065 82, 371, 83, 85, 129, 87, 85, 85, 87, 87,
1066 143, 368, 142, 215, 84, 83, 113, 86, 84, 113,
1067 113, 82, 86, 85, 224, 87, 108, 108, 108, 108,
1068 108, 108, 108, 112, 112, 112, 112, 112, 112, 112,
1069 113, 290, 144, 145, 86, 85, 146, 87, 278, 143,
1070 85, 115, 87, 109, 115, 115, 109, 109, 113, 109,
1071 109, 109, 109, 109, 109, 109, 277, 113, 114, 144,
1072 145, 114, 114, 146, 116, 147, 117, 116, 116, 117,
1073
1074 117, 275, 274, 123, 115, 120, 123, 123, 120, 120,
1075 114, 183, 117, 115, 116, 109, 110, 51, 148, 110,
1076 110, 27, 110, 110, 110, 110, 110, 110, 110, 120,
1077 114, 115, 26, 123, 147, 193, 116, 114, 117, 117,
1078 119, 116, 25, 119, 119, 123, 149, 120, 148, 118,
1079 183, 121, 118, 118, 121, 121, 120, 148, 110, 111,
1080 123, 198, 111, 111, 10, 111, 111, 111, 111, 111,
1081 111, 111, 118, 149, 193, 148, 119, 122, 121, 9,
1082 122, 122, 119, 124, 238, 126, 124, 124, 126, 126,
1083 168, 118, 125, 121, 169, 125, 125, 132, 8, 118,
1084
1085 198, 111, 170, 119, 173, 121, 132, 266, 132, 171,
1086 172, 133, 125, 122, 175, 173, 227, 168, 124, 122,
1087 133, 169, 133, 238, 132, 124, 3, 126, 152, 170,
1088 2, 152, 152, 132, 125, 132, 171, 172, 133, 125,
1089 122, 175, 227, 173, 0, 124, 266, 133, 0, 133,
1090 150, 150, 150, 150, 150, 150, 150, 151, 0, 176,
1091 151, 151, 0, 151, 151, 151, 151, 151, 151, 151,
1092 152, 153, 153, 153, 153, 153, 153, 153, 154, 0,
1093 155, 154, 154, 155, 155, 156, 176, 157, 156, 156,
1094 157, 157, 158, 267, 159, 158, 158, 159, 159, 151,
1095
1096 0, 160, 254, 159, 160, 160, 159, 161, 178, 0,
1097 161, 161, 154, 162, 0, 163, 162, 162, 163, 163,
1098 154, 164, 155, 179, 164, 164, 161, 156, 254, 157,
1099 0, 163, 267, 0, 158, 178, 159, 165, 0, 154,
1100 165, 165, 162, 160, 166, 180, 181, 166, 166, 161,
1101 179, 182, 0, 161, 164, 162, 167, 163, 163, 167,
1102 167, 184, 0, 164, 185, 165, 186, 187, 189, 162,
1103 190, 0, 180, 181, 191, 192, 194, 195, 182, 165,
1104 195, 164, 196, 197, 199, 196, 166, 200, 184, 167,
1105 281, 185, 165, 186, 187, 189, 206, 190, 167, 206,
1106
1107 206, 191, 192, 194, 195, 206, 0, 195, 206, 196,
1108 197, 199, 196, 216, 200, 0, 167, 201, 201, 201,
1109 201, 201, 201, 201, 202, 280, 0, 202, 202, 281,
1110 202, 202, 202, 202, 202, 202, 202, 0, 206, 207,
1111 216, 217, 207, 207, 0, 205, 0, 207, 205, 205,
1112 208, 280, 209, 208, 208, 209, 209, 218, 287, 210,
1113 208, 211, 210, 210, 211, 211, 202, 203, 217, 219,
1114 203, 203, 209, 203, 203, 203, 203, 203, 203, 203,
1115 205, 207, 212, 220, 218, 212, 212, 205, 222, 223,
1116 225, 226, 208, 210, 209, 228, 219, 287, 229, 209,
1117
1118 230, 210, 213, 211, 231, 213, 213, 205, 214, 203,
1119 220, 214, 214, 232, 233, 222, 223, 225, 226, 234,
1120 210, 235, 228, 0, 212, 229, 236, 230, 237, 239,
1121 240, 231, 241, 242, 243, 244, 245, 246, 247, 248,
1122 232, 233, 214, 249, 213, 250, 234, 251, 235, 252,
1123 214, 253, 0, 236, 293, 237, 239, 240, 331, 241,
1124 242, 243, 244, 245, 246, 247, 248, 0, 305, 214,
1125 249, 0, 250, 451, 251, 0, 252, 257, 253, 256,
1126 257, 257, 256, 256, 331, 256, 256, 256, 256, 256,
1127 256, 256, 258, 293, 259, 258, 258, 259, 259, 451,
1128
1129 260, 268, 259, 260, 260, 261, 269, 305, 261, 261,
1130 260, 262, 258, 263, 262, 262, 263, 263, 270, 257,
1131 264, 256, 265, 264, 264, 265, 265, 271, 268, 272,
1132 273, 276, 279, 269, 258, 0, 259, 0, 282, 258,
1133 283, 284, 260, 285, 286, 270, 288, 261, 289, 291,
1134 292, 294, 295, 262, 271, 263, 272, 273, 276, 279,
1135 296, 297, 264, 298, 265, 282, 299, 283, 284, 300,
1136 285, 286, 301, 288, 302, 289, 291, 292, 294, 295,
1137 303, 304, 307, 310, 315, 307, 307, 296, 297, 0,
1138 298, 308, 0, 299, 308, 308, 300, 0, 311, 301,
1139
1140 309, 302, 312, 309, 309, 313, 0, 303, 304, 306,
1141 310, 307, 306, 306, 314, 306, 306, 306, 306, 306,
1142 306, 306, 316, 315, 307, 311, 317, 318, 319, 312,
1143 320, 321, 313, 308, 322, 323, 324, 325, 307, 327,
1144 328, 314, 309, 329, 330, 332, 333, 334, 335, 316,
1145 336, 306, 337, 317, 318, 319, 339, 320, 321, 340,
1146 343, 322, 323, 324, 325, 344, 327, 328, 341, 341,
1147 329, 330, 332, 333, 334, 335, 345, 336, 346, 337,
1148 342, 342, 347, 339, 348, 349, 340, 343, 452, 351,
1149 352, 354, 344, 355, 356, 341, 341, 356, 356, 357,
1150
1151 358, 359, 357, 357, 360, 346, 361, 342, 342, 347,
1152 362, 348, 349, 363, 452, 345, 351, 352, 354, 364,
1153 355, 365, 366, 367, 369, 370, 372, 358, 359, 373,
1154 374, 360, 375, 361, 357, 376, 356, 362, 377, 378,
1155 363, 357, 379, 380, 381, 382, 364, 383, 365, 366,
1156 367, 369, 370, 372, 384, 385, 373, 374, 386, 375,
1157 387, 357, 376, 388, 389, 377, 378, 390, 391, 379,
1158 380, 381, 382, 392, 383, 393, 394, 395, 396, 397,
1159 398, 384, 385, 399, 400, 386, 396, 387, 398, 401,
1160 388, 389, 402, 403, 390, 391, 405, 406, 407, 408,
1161
1162 392, 409, 393, 394, 395, 396, 397, 398, 410, 411,
1163 399, 400, 412, 396, 404, 398, 401, 404, 404, 402,
1164 403, 415, 416, 405, 406, 407, 408, 417, 418, 426,
1165 419, 420, 424, 425, 427, 410, 411, 428, 429, 412,
1166 409, 0, 430, 431, 432, 433, 434, 435, 415, 416,
1167 436, 437, 438, 439, 417, 418, 404, 419, 420, 424,
1168 425, 427, 440, 441, 428, 429, 442, 443, 426, 430,
1169 431, 432, 433, 434, 435, 444, 445, 436, 437, 438,
1170 439, 446, 447, 448, 453, 454, 455, 456, 457, 440,
1171 441, 458, 459, 442, 443, 460, 461, 462, 463, 464,
1172
1173 465, 466, 444, 445, 467, 468, 469, 471, 446, 447,
1174 448, 453, 454, 455, 456, 457, 472, 473, 458, 459,
1175 474, 475, 460, 461, 462, 463, 464, 465, 466, 476,
1176 477, 467, 468, 469, 471, 478, 479, 480, 481, 482,
1177 483, 484, 485, 472, 473, 486, 487, 474, 475, 488,
1178 491, 492, 493, 494, 0, 495, 476, 477, 496, 497,
1179 0, 498, 478, 479, 480, 481, 482, 483, 484, 485,
1180 501, 502, 486, 487, 503, 504, 488, 491, 492, 493,
1181 494, 495, 505, 506, 507, 496, 497, 498, 508, 509,
1182 510, 511, 512, 513, 514, 515, 516, 501, 502, 517,
1183
1184 518, 503, 504, 519, 520, 521, 522, 523, 526, 505,
1185 506, 507, 527, 528, 529, 508, 509, 510, 511, 512,
1186 513, 514, 515, 516, 538, 539, 517, 518, 541, 542,
1187 519, 520, 521, 522, 523, 526, 544, 545, 546, 527,
1188 528, 529, 547, 548, 549, 550, 551, 553, 554, 555,
1189 556, 538, 539, 557, 558, 541, 542, 559, 560, 561,
1190 562, 565, 566, 544, 545, 546, 569, 570, 571, 547,
1191 548, 549, 550, 551, 553, 554, 555, 556, 572, 575,
1192 557, 558, 576, 577, 559, 560, 561, 562, 565, 566,
1193 578, 579, 581, 569, 570, 571, 583, 584, 585, 586,
1194
1195 587, 588, 589, 590, 592, 572, 575, 593, 594, 576,
1196 577, 595, 596, 597, 598, 599, 600, 578, 579, 581,
1197 601, 604, 605, 583, 584, 585, 586, 587, 588, 589,
1198 590, 592, 610, 611, 593, 594, 612, 613, 595, 596,
1199 597, 598, 599, 600, 616, 617, 618, 601, 604, 605,
1200 619, 622, 623, 624, 625, 626, 627, 628, 629, 610,
1201 611, 630, 631, 612, 613, 632, 633, 634, 635, 636,
1202 637, 616, 617, 618, 640, 641, 642, 619, 622, 623,
1203 624, 625, 626, 627, 628, 629, 643, 652, 630, 631,
1204 653, 654, 632, 633, 634, 635, 636, 637, 656, 657,
1205
1206 640, 641, 642, 659, 660, 661, 662, 663, 664, 665,
1207 666, 667, 643, 668, 652, 669, 672, 653, 654, 673,
1208 674, 677, 680, 681, 682, 656, 657, 683, 684, 685,
1209 659, 660, 661, 662, 663, 664, 665, 666, 667, 690,
1210 668, 691, 669, 672, 692, 694, 673, 674, 677, 680,
1211 681, 682, 696, 697, 683, 684, 685, 700, 701, 706,
1212 707, 712, 713, 714, 715, 722, 690, 723, 691, 724,
1213 725, 692, 694, 726, 727, 728, 729, 730, 731, 696,
1214 697, 0, 0, 0, 700, 701, 706, 707, 712, 713,
1215 714, 715, 722, 0, 723, 0, 724, 725, 0, 0,
1216
1217 726, 727, 728, 729, 730, 731, 739, 0, 739, 741,
1218 741, 741, 738, 738, 738, 738, 738, 738, 738, 738,
1219 738, 738, 738, 738, 738, 738, 738, 738, 738, 738,
1220 738, 738, 738, 738, 738, 738, 738, 738, 738, 738,
1221 738, 738, 738, 738, 738, 738, 738, 738, 738, 738,
1222 738, 738, 738, 738, 738, 738, 738, 738, 738, 738,
1223 738, 738, 738, 738, 738, 738, 738, 738, 738, 738,
1224 738, 738, 738, 738, 738, 738, 738, 738, 738, 738,
1225 738, 738, 738, 738, 738
1226 } ;
1227
1228 static yyconst flex_int16_t yy_rule_linenum[87] =
1229 { 0,
1230 77, 79, 81, 83, 85, 88, 92, 94, 95, 96,
1231 97, 98, 99, 100, 101, 102, 103, 104, 105, 106,
1232 107, 108, 109, 110, 111, 112, 113, 114, 115, 116,
1233 117, 118, 119, 120, 121, 122, 123, 124, 125, 126,
1234 127, 128, 129, 130, 131, 132, 133, 134, 135, 136,
1235 137, 138, 139, 140, 141, 142, 143, 144, 145, 146,
1236 148, 150, 151, 152, 153, 154, 155, 157, 158, 161,
1237 166, 167, 168, 170, 171, 172, 173, 174, 175, 176,
1238 177, 178, 180, 189, 207, 213
1239 } ;
1240
1241 /* The intent behind this definition is that it'll catch
1242 * any uses of REJECT which flex missed.
1243 */
1244 #define REJECT reject_used_but_not_detected
1245 #define yymore() yymore_used_but_not_detected
1246 #define YY_MORE_ADJ 0
1247 #define YY_RESTORE_YY_MORE_OFFSET
1248 #line 1 "libmemcached/options/scanner.l"
1249 /* vim:expandtab:shiftwidth=2:tabstop=2:smarttab:
1250 *
1251 * Libmemcached Scanner and Parser
1252 *
1253 * Copyright (C) 2011 DataDifferental, http://datadifferential.com
1254 *
1255 * This program is free software: you can redistribute it and/or modify
1256 * it under the terms of the GNU Affero General Public License as
1257 * published by the Free Software Foundation, either version 3 of the
1258 * License, or (at your option) any later version.
1259 *
1260 * This program is distributed in the hope that it will be useful,
1261 * but WITHOUT ANY WARRANTY; without even the implied warranty of
1262 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
1263 * GNU Affero General Public License for more details.
1264 *
1265 * You should have received a copy of the GNU Affero General Public License
1266 * along with this program. If not, see <http://www.gnu.org/licenses/>.
1267 */
1268
1269 #line 38 "libmemcached/options/scanner.l"
1270 #include <cstdlib>
1271 #include <cstring>
1272
1273 #define PARAM config_get_extra(yyscanner)
1274
1275 #define get_lex_chars(buffer, result, max_size, context) \
1276 { \
1277 if (context->pos >= context->length) \
1278 { \
1279 result= YY_NULL; \
1280 } \
1281 else \
1282 { \
1283 result= (int)(context->length - context->pos); \
1284 (size_t)result > (size_t)max_size ? result= max_size : 0; \
1285 memcpy(buffer, context->buf + context->pos, result); \
1286 context->pos += result; \
1287 } \
1288 }
1289
1290
1291 #define YY_INPUT(buffer, result, max_size) get_lex_chars(buffer, result, max_size, PARAM)
1292
1293 #line 1294 "libmemcached/options/scanner.cc"
1294
1295 #define INITIAL 0
1296
1297 #ifndef YY_NO_UNISTD_H
1298 /* Special case for "unistd.h", since it is non-ANSI. We include it way
1299 * down here because we want the user's section 1 to have been scanned first.
1300 * The user has a chance to override it with an option.
1301 */
1302 /* %if-c-only */
1303 #include <unistd.h>
1304 /* %endif */
1305 /* %if-c++-only */
1306 /* %endif */
1307 #endif
1308
1309 #ifndef YY_EXTRA_TYPE
1310 #define YY_EXTRA_TYPE void *
1311 #endif
1312
1313 /* %if-c-only Reentrant structure and macros (non-C++). */
1314 /* %if-reentrant */
1315
1316 /* Holds the entire state of the reentrant scanner. */
1317 struct yyguts_t
1318 {
1319
1320 /* User-defined. Not touched by flex. */
1321 YY_EXTRA_TYPE yyextra_r;
1322
1323 /* The rest are the same as the globals declared in the non-reentrant scanner. */
1324 FILE *yyin_r, *yyout_r;
1325 size_t yy_buffer_stack_top; /**< index of top of stack. */
1326 size_t yy_buffer_stack_max; /**< capacity of stack. */
1327 YY_BUFFER_STATE * yy_buffer_stack; /**< Stack as an array. */
1328 char yy_hold_char;
1329 int yy_n_chars;
1330 int yyleng_r;
1331 char *yy_c_buf_p;
1332 int yy_init;
1333 int yy_start;
1334 int yy_did_buffer_switch_on_eof;
1335 int yy_start_stack_ptr;
1336 int yy_start_stack_depth;
1337 int *yy_start_stack;
1338 yy_state_type yy_last_accepting_state;
1339 char* yy_last_accepting_cpos;
1340
1341 int yylineno_r;
1342 int yy_flex_debug_r;
1343
1344 char *yytext_r;
1345 int yy_more_flag;
1346 int yy_more_len;
1347
1348 YYSTYPE * yylval_r;
1349
1350 }; /* end struct yyguts_t */
1351
1352 /* %if-c-only */
1353
1354 static int yy_init_globals (yyscan_t yyscanner );
1355
1356 /* %endif */
1357
1358 /* %if-reentrant */
1359
1360 /* This must go here because YYSTYPE and YYLTYPE are included
1361 * from bison output in section 1.*/
1362 # define yylval yyg->yylval_r
1363
1364 int config_lex_init (yyscan_t* scanner);
1365
1366 int config_lex_init_extra (YY_EXTRA_TYPE user_defined,yyscan_t* scanner);
1367
1368 /* %endif */
1369
1370 /* %endif End reentrant structures and macros. */
1371
1372 /* Accessor methods to globals.
1373 These are made visible to non-reentrant scanners for convenience. */
1374
1375 int config_lex_destroy (yyscan_t yyscanner );
1376
1377 int config_get_debug (yyscan_t yyscanner );
1378
1379 void config_set_debug (int debug_flag ,yyscan_t yyscanner );
1380
1381 YY_EXTRA_TYPE config_get_extra (yyscan_t yyscanner );
1382
1383 void config_set_extra (YY_EXTRA_TYPE user_defined ,yyscan_t yyscanner );
1384
1385 FILE *config_get_in (yyscan_t yyscanner );
1386
1387 void config_set_in (FILE * in_str ,yyscan_t yyscanner );
1388
1389 FILE *config_get_out (yyscan_t yyscanner );
1390
1391 void config_set_out (FILE * out_str ,yyscan_t yyscanner );
1392
1393 int config_get_leng (yyscan_t yyscanner );
1394
1395 char *config_get_text (yyscan_t yyscanner );
1396
1397 int config_get_lineno (yyscan_t yyscanner );
1398
1399 void config_set_lineno (int line_number ,yyscan_t yyscanner );
1400
1401 int config_get_column (yyscan_t yyscanner );
1402
1403 void config_set_column (int column_no ,yyscan_t yyscanner );
1404
1405 /* %if-bison-bridge */
1406
1407 YYSTYPE * config_get_lval (yyscan_t yyscanner );
1408
1409 void config_set_lval (YYSTYPE * yylval_param ,yyscan_t yyscanner );
1410
1411 /* %endif */
1412
1413 /* Macros after this point can all be overridden by user definitions in
1414 * section 1.
1415 */
1416
1417 #ifndef YY_SKIP_YYWRAP
1418 #ifdef __cplusplus
1419 extern "C" int config_wrap (yyscan_t yyscanner );
1420 #else
1421 extern int config_wrap (yyscan_t yyscanner );
1422 #endif
1423 #endif
1424
1425 /* %not-for-header */
1426
1427 /* %ok-for-header */
1428
1429 /* %endif */
1430
1431 #ifndef yytext_ptr
1432 static void yy_flex_strncpy (char *,yyconst char *,int ,yyscan_t yyscanner);
1433 #endif
1434
1435 #ifdef YY_NEED_STRLEN
1436 static int yy_flex_strlen (yyconst char * ,yyscan_t yyscanner);
1437 #endif
1438
1439 #ifndef YY_NO_INPUT
1440 /* %if-c-only Standard (non-C++) definition */
1441 /* %not-for-header */
1442
1443 #ifdef __cplusplus
1444 static int yyinput (yyscan_t yyscanner );
1445 #else
1446 static int input (yyscan_t yyscanner );
1447 #endif
1448 /* %ok-for-header */
1449
1450 /* %endif */
1451 #endif
1452
1453 /* %if-c-only */
1454
1455 /* %endif */
1456
1457 /* Amount of stuff to slurp up with each read. */
1458 #ifndef YY_READ_BUF_SIZE
1459 #define YY_READ_BUF_SIZE 8192
1460 #endif
1461
1462 /* Copy whatever the last rule matched to the standard output. */
1463 #ifndef ECHO
1464 /* %if-c-only Standard (non-C++) definition */
1465 /* This used to be an fputs(), but since the string might contain NUL's,
1466 * we now use fwrite().
1467 */
1468 #define ECHO do { if (fwrite( yytext, yyleng, 1, yyout )) {} } while (0)
1469 /* %endif */
1470 /* %if-c++-only C++ definition */
1471 /* %endif */
1472 #endif
1473
1474 /* Gets input and stuffs it into "buf". number of characters read, or YY_NULL,
1475 * is returned in "result".
1476 */
1477 #ifndef YY_INPUT
1478 #define YY_INPUT(buf,result,max_size) \
1479 /* %% [5.0] fread()/read() definition of YY_INPUT goes here unless we're doing C++ \ */\
1480 if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \
1481 { \
1482 int c = '*'; \
1483 unsigned n; \
1484 for ( n = 0; n < max_size && \
1485 (c = getc( yyin )) != EOF && c != '\n'; ++n ) \
1486 buf[n] = (char) c; \
1487 if ( c == '\n' ) \
1488 buf[n++] = (char) c; \
1489 if ( c == EOF && ferror( yyin ) ) \
1490 YY_FATAL_ERROR( "input in flex scanner failed" ); \
1491 result = n; \
1492 } \
1493 else \
1494 { \
1495 errno=0; \
1496 while ( (result = fread(buf, 1, max_size, yyin))==0 && ferror(yyin)) \
1497 { \
1498 if( errno != EINTR) \
1499 { \
1500 YY_FATAL_ERROR( "input in flex scanner failed" ); \
1501 break; \
1502 } \
1503 errno=0; \
1504 clearerr(yyin); \
1505 } \
1506 }\
1507 \
1508 /* %if-c++-only C++ definition \ */\
1509 /* %endif */
1510
1511 #endif
1512
1513 /* No semi-colon after return; correct usage is to write "yyterminate();" -
1514 * we don't want an extra ';' after the "return" because that will cause
1515 * some compilers to complain about unreachable statements.
1516 */
1517 #ifndef yyterminate
1518 #define yyterminate() return YY_NULL
1519 #endif
1520
1521 /* Number of entries by which start-condition stack grows. */
1522 #ifndef YY_START_STACK_INCR
1523 #define YY_START_STACK_INCR 25
1524 #endif
1525
1526 /* Report a fatal error. */
1527 #ifndef YY_FATAL_ERROR
1528 /* %if-c-only */
1529 #define YY_FATAL_ERROR(msg) yy_fatal_error( msg , yyscanner)
1530 /* %endif */
1531 /* %if-c++-only */
1532 /* %endif */
1533 #endif
1534
1535 /* %if-tables-serialization structures and prototypes */
1536 /* %not-for-header */
1537
1538 /* %ok-for-header */
1539
1540 /* %not-for-header */
1541
1542 /* %tables-yydmap generated elements */
1543 /* %endif */
1544 /* end tables serialization structures and prototypes */
1545
1546 /* %ok-for-header */
1547
1548 /* Default declaration of generated scanner - a define so the user can
1549 * easily add parameters.
1550 */
1551 #ifndef YY_DECL
1552 #define YY_DECL_IS_OURS 1
1553 /* %if-c-only Standard (non-C++) definition */
1554
1555 extern int config_lex \
1556 (YYSTYPE * yylval_param ,yyscan_t yyscanner);
1557
1558 #define YY_DECL int config_lex \
1559 (YYSTYPE * yylval_param , yyscan_t yyscanner)
1560 /* %endif */
1561 /* %if-c++-only C++ definition */
1562 /* %endif */
1563 #endif /* !YY_DECL */
1564
1565 /* Code executed at the beginning of each rule, after yytext and yyleng
1566 * have been set up.
1567 */
1568 #ifndef YY_USER_ACTION
1569 #define YY_USER_ACTION
1570 #endif
1571
1572 /* Code executed at the end of each rule. */
1573 #ifndef YY_BREAK
1574 #define YY_BREAK break;
1575 #endif
1576
1577 /* %% [6.0] YY_RULE_SETUP definition goes here */
1578 #define YY_RULE_SETUP \
1579 if ( yyleng > 0 ) \
1580 YY_CURRENT_BUFFER_LVALUE->yy_at_bol = \
1581 (yytext[yyleng - 1] == '\n'); \
1582 YY_USER_ACTION
1583
1584 /* %not-for-header */
1585
1586 /** The main scanner function which does all the work.
1587 */
1588 YY_DECL
1589 {
1590 register yy_state_type yy_current_state;
1591 register char *yy_cp, *yy_bp;
1592 register int yy_act;
1593 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
1594
1595 /* %% [7.0] user's declarations go here */
1596 #line 74 "libmemcached/options/scanner.l"
1597
1598
1599
1600 #line 1601 "libmemcached/options/scanner.cc"
1601
1602 yylval = yylval_param;
1603
1604 if ( !yyg->yy_init )
1605 {
1606 yyg->yy_init = 1;
1607
1608 #ifdef YY_USER_INIT
1609 YY_USER_INIT;
1610 #endif
1611
1612 if ( ! yyg->yy_start )
1613 yyg->yy_start = 1; /* first start state */
1614
1615 if ( ! yyin )
1616 /* %if-c-only */
1617 yyin = stdin;
1618 /* %endif */
1619 /* %if-c++-only */
1620 /* %endif */
1621
1622 if ( ! yyout )
1623 /* %if-c-only */
1624 yyout = stdout;
1625 /* %endif */
1626 /* %if-c++-only */
1627 /* %endif */
1628
1629 if ( ! YY_CURRENT_BUFFER ) {
1630 config_ensure_buffer_stack (yyscanner);
1631 YY_CURRENT_BUFFER_LVALUE =
1632 config__create_buffer(yyin,YY_BUF_SIZE ,yyscanner);
1633 }
1634
1635 config__load_buffer_state(yyscanner );
1636 }
1637
1638 while ( 1 ) /* loops until end-of-file is reached */
1639 {
1640 /* %% [8.0] yymore()-related code goes here */
1641 yy_cp = yyg->yy_c_buf_p;
1642
1643 /* Support of yytext. */
1644 *yy_cp = yyg->yy_hold_char;
1645
1646 /* yy_bp points to the position in yy_ch_buf of the start of
1647 * the current run.
1648 */
1649 yy_bp = yy_cp;
1650
1651 /* %% [9.0] code to set up and find next match goes here */
1652 yy_current_state = yyg->yy_start;
1653 yy_current_state += YY_AT_BOL();
1654 yy_match:
1655 do
1656 {
1657 register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)];
1658 if ( yy_accept[yy_current_state] )
1659 {
1660 yyg->yy_last_accepting_state = yy_current_state;
1661 yyg->yy_last_accepting_cpos = yy_cp;
1662 }
1663 while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
1664 {
1665 yy_current_state = (int) yy_def[yy_current_state];
1666 if ( yy_current_state >= 739 )
1667 yy_c = yy_meta[(unsigned int) yy_c];
1668 }
1669 yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
1670 ++yy_cp;
1671 }
1672 while ( yy_base[yy_current_state] != 2013 );
1673
1674 yy_find_action:
1675 /* %% [10.0] code to find the action number goes here */
1676 yy_act = yy_accept[yy_current_state];
1677 if ( yy_act == 0 )
1678 { /* have to back up */
1679 yy_cp = yyg->yy_last_accepting_cpos;
1680 yy_current_state = yyg->yy_last_accepting_state;
1681 yy_act = yy_accept[yy_current_state];
1682 }
1683
1684 YY_DO_BEFORE_ACTION;
1685
1686 /* %% [11.0] code for yylineno update goes here */
1687
1688 do_action: /* This label is used only to access EOF actions. */
1689
1690 /* %% [12.0] debug code goes here */
1691 if ( yy_flex_debug )
1692 {
1693 if ( yy_act == 0 )
1694 fprintf( stderr, "--scanner backing up\n" );
1695 else if ( yy_act < 87 )
1696 fprintf( stderr, "--accepting rule at line %ld (\"%s\")\n",
1697 (long)yy_rule_linenum[yy_act], yytext );
1698 else if ( yy_act == 87 )
1699 fprintf( stderr, "--accepting default rule (\"%s\")\n",
1700 yytext );
1701 else if ( yy_act == 88 )
1702 fprintf( stderr, "--(end of buffer or a NUL)\n" );
1703 else
1704 fprintf( stderr, "--EOF (start condition %d)\n", YY_START );
1705 }
1706
1707 switch ( yy_act )
1708 { /* beginning of action switch */
1709 /* %% [13.0] actions go here */
1710 case 0: /* must back up */
1711 /* undo the effects of YY_DO_BEFORE_ACTION */
1712 *yy_cp = yyg->yy_hold_char;
1713 yy_cp = yyg->yy_last_accepting_cpos;
1714 yy_current_state = yyg->yy_last_accepting_state;
1715 goto yy_find_action;
1716
1717 case 1:
1718 YY_RULE_SETUP
1719 #line 77 "libmemcached/options/scanner.l"
1720 { return yytext[0];}
1721 YY_BREAK
1722 case 2:
1723 YY_RULE_SETUP
1724 #line 79 "libmemcached/options/scanner.l"
1725 { yylval->number = atoi(yytext); return (NUMBER); }
1726 YY_BREAK
1727 case 3:
1728 YY_RULE_SETUP
1729 #line 81 "libmemcached/options/scanner.l"
1730 { yylval->server.port = atoi(yytext +1); return PORT; }
1731 YY_BREAK
1732 case 4:
1733 YY_RULE_SETUP
1734 #line 83 "libmemcached/options/scanner.l"
1735 { yylval->server.weight = atoi(yytext +2); return WEIGHT_START; }
1736 YY_BREAK
1737 case 5:
1738 /* rule 5 can match eol */
1739 YY_RULE_SETUP
1740 #line 85 "libmemcached/options/scanner.l"
1741 ; /* skip whitespace */
1742 YY_BREAK
1743 case 6:
1744 *yy_cp = yyg->yy_hold_char; /* undo effects of setting up yytext */
1745 yyg->yy_c_buf_p = yy_cp -= 1;
1746 YY_DO_BEFORE_ACTION; /* set up yytext again */
1747 YY_RULE_SETUP
1748 #line 88 "libmemcached/options/scanner.l"
1749 {
1750 return COMMENT;
1751 }
1752 YY_BREAK
1753 case 7:
1754 YY_RULE_SETUP
1755 #line 92 "libmemcached/options/scanner.l"
1756 { yyextra->begin= yytext; yyextra->set_server(); return SERVER; }
1757 YY_BREAK
1758 case 8:
1759 YY_RULE_SETUP
1760 #line 94 "libmemcached/options/scanner.l"
1761 { yyextra->begin= yytext; return VERIFY_KEY; }
1762 YY_BREAK
1763 case 9:
1764 YY_RULE_SETUP
1765 #line 95 "libmemcached/options/scanner.l"
1766 { yyextra->begin= yytext; return VERIFY_KEY; }
1767 YY_BREAK
1768 case 10:
1769 YY_RULE_SETUP
1770 #line 96 "libmemcached/options/scanner.l"
1771 { yyextra->begin= yytext; return BINARY_PROTOCOL; }
1772 YY_BREAK
1773 case 11:
1774 YY_RULE_SETUP
1775 #line 97 "libmemcached/options/scanner.l"
1776 { yyextra->begin= yytext; return BINARY_PROTOCOL; }
1777 YY_BREAK
1778 case 12:
1779 YY_RULE_SETUP
1780 #line 98 "libmemcached/options/scanner.l"
1781 { yyextra->begin= yytext; return BUFFER_REQUESTS; }
1782 YY_BREAK
1783 case 13:
1784 YY_RULE_SETUP
1785 #line 99 "libmemcached/options/scanner.l"
1786 { yyextra->begin= yytext; return BUFFER_REQUESTS; }
1787 YY_BREAK
1788 case 14:
1789 YY_RULE_SETUP
1790 #line 100 "libmemcached/options/scanner.l"
1791 { yyextra->begin= yytext; return CONFIGURE_FILE; }
1792 YY_BREAK
1793 case 15:
1794 YY_RULE_SETUP
1795 #line 101 "libmemcached/options/scanner.l"
1796 { yyextra->begin= yytext; return CONFIGURE_FILE; }
1797 YY_BREAK
1798 case 16:
1799 YY_RULE_SETUP
1800 #line 102 "libmemcached/options/scanner.l"
1801 { yyextra->begin= yytext; return CONNECT_TIMEOUT; }
1802 YY_BREAK
1803 case 17:
1804 YY_RULE_SETUP
1805 #line 103 "libmemcached/options/scanner.l"
1806 { yyextra->begin= yytext; return CONNECT_TIMEOUT; }
1807 YY_BREAK
1808 case 18:
1809 YY_RULE_SETUP
1810 #line 104 "libmemcached/options/scanner.l"
1811 { yyextra->begin= yytext; return DISTRIBUTION; }
1812 YY_BREAK
1813 case 19:
1814 YY_RULE_SETUP
1815 #line 105 "libmemcached/options/scanner.l"
1816 { yyextra->begin= yytext; return HASH; }
1817 YY_BREAK
1818 case 20:
1819 YY_RULE_SETUP
1820 #line 106 "libmemcached/options/scanner.l"
1821 { yyextra->begin= yytext; return HASH_WITH_NAMESPACE; }
1822 YY_BREAK
1823 case 21:
1824 YY_RULE_SETUP
1825 #line 107 "libmemcached/options/scanner.l"
1826 { yyextra->begin= yytext; return HASH_WITH_NAMESPACE; }
1827 YY_BREAK
1828 case 22:
1829 YY_RULE_SETUP
1830 #line 108 "libmemcached/options/scanner.l"
1831 { yyextra->begin= yytext; return IO_BYTES_WATERMARK; }
1832 YY_BREAK
1833 case 23:
1834 YY_RULE_SETUP
1835 #line 109 "libmemcached/options/scanner.l"
1836 { yyextra->begin= yytext; return IO_BYTES_WATERMARK; }
1837 YY_BREAK
1838 case 24:
1839 YY_RULE_SETUP
1840 #line 110 "libmemcached/options/scanner.l"
1841 { yyextra->begin= yytext; return IO_KEY_PREFETCH; }
1842 YY_BREAK
1843 case 25:
1844 YY_RULE_SETUP
1845 #line 111 "libmemcached/options/scanner.l"
1846 { yyextra->begin= yytext; return IO_KEY_PREFETCH; }
1847 YY_BREAK
1848 case 26:
1849 YY_RULE_SETUP
1850 #line 112 "libmemcached/options/scanner.l"
1851 { yyextra->begin= yytext; return IO_MSG_WATERMARK; }
1852 YY_BREAK
1853 case 27:
1854 YY_RULE_SETUP
1855 #line 113 "libmemcached/options/scanner.l"
1856 { yyextra->begin= yytext; return IO_MSG_WATERMARK; }
1857 YY_BREAK
1858 case 28:
1859 YY_RULE_SETUP
1860 #line 114 "libmemcached/options/scanner.l"
1861 { yyextra->begin= yytext; return NOREPLY; }
1862 YY_BREAK
1863 case 29:
1864 YY_RULE_SETUP
1865 #line 115 "libmemcached/options/scanner.l"
1866 { yyextra->begin= yytext; return NUMBER_OF_REPLICAS; }
1867 YY_BREAK
1868 case 30:
1869 YY_RULE_SETUP
1870 #line 116 "libmemcached/options/scanner.l"
1871 { yyextra->begin= yytext; return NUMBER_OF_REPLICAS; }
1872 YY_BREAK
1873 case 31:
1874 YY_RULE_SETUP
1875 #line 117 "libmemcached/options/scanner.l"
1876 { yyextra->begin= yytext; return POLL_TIMEOUT; }
1877 YY_BREAK
1878 case 32:
1879 YY_RULE_SETUP
1880 #line 118 "libmemcached/options/scanner.l"
1881 { yyextra->begin= yytext; return POLL_TIMEOUT; }
1882 YY_BREAK
1883 case 33:
1884 YY_RULE_SETUP
1885 #line 119 "libmemcached/options/scanner.l"
1886 { yyextra->begin= yytext; return RANDOMIZE_REPLICA_READ; }
1887 YY_BREAK
1888 case 34:
1889 YY_RULE_SETUP
1890 #line 120 "libmemcached/options/scanner.l"
1891 { yyextra->begin= yytext; return RANDOMIZE_REPLICA_READ; }
1892 YY_BREAK
1893 case 35:
1894 YY_RULE_SETUP
1895 #line 121 "libmemcached/options/scanner.l"
1896 { yyextra->begin= yytext; return RCV_TIMEOUT; }
1897 YY_BREAK
1898 case 36:
1899 YY_RULE_SETUP
1900 #line 122 "libmemcached/options/scanner.l"
1901 { yyextra->begin= yytext; return RCV_TIMEOUT; }
1902 YY_BREAK
1903 case 37:
1904 YY_RULE_SETUP
1905 #line 123 "libmemcached/options/scanner.l"
1906 { yyextra->begin= yytext; return RETRY_TIMEOUT; }
1907 YY_BREAK
1908 case 38:
1909 YY_RULE_SETUP
1910 #line 124 "libmemcached/options/scanner.l"
1911 { yyextra->begin= yytext; return RETRY_TIMEOUT; }
1912 YY_BREAK
1913 case 39:
1914 YY_RULE_SETUP
1915 #line 125 "libmemcached/options/scanner.l"
1916 { yyextra->begin= yytext; return SND_TIMEOUT; }
1917 YY_BREAK
1918 case 40:
1919 YY_RULE_SETUP
1920 #line 126 "libmemcached/options/scanner.l"
1921 { yyextra->begin= yytext; return SND_TIMEOUT; }
1922 YY_BREAK
1923 case 41:
1924 YY_RULE_SETUP
1925 #line 127 "libmemcached/options/scanner.l"
1926 { yyextra->begin= yytext; return REMOVE_FAILED_SERVERS; }
1927 YY_BREAK
1928 case 42:
1929 YY_RULE_SETUP
1930 #line 128 "libmemcached/options/scanner.l"
1931 { yyextra->begin= yytext; return REMOVE_FAILED_SERVERS; }
1932 YY_BREAK
1933 case 43:
1934 YY_RULE_SETUP
1935 #line 129 "libmemcached/options/scanner.l"
1936 { yyextra->begin= yytext; return SOCKET_RECV_SIZE; }
1937 YY_BREAK
1938 case 44:
1939 YY_RULE_SETUP
1940 #line 130 "libmemcached/options/scanner.l"
1941 { yyextra->begin= yytext; return SOCKET_RECV_SIZE; }
1942 YY_BREAK
1943 case 45:
1944 YY_RULE_SETUP
1945 #line 131 "libmemcached/options/scanner.l"
1946 { yyextra->begin= yytext; return SOCKET_SEND_SIZE; }
1947 YY_BREAK
1948 case 46:
1949 YY_RULE_SETUP
1950 #line 132 "libmemcached/options/scanner.l"
1951 { yyextra->begin= yytext; return SOCKET_SEND_SIZE; }
1952 YY_BREAK
1953 case 47:
1954 YY_RULE_SETUP
1955 #line 133 "libmemcached/options/scanner.l"
1956 { yyextra->begin= yytext; return SORT_HOSTS; }
1957 YY_BREAK
1958 case 48:
1959 YY_RULE_SETUP
1960 #line 134 "libmemcached/options/scanner.l"
1961 { yyextra->begin= yytext; return SORT_HOSTS; }
1962 YY_BREAK
1963 case 49:
1964 YY_RULE_SETUP
1965 #line 135 "libmemcached/options/scanner.l"
1966 { yyextra->begin= yytext; return SUPPORT_CAS; }
1967 YY_BREAK
1968 case 50:
1969 YY_RULE_SETUP
1970 #line 136 "libmemcached/options/scanner.l"
1971 { yyextra->begin= yytext; return SUPPORT_CAS; }
1972 YY_BREAK
1973 case 51:
1974 YY_RULE_SETUP
1975 #line 137 "libmemcached/options/scanner.l"
1976 { yyextra->begin= yytext; return _TCP_NODELAY; }
1977 YY_BREAK
1978 case 52:
1979 YY_RULE_SETUP
1980 #line 138 "libmemcached/options/scanner.l"
1981 { yyextra->begin= yytext; return _TCP_NODELAY; }
1982 YY_BREAK
1983 case 53:
1984 YY_RULE_SETUP
1985 #line 139 "libmemcached/options/scanner.l"
1986 { yyextra->begin= yytext; return _TCP_KEEPALIVE; }
1987 YY_BREAK
1988 case 54:
1989 YY_RULE_SETUP
1990 #line 140 "libmemcached/options/scanner.l"
1991 { yyextra->begin= yytext; return _TCP_KEEPALIVE; }
1992 YY_BREAK
1993 case 55:
1994 YY_RULE_SETUP
1995 #line 141 "libmemcached/options/scanner.l"
1996 { yyextra->begin= yytext; return _TCP_KEEPIDLE; }
1997 YY_BREAK
1998 case 56:
1999 YY_RULE_SETUP
2000 #line 142 "libmemcached/options/scanner.l"
2001 { yyextra->begin= yytext; return _TCP_KEEPIDLE; }
2002 YY_BREAK
2003 case 57:
2004 YY_RULE_SETUP
2005 #line 143 "libmemcached/options/scanner.l"
2006 { yyextra->begin= yytext; return USER_DATA; }
2007 YY_BREAK
2008 case 58:
2009 YY_RULE_SETUP
2010 #line 144 "libmemcached/options/scanner.l"
2011 { yyextra->begin= yytext; return USER_DATA; }
2012 YY_BREAK
2013 case 59:
2014 YY_RULE_SETUP
2015 #line 145 "libmemcached/options/scanner.l"
2016 { yyextra->begin= yytext; return USE_UDP; }
2017 YY_BREAK
2018 case 60:
2019 YY_RULE_SETUP
2020 #line 146 "libmemcached/options/scanner.l"
2021 { yyextra->begin= yytext; return USE_UDP; }
2022 YY_BREAK
2023 case 61:
2024 YY_RULE_SETUP
2025 #line 148 "libmemcached/options/scanner.l"
2026 { yyextra->begin= yytext; return NAMESPACE; }
2027 YY_BREAK
2028 case 62:
2029 YY_RULE_SETUP
2030 #line 150 "libmemcached/options/scanner.l"
2031 { yyextra->begin= yytext; return INCLUDE; }
2032 YY_BREAK
2033 case 63:
2034 YY_RULE_SETUP
2035 #line 151 "libmemcached/options/scanner.l"
2036 { yyextra->begin= yytext; return RESET; }
2037 YY_BREAK
2038 case 64:
2039 YY_RULE_SETUP
2040 #line 152 "libmemcached/options/scanner.l"
2041 { yyextra->begin= yytext; return PARSER_DEBUG; }
2042 YY_BREAK
2043 case 65:
2044 YY_RULE_SETUP
2045 #line 153 "libmemcached/options/scanner.l"
2046 { yyextra->begin= yytext; return SERVERS; }
2047 YY_BREAK
2048 case 66:
2049 YY_RULE_SETUP
2050 #line 154 "libmemcached/options/scanner.l"
2051 { yyextra->begin= yytext; return END; }
2052 YY_BREAK
2053 case 67:
2054 YY_RULE_SETUP
2055 #line 155 "libmemcached/options/scanner.l"
2056 { yyextra->begin= yytext; return ERROR; }
2057 YY_BREAK
2058 case 68:
2059 YY_RULE_SETUP
2060 #line 157 "libmemcached/options/scanner.l"
2061 { return TRUE; }
2062 YY_BREAK
2063 case 69:
2064 YY_RULE_SETUP
2065 #line 158 "libmemcached/options/scanner.l"
2066 { return FALSE; }
2067 YY_BREAK
2068 case 70:
2069 YY_RULE_SETUP
2070 #line 161 "libmemcached/options/scanner.l"
2071 {
2072 yyextra->begin= yytext;
2073 return UNKNOWN_OPTION;
2074 }
2075 YY_BREAK
2076 case 71:
2077 YY_RULE_SETUP
2078 #line 166 "libmemcached/options/scanner.l"
2079 { return CONSISTENT; }
2080 YY_BREAK
2081 case 72:
2082 YY_RULE_SETUP
2083 #line 167 "libmemcached/options/scanner.l"
2084 { return MODULA; }
2085 YY_BREAK
2086 case 73:
2087 YY_RULE_SETUP
2088 #line 168 "libmemcached/options/scanner.l"
2089 { return RANDOM; }
2090 YY_BREAK
2091 case 74:
2092 YY_RULE_SETUP
2093 #line 170 "libmemcached/options/scanner.l"
2094 { return MD5; }
2095 YY_BREAK
2096 case 75:
2097 YY_RULE_SETUP
2098 #line 171 "libmemcached/options/scanner.l"
2099 { return CRC; }
2100 YY_BREAK
2101 case 76:
2102 YY_RULE_SETUP
2103 #line 172 "libmemcached/options/scanner.l"
2104 { return FNV1_64; }
2105 YY_BREAK
2106 case 77:
2107 YY_RULE_SETUP
2108 #line 173 "libmemcached/options/scanner.l"
2109 { return FNV1A_64; }
2110 YY_BREAK
2111 case 78:
2112 YY_RULE_SETUP
2113 #line 174 "libmemcached/options/scanner.l"
2114 { return FNV1_32; }
2115 YY_BREAK
2116 case 79:
2117 YY_RULE_SETUP
2118 #line 175 "libmemcached/options/scanner.l"
2119 { return FNV1A_32; }
2120 YY_BREAK
2121 case 80:
2122 YY_RULE_SETUP
2123 #line 176 "libmemcached/options/scanner.l"
2124 { return HSIEH; }
2125 YY_BREAK
2126 case 81:
2127 YY_RULE_SETUP
2128 #line 177 "libmemcached/options/scanner.l"
2129 { return MURMUR; }
2130 YY_BREAK
2131 case 82:
2132 YY_RULE_SETUP
2133 #line 178 "libmemcached/options/scanner.l"
2134 { return JENKINS; }
2135 YY_BREAK
2136 case 83:
2137 YY_RULE_SETUP
2138 #line 180 "libmemcached/options/scanner.l"
2139 {
2140 yylval->server.port= MEMCACHED_DEFAULT_PORT;
2141 yylval->server.weight= 1;
2142 yylval->server.c_str= yyextra->set_hostname(yytext, yyleng);
2143 if (yylval->server.c_str)
2144 yylval->server.length= yyleng;
2145 return IPADDRESS;
2146 }
2147 YY_BREAK
2148 case 84:
2149 YY_RULE_SETUP
2150 #line 189 "libmemcached/options/scanner.l"
2151 {
2152 if (yyextra->is_server())
2153 {
2154 yylval->server.port= MEMCACHED_DEFAULT_PORT;
2155 yylval->server.weight= 1;
2156 yylval->server.c_str= yyextra->set_hostname(yytext, yyleng);
2157 if (yylval->server.c_str)
2158 yylval->server.length= yyleng;
2159
2160 return HOSTNAME;
2161 }
2162
2163 yylval->string.c_str = yytext;
2164 yylval->string.length = yyleng;
2165
2166 return STRING;
2167 }
2168 YY_BREAK
2169 case 85:
2170 YY_RULE_SETUP
2171 #line 207 "libmemcached/options/scanner.l"
2172 {
2173 yylval->string.c_str = yytext;
2174 yylval->string.length = yyleng;
2175 return QUOTED_STRING;
2176 }
2177 YY_BREAK
2178 case 86:
2179 YY_RULE_SETUP
2180 #line 213 "libmemcached/options/scanner.l"
2181 {
2182 yyextra->begin= yytext;
2183 return UNKNOWN;
2184 }
2185 YY_BREAK
2186 case 87:
2187 YY_RULE_SETUP
2188 #line 218 "libmemcached/options/scanner.l"
2189 ECHO;
2190 YY_BREAK
2191 #line 2192 "libmemcached/options/scanner.cc"
2192 case YY_STATE_EOF(INITIAL):
2193 yyterminate();
2194
2195 case YY_END_OF_BUFFER:
2196 {
2197 /* Amount of text matched not including the EOB char. */
2198 int yy_amount_of_matched_text = (int) (yy_cp - yyg->yytext_ptr) - 1;
2199
2200 /* Undo the effects of YY_DO_BEFORE_ACTION. */
2201 *yy_cp = yyg->yy_hold_char;
2202 YY_RESTORE_YY_MORE_OFFSET
2203
2204 if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW )
2205 {
2206 /* We're scanning a new file or input source. It's
2207 * possible that this happened because the user
2208 * just pointed yyin at a new source and called
2209 * config_lex(). If so, then we have to assure
2210 * consistency between YY_CURRENT_BUFFER and our
2211 * globals. Here is the right place to do so, because
2212 * this is the first action (other than possibly a
2213 * back-up) that will match for the new input source.
2214 */
2215 yyg->yy_n_chars = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
2216 YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin;
2217 YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL;
2218 }
2219
2220 /* Note that here we test for yy_c_buf_p "<=" to the position
2221 * of the first EOB in the buffer, since yy_c_buf_p will
2222 * already have been incremented past the NUL character
2223 * (since all states make transitions on EOB to the
2224 * end-of-buffer state). Contrast this with the test
2225 * in input().
2226 */
2227 if ( yyg->yy_c_buf_p <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] )
2228 { /* This was really a NUL. */
2229 yy_state_type yy_next_state;
2230
2231 yyg->yy_c_buf_p = yyg->yytext_ptr + yy_amount_of_matched_text;
2232
2233 yy_current_state = yy_get_previous_state( yyscanner );
2234
2235 /* Okay, we're now positioned to make the NUL
2236 * transition. We couldn't have
2237 * yy_get_previous_state() go ahead and do it
2238 * for us because it doesn't know how to deal
2239 * with the possibility of jamming (and we don't
2240 * want to build jamming into it because then it
2241 * will run more slowly).
2242 */
2243
2244 yy_next_state = yy_try_NUL_trans( yy_current_state , yyscanner);
2245
2246 yy_bp = yyg->yytext_ptr + YY_MORE_ADJ;
2247
2248 if ( yy_next_state )
2249 {
2250 /* Consume the NUL. */
2251 yy_cp = ++yyg->yy_c_buf_p;
2252 yy_current_state = yy_next_state;
2253 goto yy_match;
2254 }
2255
2256 else
2257 {
2258 /* %% [14.0] code to do back-up for compressed tables and set up yy_cp goes here */
2259 yy_cp = yyg->yy_c_buf_p;
2260 goto yy_find_action;
2261 }
2262 }
2263
2264 else switch ( yy_get_next_buffer( yyscanner ) )
2265 {
2266 case EOB_ACT_END_OF_FILE:
2267 {
2268 yyg->yy_did_buffer_switch_on_eof = 0;
2269
2270 if ( config_wrap(yyscanner ) )
2271 {
2272 /* Note: because we've taken care in
2273 * yy_get_next_buffer() to have set up
2274 * yytext, we can now set up
2275 * yy_c_buf_p so that if some total
2276 * hoser (like flex itself) wants to
2277 * call the scanner after we return the
2278 * YY_NULL, it'll still work - another
2279 * YY_NULL will get returned.
2280 */
2281 yyg->yy_c_buf_p = yyg->yytext_ptr + YY_MORE_ADJ;
2282
2283 yy_act = YY_STATE_EOF(YY_START);
2284 goto do_action;
2285 }
2286
2287 else
2288 {
2289 if ( ! yyg->yy_did_buffer_switch_on_eof )
2290 YY_NEW_FILE;
2291 }
2292 break;
2293 }
2294
2295 case EOB_ACT_CONTINUE_SCAN:
2296 yyg->yy_c_buf_p =
2297 yyg->yytext_ptr + yy_amount_of_matched_text;
2298
2299 yy_current_state = yy_get_previous_state( yyscanner );
2300
2301 yy_cp = yyg->yy_c_buf_p;
2302 yy_bp = yyg->yytext_ptr + YY_MORE_ADJ;
2303 goto yy_match;
2304
2305 case EOB_ACT_LAST_MATCH:
2306 yyg->yy_c_buf_p =
2307 &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars];
2308
2309 yy_current_state = yy_get_previous_state( yyscanner );
2310
2311 yy_cp = yyg->yy_c_buf_p;
2312 yy_bp = yyg->yytext_ptr + YY_MORE_ADJ;
2313 goto yy_find_action;
2314 }
2315 break;
2316 }
2317
2318 default:
2319 YY_FATAL_ERROR(
2320 "fatal flex scanner internal error--no action found" );
2321 } /* end of action switch */
2322 } /* end of scanning one token */
2323 } /* end of config_lex */
2324 /* %ok-for-header */
2325
2326 /* %if-c++-only */
2327 /* %not-for-header */
2328
2329 /* %ok-for-header */
2330
2331 /* %endif */
2332
2333 /* yy_get_next_buffer - try to read in a new buffer
2334 *
2335 * Returns a code representing an action:
2336 * EOB_ACT_LAST_MATCH -
2337 * EOB_ACT_CONTINUE_SCAN - continue scanning from current position
2338 * EOB_ACT_END_OF_FILE - end of file
2339 */
2340 /* %if-c-only */
2341 static int yy_get_next_buffer (yyscan_t yyscanner)
2342 /* %endif */
2343 /* %if-c++-only */
2344 /* %endif */
2345 {
2346 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2347 register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;
2348 register char *source = yyg->yytext_ptr;
2349 register int number_to_move, i;
2350 int ret_val;
2351
2352 if ( yyg->yy_c_buf_p > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars + 1] )
2353 YY_FATAL_ERROR(
2354 "fatal flex scanner internal error--end of buffer missed" );
2355
2356 if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 )
2357 { /* Don't try to fill the buffer, so this is an EOF. */
2358 if ( yyg->yy_c_buf_p - yyg->yytext_ptr - YY_MORE_ADJ == 1 )
2359 {
2360 /* We matched a single character, the EOB, so
2361 * treat this as a final EOF.
2362 */
2363 return EOB_ACT_END_OF_FILE;
2364 }
2365
2366 else
2367 {
2368 /* We matched some text prior to the EOB, first
2369 * process it.
2370 */
2371 return EOB_ACT_LAST_MATCH;
2372 }
2373 }
2374
2375 /* Try to read more data. */
2376
2377 /* First move last chars to start of buffer. */
2378 number_to_move = (int) (yyg->yy_c_buf_p - yyg->yytext_ptr) - 1;
2379
2380 for ( i = 0; i < number_to_move; ++i )
2381 *(dest++) = *(source++);
2382
2383 if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING )
2384 /* don't do the read, it's not guaranteed to return an EOF,
2385 * just force an EOF
2386 */
2387 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars = 0;
2388
2389 else
2390 {
2391 int num_to_read =
2392 YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;
2393
2394 while ( num_to_read <= 0 )
2395 { /* Not enough room in the buffer - grow it. */
2396
2397 /* just a shorter name for the current buffer */
2398 YY_BUFFER_STATE b = YY_CURRENT_BUFFER;
2399
2400 int yy_c_buf_p_offset =
2401 (int) (yyg->yy_c_buf_p - b->yy_ch_buf);
2402
2403 if ( b->yy_is_our_buffer )
2404 {
2405 int new_size = b->yy_buf_size * 2;
2406
2407 if ( new_size <= 0 )
2408 b->yy_buf_size += b->yy_buf_size / 8;
2409 else
2410 b->yy_buf_size *= 2;
2411
2412 b->yy_ch_buf = (char *)
2413 /* Include room in for 2 EOB chars. */
2414 config_realloc((void *) b->yy_ch_buf,b->yy_buf_size + 2 ,yyscanner );
2415 }
2416 else
2417 /* Can't grow it, we don't own it. */
2418 b->yy_ch_buf = 0;
2419
2420 if ( ! b->yy_ch_buf )
2421 YY_FATAL_ERROR(
2422 "fatal error - scanner input buffer overflow" );
2423
2424 yyg->yy_c_buf_p = &b->yy_ch_buf[yy_c_buf_p_offset];
2425
2426 num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size -
2427 number_to_move - 1;
2428
2429 }
2430
2431 if ( num_to_read > YY_READ_BUF_SIZE )
2432 num_to_read = YY_READ_BUF_SIZE;
2433
2434 /* Read in more data. */
2435 YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]),
2436 yyg->yy_n_chars, (size_t) num_to_read );
2437
2438 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars;
2439 }
2440
2441 if ( yyg->yy_n_chars == 0 )
2442 {
2443 if ( number_to_move == YY_MORE_ADJ )
2444 {
2445 ret_val = EOB_ACT_END_OF_FILE;
2446 config_restart(yyin ,yyscanner);
2447 }
2448
2449 else
2450 {
2451 ret_val = EOB_ACT_LAST_MATCH;
2452 YY_CURRENT_BUFFER_LVALUE->yy_buffer_status =
2453 YY_BUFFER_EOF_PENDING;
2454 }
2455 }
2456
2457 else
2458 ret_val = EOB_ACT_CONTINUE_SCAN;
2459
2460 if ((yy_size_t) (yyg->yy_n_chars + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) {
2461 /* Extend the array by 50%, plus the number we really need. */
2462 yy_size_t new_size = yyg->yy_n_chars + number_to_move + (yyg->yy_n_chars >> 1);
2463 YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) config_realloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,new_size ,yyscanner );
2464 if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
2465 YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" );
2466 }
2467
2468 yyg->yy_n_chars += number_to_move;
2469 YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] = YY_END_OF_BUFFER_CHAR;
2470 YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars + 1] = YY_END_OF_BUFFER_CHAR;
2471
2472 yyg->yytext_ptr = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0];
2473
2474 return ret_val;
2475 }
2476
2477 /* yy_get_previous_state - get the state just before the EOB char was reached */
2478
2479 /* %if-c-only */
2480 /* %not-for-header */
2481
2482 static yy_state_type yy_get_previous_state (yyscan_t yyscanner)
2483 /* %endif */
2484 /* %if-c++-only */
2485 /* %endif */
2486 {
2487 register yy_state_type yy_current_state;
2488 register char *yy_cp;
2489 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2490
2491 /* %% [15.0] code to get the start state into yy_current_state goes here */
2492 yy_current_state = yyg->yy_start;
2493 yy_current_state += YY_AT_BOL();
2494
2495 for ( yy_cp = yyg->yytext_ptr + YY_MORE_ADJ; yy_cp < yyg->yy_c_buf_p; ++yy_cp )
2496 {
2497 /* %% [16.0] code to find the next state goes here */
2498 register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
2499 if ( yy_accept[yy_current_state] )
2500 {
2501 yyg->yy_last_accepting_state = yy_current_state;
2502 yyg->yy_last_accepting_cpos = yy_cp;
2503 }
2504 while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
2505 {
2506 yy_current_state = (int) yy_def[yy_current_state];
2507 if ( yy_current_state >= 739 )
2508 yy_c = yy_meta[(unsigned int) yy_c];
2509 }
2510 yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
2511 }
2512
2513 return yy_current_state;
2514 }
2515
2516 /* yy_try_NUL_trans - try to make a transition on the NUL character
2517 *
2518 * synopsis
2519 * next_state = yy_try_NUL_trans( current_state );
2520 */
2521 /* %if-c-only */
2522 static yy_state_type yy_try_NUL_trans (yy_state_type yy_current_state , yyscan_t yyscanner)
2523 /* %endif */
2524 /* %if-c++-only */
2525 /* %endif */
2526 {
2527 register int yy_is_jam;
2528 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; /* This var may be unused depending upon options. */
2529 /* %% [17.0] code to find the next state, and perhaps do backing up, goes here */
2530 register char *yy_cp = yyg->yy_c_buf_p;
2531
2532 register YY_CHAR yy_c = 1;
2533 if ( yy_accept[yy_current_state] )
2534 {
2535 yyg->yy_last_accepting_state = yy_current_state;
2536 yyg->yy_last_accepting_cpos = yy_cp;
2537 }
2538 while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
2539 {
2540 yy_current_state = (int) yy_def[yy_current_state];
2541 if ( yy_current_state >= 739 )
2542 yy_c = yy_meta[(unsigned int) yy_c];
2543 }
2544 yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
2545 yy_is_jam = (yy_current_state == 738);
2546
2547 return yy_is_jam ? 0 : yy_current_state;
2548 }
2549
2550 /* %if-c-only */
2551
2552 /* %endif */
2553
2554 /* %if-c-only */
2555 #ifndef YY_NO_INPUT
2556 #ifdef __cplusplus
2557 static int yyinput (yyscan_t yyscanner)
2558 #else
2559 static int input (yyscan_t yyscanner)
2560 #endif
2561
2562 /* %endif */
2563 /* %if-c++-only */
2564 /* %endif */
2565 {
2566 int c;
2567 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2568
2569 *yyg->yy_c_buf_p = yyg->yy_hold_char;
2570
2571 if ( *yyg->yy_c_buf_p == YY_END_OF_BUFFER_CHAR )
2572 {
2573 /* yy_c_buf_p now points to the character we want to return.
2574 * If this occurs *before* the EOB characters, then it's a
2575 * valid NUL; if not, then we've hit the end of the buffer.
2576 */
2577 if ( yyg->yy_c_buf_p < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] )
2578 /* This was really a NUL. */
2579 *yyg->yy_c_buf_p = '\0';
2580
2581 else
2582 { /* need more input */
2583 int offset = yyg->yy_c_buf_p - yyg->yytext_ptr;
2584 ++yyg->yy_c_buf_p;
2585
2586 switch ( yy_get_next_buffer( yyscanner ) )
2587 {
2588 case EOB_ACT_LAST_MATCH:
2589 /* This happens because yy_g_n_b()
2590 * sees that we've accumulated a
2591 * token and flags that we need to
2592 * try matching the token before
2593 * proceeding. But for input(),
2594 * there's no matching to consider.
2595 * So convert the EOB_ACT_LAST_MATCH
2596 * to EOB_ACT_END_OF_FILE.
2597 */
2598
2599 /* Reset buffer status. */
2600 config_restart(yyin ,yyscanner);
2601
2602 /*FALLTHROUGH*/
2603
2604 case EOB_ACT_END_OF_FILE:
2605 {
2606 if ( config_wrap(yyscanner ) )
2607 return EOF;
2608
2609 if ( ! yyg->yy_did_buffer_switch_on_eof )
2610 YY_NEW_FILE;
2611 #ifdef __cplusplus
2612 return yyinput(yyscanner);
2613 #else
2614 return input(yyscanner);
2615 #endif
2616 }
2617
2618 case EOB_ACT_CONTINUE_SCAN:
2619 yyg->yy_c_buf_p = yyg->yytext_ptr + offset;
2620 break;
2621 }
2622 }
2623 }
2624
2625 c = *(unsigned char *) yyg->yy_c_buf_p; /* cast for 8-bit char's */
2626 *yyg->yy_c_buf_p = '\0'; /* preserve yytext */
2627 yyg->yy_hold_char = *++yyg->yy_c_buf_p;
2628
2629 /* %% [19.0] update BOL and yylineno */
2630 YY_CURRENT_BUFFER_LVALUE->yy_at_bol = (c == '\n');
2631
2632 return c;
2633 }
2634 /* %if-c-only */
2635 #endif /* ifndef YY_NO_INPUT */
2636 /* %endif */
2637
2638 /** Immediately switch to a different input stream.
2639 * @param input_file A readable stream.
2640 * @param yyscanner The scanner object.
2641 * @note This function does not reset the start condition to @c INITIAL .
2642 */
2643 /* %if-c-only */
2644 void config_restart (FILE * input_file , yyscan_t yyscanner)
2645 /* %endif */
2646 /* %if-c++-only */
2647 /* %endif */
2648 {
2649 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2650
2651 if ( ! YY_CURRENT_BUFFER ){
2652 config_ensure_buffer_stack (yyscanner);
2653 YY_CURRENT_BUFFER_LVALUE =
2654 config__create_buffer(yyin,YY_BUF_SIZE ,yyscanner);
2655 }
2656
2657 config__init_buffer(YY_CURRENT_BUFFER,input_file ,yyscanner);
2658 config__load_buffer_state(yyscanner );
2659 }
2660
2661 /** Switch to a different input buffer.
2662 * @param new_buffer The new input buffer.
2663 * @param yyscanner The scanner object.
2664 */
2665 /* %if-c-only */
2666 void config__switch_to_buffer (YY_BUFFER_STATE new_buffer , yyscan_t yyscanner)
2667 /* %endif */
2668 /* %if-c++-only */
2669 /* %endif */
2670 {
2671 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2672
2673 /* TODO. We should be able to replace this entire function body
2674 * with
2675 * config_pop_buffer_state();
2676 * config_push_buffer_state(new_buffer);
2677 */
2678 config_ensure_buffer_stack (yyscanner);
2679 if ( YY_CURRENT_BUFFER == new_buffer )
2680 return;
2681
2682 if ( YY_CURRENT_BUFFER )
2683 {
2684 /* Flush out information for old buffer. */
2685 *yyg->yy_c_buf_p = yyg->yy_hold_char;
2686 YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = yyg->yy_c_buf_p;
2687 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars;
2688 }
2689
2690 YY_CURRENT_BUFFER_LVALUE = new_buffer;
2691 config__load_buffer_state(yyscanner );
2692
2693 /* We don't actually know whether we did this switch during
2694 * EOF (config_wrap()) processing, but the only time this flag
2695 * is looked at is after config_wrap() is called, so it's safe
2696 * to go ahead and always set it.
2697 */
2698 yyg->yy_did_buffer_switch_on_eof = 1;
2699 }
2700
2701 /* %if-c-only */
2702 static void config__load_buffer_state (yyscan_t yyscanner)
2703 /* %endif */
2704 /* %if-c++-only */
2705 /* %endif */
2706 {
2707 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2708 yyg->yy_n_chars = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
2709 yyg->yytext_ptr = yyg->yy_c_buf_p = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos;
2710 yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file;
2711 yyg->yy_hold_char = *yyg->yy_c_buf_p;
2712 }
2713
2714 /** Allocate and initialize an input buffer state.
2715 * @param file A readable stream.
2716 * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE.
2717 * @param yyscanner The scanner object.
2718 * @return the allocated buffer state.
2719 */
2720 /* %if-c-only */
2721 YY_BUFFER_STATE config__create_buffer (FILE * file, int size , yyscan_t yyscanner)
2722 /* %endif */
2723 /* %if-c++-only */
2724 /* %endif */
2725 {
2726 YY_BUFFER_STATE b;
2727
2728 b = (YY_BUFFER_STATE) config_alloc(sizeof( struct yy_buffer_state ) ,yyscanner );
2729 if ( ! b )
2730 YY_FATAL_ERROR( "out of dynamic memory in config__create_buffer()" );
2731
2732 b->yy_buf_size = size;
2733
2734 /* yy_ch_buf has to be 2 characters longer than the size given because
2735 * we need to put in 2 end-of-buffer characters.
2736 */
2737 b->yy_ch_buf = (char *) config_alloc(b->yy_buf_size + 2 ,yyscanner );
2738 if ( ! b->yy_ch_buf )
2739 YY_FATAL_ERROR( "out of dynamic memory in config__create_buffer()" );
2740
2741 b->yy_is_our_buffer = 1;
2742
2743 config__init_buffer(b,file ,yyscanner);
2744
2745 return b;
2746 }
2747
2748 /** Destroy the buffer.
2749 * @param b a buffer created with config__create_buffer()
2750 * @param yyscanner The scanner object.
2751 */
2752 /* %if-c-only */
2753 void config__delete_buffer (YY_BUFFER_STATE b , yyscan_t yyscanner)
2754 /* %endif */
2755 /* %if-c++-only */
2756 /* %endif */
2757 {
2758 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2759
2760 if ( ! b )
2761 return;
2762
2763 if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */
2764 YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0;
2765
2766 if ( b->yy_is_our_buffer )
2767 config_free((void *) b->yy_ch_buf ,yyscanner );
2768
2769 config_free((void *) b ,yyscanner );
2770 }
2771
2772 /* %if-c-only */
2773
2774 #ifndef __cplusplus
2775 extern int isatty (int );
2776 #endif /* __cplusplus */
2777
2778 /* %endif */
2779
2780 /* %if-c++-only */
2781 /* %endif */
2782
2783 /* Initializes or reinitializes a buffer.
2784 * This function is sometimes called more than once on the same buffer,
2785 * such as during a config_restart() or at EOF.
2786 */
2787 /* %if-c-only */
2788 static void config__init_buffer (YY_BUFFER_STATE b, FILE * file , yyscan_t yyscanner)
2789 /* %endif */
2790 /* %if-c++-only */
2791 /* %endif */
2792
2793 {
2794 int oerrno = errno;
2795 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2796
2797 config__flush_buffer(b ,yyscanner);
2798
2799 b->yy_input_file = file;
2800 b->yy_fill_buffer = 1;
2801
2802 /* If b is the current buffer, then config__init_buffer was _probably_
2803 * called from config_restart() or through yy_get_next_buffer.
2804 * In that case, we don't want to reset the lineno or column.
2805 */
2806 if (b != YY_CURRENT_BUFFER){
2807 b->yy_bs_lineno = 1;
2808 b->yy_bs_column = 0;
2809 }
2810
2811 /* %if-c-only */
2812
2813 b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0;
2814
2815 /* %endif */
2816 /* %if-c++-only */
2817 /* %endif */
2818 errno = oerrno;
2819 }
2820
2821 /** Discard all buffered characters. On the next scan, YY_INPUT will be called.
2822 * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER.
2823 * @param yyscanner The scanner object.
2824 */
2825 /* %if-c-only */
2826 void config__flush_buffer (YY_BUFFER_STATE b , yyscan_t yyscanner)
2827 /* %endif */
2828 /* %if-c++-only */
2829 /* %endif */
2830 {
2831 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2832 if ( ! b )
2833 return;
2834
2835 b->yy_n_chars = 0;
2836
2837 /* We always need two end-of-buffer characters. The first causes
2838 * a transition to the end-of-buffer state. The second causes
2839 * a jam in that state.
2840 */
2841 b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;
2842 b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;
2843
2844 b->yy_buf_pos = &b->yy_ch_buf[0];
2845
2846 b->yy_at_bol = 1;
2847 b->yy_buffer_status = YY_BUFFER_NEW;
2848
2849 if ( b == YY_CURRENT_BUFFER )
2850 config__load_buffer_state(yyscanner );
2851 }
2852
2853 /* %if-c-or-c++ */
2854 /** Pushes the new state onto the stack. The new state becomes
2855 * the current state. This function will allocate the stack
2856 * if necessary.
2857 * @param new_buffer The new state.
2858 * @param yyscanner The scanner object.
2859 */
2860 /* %if-c-only */
2861 void config_push_buffer_state (YY_BUFFER_STATE new_buffer , yyscan_t yyscanner)
2862 /* %endif */
2863 /* %if-c++-only */
2864 /* %endif */
2865 {
2866 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2867 if (new_buffer == NULL)
2868 return;
2869
2870 config_ensure_buffer_stack(yyscanner);
2871
2872 /* This block is copied from config__switch_to_buffer. */
2873 if ( YY_CURRENT_BUFFER )
2874 {
2875 /* Flush out information for old buffer. */
2876 *yyg->yy_c_buf_p = yyg->yy_hold_char;
2877 YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = yyg->yy_c_buf_p;
2878 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars;
2879 }
2880
2881 /* Only push if top exists. Otherwise, replace top. */
2882 if (YY_CURRENT_BUFFER)
2883 yyg->yy_buffer_stack_top++;
2884 YY_CURRENT_BUFFER_LVALUE = new_buffer;
2885
2886 /* copied from config__switch_to_buffer. */
2887 config__load_buffer_state(yyscanner );
2888 yyg->yy_did_buffer_switch_on_eof = 1;
2889 }
2890 /* %endif */
2891
2892 /* %if-c-or-c++ */
2893 /** Removes and deletes the top of the stack, if present.
2894 * The next element becomes the new top.
2895 * @param yyscanner The scanner object.
2896 */
2897 /* %if-c-only */
2898 void config_pop_buffer_state (yyscan_t yyscanner)
2899 /* %endif */
2900 /* %if-c++-only */
2901 /* %endif */
2902 {
2903 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2904 if (!YY_CURRENT_BUFFER)
2905 return;
2906
2907 config__delete_buffer(YY_CURRENT_BUFFER ,yyscanner);
2908 YY_CURRENT_BUFFER_LVALUE = NULL;
2909 if (yyg->yy_buffer_stack_top > 0)
2910 --yyg->yy_buffer_stack_top;
2911
2912 if (YY_CURRENT_BUFFER) {
2913 config__load_buffer_state(yyscanner );
2914 yyg->yy_did_buffer_switch_on_eof = 1;
2915 }
2916 }
2917 /* %endif */
2918
2919 /* %if-c-or-c++ */
2920 /* Allocates the stack if it does not exist.
2921 * Guarantees space for at least one push.
2922 */
2923 /* %if-c-only */
2924 static void config_ensure_buffer_stack (yyscan_t yyscanner)
2925 /* %endif */
2926 /* %if-c++-only */
2927 /* %endif */
2928 {
2929 int num_to_alloc;
2930 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2931
2932 if (!yyg->yy_buffer_stack) {
2933
2934 /* First allocation is just for 2 elements, since we don't know if this
2935 * scanner will even need a stack. We use 2 instead of 1 to avoid an
2936 * immediate realloc on the next call.
2937 */
2938 num_to_alloc = 1;
2939 yyg->yy_buffer_stack = (struct yy_buffer_state**)config_alloc
2940 (num_to_alloc * sizeof(struct yy_buffer_state*)
2941 , yyscanner);
2942 if ( ! yyg->yy_buffer_stack )
2943 YY_FATAL_ERROR( "out of dynamic memory in config_ensure_buffer_stack()" );
2944
2945 memset(yyg->yy_buffer_stack, 0, num_to_alloc * sizeof(struct yy_buffer_state*));
2946
2947 yyg->yy_buffer_stack_max = num_to_alloc;
2948 yyg->yy_buffer_stack_top = 0;
2949 return;
2950 }
2951
2952 if (yyg->yy_buffer_stack_top >= (yyg->yy_buffer_stack_max) - 1){
2953
2954 /* Increase the buffer to prepare for a possible push. */
2955 int grow_size = 8 /* arbitrary grow size */;
2956
2957 num_to_alloc = yyg->yy_buffer_stack_max + grow_size;
2958 yyg->yy_buffer_stack = (struct yy_buffer_state**)config_realloc
2959 (yyg->yy_buffer_stack,
2960 num_to_alloc * sizeof(struct yy_buffer_state*)
2961 , yyscanner);
2962 if ( ! yyg->yy_buffer_stack )
2963 YY_FATAL_ERROR( "out of dynamic memory in config_ensure_buffer_stack()" );
2964
2965 /* zero only the new slots.*/
2966 memset(yyg->yy_buffer_stack + yyg->yy_buffer_stack_max, 0, grow_size * sizeof(struct yy_buffer_state*));
2967 yyg->yy_buffer_stack_max = num_to_alloc;
2968 }
2969 }
2970 /* %endif */
2971
2972 /* %if-c-only */
2973 /** Setup the input buffer state to scan directly from a user-specified character buffer.
2974 * @param base the character buffer
2975 * @param size the size in bytes of the character buffer
2976 * @param yyscanner The scanner object.
2977 * @return the newly allocated buffer state object.
2978 */
2979 YY_BUFFER_STATE config__scan_buffer (char * base, yy_size_t size , yyscan_t yyscanner)
2980 {
2981 YY_BUFFER_STATE b;
2982
2983 if ( size < 2 ||
2984 base[size-2] != YY_END_OF_BUFFER_CHAR ||
2985 base[size-1] != YY_END_OF_BUFFER_CHAR )
2986 /* They forgot to leave room for the EOB's. */
2987 return 0;
2988
2989 b = (YY_BUFFER_STATE) config_alloc(sizeof( struct yy_buffer_state ) ,yyscanner );
2990 if ( ! b )
2991 YY_FATAL_ERROR( "out of dynamic memory in config__scan_buffer()" );
2992
2993 b->yy_buf_size = size - 2; /* "- 2" to take care of EOB's */
2994 b->yy_buf_pos = b->yy_ch_buf = base;
2995 b->yy_is_our_buffer = 0;
2996 b->yy_input_file = 0;
2997 b->yy_n_chars = b->yy_buf_size;
2998 b->yy_is_interactive = 0;
2999 b->yy_at_bol = 1;
3000 b->yy_fill_buffer = 0;
3001 b->yy_buffer_status = YY_BUFFER_NEW;
3002
3003 config__switch_to_buffer(b ,yyscanner );
3004
3005 return b;
3006 }
3007 /* %endif */
3008
3009 /* %if-c-only */
3010 /** Setup the input buffer state to scan a string. The next call to config_lex() will
3011 * scan from a @e copy of @a str.
3012 * @param yystr a NUL-terminated string to scan
3013 * @param yyscanner The scanner object.
3014 * @return the newly allocated buffer state object.
3015 * @note If you want to scan bytes that may contain NUL values, then use
3016 * config__scan_bytes() instead.
3017 */
3018 YY_BUFFER_STATE config__scan_string (yyconst char * yystr , yyscan_t yyscanner)
3019 {
3020
3021 return config__scan_bytes(yystr,strlen(yystr) ,yyscanner);
3022 }
3023 /* %endif */
3024
3025 /* %if-c-only */
3026 /** Setup the input buffer state to scan the given bytes. The next call to config_lex() will
3027 * scan from a @e copy of @a bytes.
3028 * @param bytes the byte buffer to scan
3029 * @param len the number of bytes in the buffer pointed to by @a bytes.
3030 * @param yyscanner The scanner object.
3031 * @return the newly allocated buffer state object.
3032 */
3033 YY_BUFFER_STATE config__scan_bytes (yyconst char * yybytes, int _yybytes_len , yyscan_t yyscanner)
3034 {
3035 YY_BUFFER_STATE b;
3036 char *buf;
3037 yy_size_t n;
3038 int i;
3039
3040 /* Get memory for full buffer, including space for trailing EOB's. */
3041 n = _yybytes_len + 2;
3042 buf = (char *) config_alloc(n ,yyscanner );
3043 if ( ! buf )
3044 YY_FATAL_ERROR( "out of dynamic memory in config__scan_bytes()" );
3045
3046 for ( i = 0; i < _yybytes_len; ++i )
3047 buf[i] = yybytes[i];
3048
3049 buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR;
3050
3051 b = config__scan_buffer(buf,n ,yyscanner);
3052 if ( ! b )
3053 YY_FATAL_ERROR( "bad buffer in config__scan_bytes()" );
3054
3055 /* It's okay to grow etc. this buffer, and we should throw it
3056 * away when we're done.
3057 */
3058 b->yy_is_our_buffer = 1;
3059
3060 return b;
3061 }
3062 /* %endif */
3063
3064 #ifndef YY_EXIT_FAILURE
3065 #define YY_EXIT_FAILURE 2
3066 #endif
3067
3068 /* %if-c-only */
3069 static void yy_fatal_error (yyconst char* msg , yyscan_t yyscanner)
3070 {
3071 (void) fprintf( stderr, "%s\n", msg );
3072 exit( YY_EXIT_FAILURE );
3073 }
3074 /* %endif */
3075 /* %if-c++-only */
3076 /* %endif */
3077
3078 /* Redefine yyless() so it works in section 3 code. */
3079
3080 #undef yyless
3081 #define yyless(n) \
3082 do \
3083 { \
3084 /* Undo effects of setting up yytext. */ \
3085 int yyless_macro_arg = (n); \
3086 YY_LESS_LINENO(yyless_macro_arg);\
3087 yytext[yyleng] = yyg->yy_hold_char; \
3088 yyg->yy_c_buf_p = yytext + yyless_macro_arg; \
3089 yyg->yy_hold_char = *yyg->yy_c_buf_p; \
3090 *yyg->yy_c_buf_p = '\0'; \
3091 yyleng = yyless_macro_arg; \
3092 } \
3093 while ( 0 )
3094
3095 /* Accessor methods (get/set functions) to struct members. */
3096
3097 /* %if-c-only */
3098 /* %if-reentrant */
3099
3100 /** Get the user-defined data for this scanner.
3101 * @param yyscanner The scanner object.
3102 */
3103 YY_EXTRA_TYPE config_get_extra (yyscan_t yyscanner)
3104 {
3105 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
3106 return yyextra;
3107 }
3108
3109 /* %endif */
3110
3111 /** Get the current line number.
3112 * @param yyscanner The scanner object.
3113 */
3114 int config_get_lineno (yyscan_t yyscanner)
3115 {
3116 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
3117
3118 if (! YY_CURRENT_BUFFER)
3119 return 0;
3120
3121 return yylineno;
3122 }
3123
3124 /** Get the current column number.
3125 * @param yyscanner The scanner object.
3126 */
3127 int config_get_column (yyscan_t yyscanner)
3128 {
3129 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
3130
3131 if (! YY_CURRENT_BUFFER)
3132 return 0;
3133
3134 return yycolumn;
3135 }
3136
3137 /** Get the input stream.
3138 * @param yyscanner The scanner object.
3139 */
3140 FILE *config_get_in (yyscan_t yyscanner)
3141 {
3142 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
3143 return yyin;
3144 }
3145
3146 /** Get the output stream.
3147 * @param yyscanner The scanner object.
3148 */
3149 FILE *config_get_out (yyscan_t yyscanner)
3150 {
3151 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
3152 return yyout;
3153 }
3154
3155 /** Get the length of the current token.
3156 * @param yyscanner The scanner object.
3157 */
3158 int config_get_leng (yyscan_t yyscanner)
3159 {
3160 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
3161 return yyleng;
3162 }
3163
3164 /** Get the current token.
3165 * @param yyscanner The scanner object.
3166 */
3167
3168 char *config_get_text (yyscan_t yyscanner)
3169 {
3170 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
3171 return yytext;
3172 }
3173
3174 /* %if-reentrant */
3175
3176 /** Set the user-defined data. This data is never touched by the scanner.
3177 * @param user_defined The data to be associated with this scanner.
3178 * @param yyscanner The scanner object.
3179 */
3180 void config_set_extra (YY_EXTRA_TYPE user_defined , yyscan_t yyscanner)
3181 {
3182 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
3183 yyextra = user_defined ;
3184 }
3185
3186 /* %endif */
3187
3188 /** Set the current line number.
3189 * @param line_number
3190 * @param yyscanner The scanner object.
3191 */
3192 void config_set_lineno (int line_number , yyscan_t yyscanner)
3193 {
3194 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
3195
3196 /* lineno is only valid if an input buffer exists. */
3197 if (! YY_CURRENT_BUFFER )
3198 yy_fatal_error( "config_set_lineno called with no buffer" , yyscanner);
3199
3200 yylineno = line_number;
3201 }
3202
3203 /** Set the current column.
3204 * @param line_number
3205 * @param yyscanner The scanner object.
3206 */
3207 void config_set_column (int column_no , yyscan_t yyscanner)
3208 {
3209 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
3210
3211 /* column is only valid if an input buffer exists. */
3212 if (! YY_CURRENT_BUFFER )
3213 yy_fatal_error( "config_set_column called with no buffer" , yyscanner);
3214
3215 yycolumn = column_no;
3216 }
3217
3218 /** Set the input stream. This does not discard the current
3219 * input buffer.
3220 * @param in_str A readable stream.
3221 * @param yyscanner The scanner object.
3222 * @see config__switch_to_buffer
3223 */
3224 void config_set_in (FILE * in_str , yyscan_t yyscanner)
3225 {
3226 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
3227 yyin = in_str ;
3228 }
3229
3230 void config_set_out (FILE * out_str , yyscan_t yyscanner)
3231 {
3232 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
3233 yyout = out_str ;
3234 }
3235
3236 int config_get_debug (yyscan_t yyscanner)
3237 {
3238 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
3239 return yy_flex_debug;
3240 }
3241
3242 void config_set_debug (int bdebug , yyscan_t yyscanner)
3243 {
3244 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
3245 yy_flex_debug = bdebug ;
3246 }
3247
3248 /* %endif */
3249
3250 /* %if-reentrant */
3251 /* Accessor methods for yylval and yylloc */
3252
3253 /* %if-bison-bridge */
3254
3255 YYSTYPE * config_get_lval (yyscan_t yyscanner)
3256 {
3257 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
3258 return yylval;
3259 }
3260
3261 void config_set_lval (YYSTYPE * yylval_param , yyscan_t yyscanner)
3262 {
3263 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
3264 yylval = yylval_param;
3265 }
3266
3267 /* %endif */
3268
3269 /* User-visible API */
3270
3271 /* config_lex_init is special because it creates the scanner itself, so it is
3272 * the ONLY reentrant function that doesn't take the scanner as the last argument.
3273 * That's why we explicitly handle the declaration, instead of using our macros.
3274 */
3275
3276 int config_lex_init(yyscan_t* ptr_yy_globals)
3277
3278 {
3279 if (ptr_yy_globals == NULL){
3280 errno = EINVAL;
3281 return 1;
3282 }
3283
3284 *ptr_yy_globals = (yyscan_t) config_alloc ( sizeof( struct yyguts_t ), NULL );
3285
3286 if (*ptr_yy_globals == NULL){
3287 errno = ENOMEM;
3288 return 1;
3289 }
3290
3291 /* By setting to 0xAA, we expose bugs in yy_init_globals. Leave at 0x00 for releases. */
3292 memset(*ptr_yy_globals,0x00,sizeof(struct yyguts_t));
3293
3294 return yy_init_globals ( *ptr_yy_globals );
3295 }
3296
3297 /* config_lex_init_extra has the same functionality as config_lex_init, but follows the
3298 * convention of taking the scanner as the last argument. Note however, that
3299 * this is a *pointer* to a scanner, as it will be allocated by this call (and
3300 * is the reason, too, why this function also must handle its own declaration).
3301 * The user defined value in the first argument will be available to config_alloc in
3302 * the yyextra field.
3303 */
3304
3305 int config_lex_init_extra(YY_EXTRA_TYPE yy_user_defined,yyscan_t* ptr_yy_globals )
3306
3307 {
3308 struct yyguts_t dummy_yyguts;
3309
3310 config_set_extra (yy_user_defined, &dummy_yyguts);
3311
3312 if (ptr_yy_globals == NULL){
3313 errno = EINVAL;
3314 return 1;
3315 }
3316
3317 *ptr_yy_globals = (yyscan_t) config_alloc ( sizeof( struct yyguts_t ), &dummy_yyguts );
3318
3319 if (*ptr_yy_globals == NULL){
3320 errno = ENOMEM;
3321 return 1;
3322 }
3323
3324 /* By setting to 0xAA, we expose bugs in
3325 yy_init_globals. Leave at 0x00 for releases. */
3326 memset(*ptr_yy_globals,0x00,sizeof(struct yyguts_t));
3327
3328 config_set_extra (yy_user_defined, *ptr_yy_globals);
3329
3330 return yy_init_globals ( *ptr_yy_globals );
3331 }
3332
3333 /* %endif if-c-only */
3334
3335 /* %if-c-only */
3336 static int yy_init_globals (yyscan_t yyscanner)
3337 {
3338 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
3339 /* Initialization is the same as for the non-reentrant scanner.
3340 * This function is called from config_lex_destroy(), so don't allocate here.
3341 */
3342
3343 yyg->yy_buffer_stack = 0;
3344 yyg->yy_buffer_stack_top = 0;
3345 yyg->yy_buffer_stack_max = 0;
3346 yyg->yy_c_buf_p = (char *) 0;
3347 yyg->yy_init = 0;
3348 yyg->yy_start = 0;
3349
3350 yyg->yy_start_stack_ptr = 0;
3351 yyg->yy_start_stack_depth = 0;
3352 yyg->yy_start_stack = NULL;
3353
3354 /* Defined in main.c */
3355 #ifdef YY_STDINIT
3356 yyin = stdin;
3357 yyout = stdout;
3358 #else
3359 yyin = (FILE *) 0;
3360 yyout = (FILE *) 0;
3361 #endif
3362
3363 /* For future reference: Set errno on error, since we are called by
3364 * config_lex_init()
3365 */
3366 return 0;
3367 }
3368 /* %endif */
3369
3370 /* %if-c-only SNIP! this currently causes conflicts with the c++ scanner */
3371 /* config_lex_destroy is for both reentrant and non-reentrant scanners. */
3372 int config_lex_destroy (yyscan_t yyscanner)
3373 {
3374 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
3375
3376 /* Pop the buffer stack, destroying each element. */
3377 while(YY_CURRENT_BUFFER){
3378 config__delete_buffer(YY_CURRENT_BUFFER ,yyscanner );
3379 YY_CURRENT_BUFFER_LVALUE = NULL;
3380 config_pop_buffer_state(yyscanner);
3381 }
3382
3383 /* Destroy the stack itself. */
3384 config_free(yyg->yy_buffer_stack ,yyscanner);
3385 yyg->yy_buffer_stack = NULL;
3386
3387 /* Destroy the start condition stack. */
3388 config_free(yyg->yy_start_stack ,yyscanner );
3389 yyg->yy_start_stack = NULL;
3390
3391 /* Reset the globals. This is important in a non-reentrant scanner so the next time
3392 * config_lex() is called, initialization will occur. */
3393 yy_init_globals( yyscanner);
3394
3395 /* %if-reentrant */
3396 /* Destroy the main struct (reentrant only). */
3397 config_free ( yyscanner , yyscanner );
3398 yyscanner = NULL;
3399 /* %endif */
3400 return 0;
3401 }
3402 /* %endif */
3403
3404 /*
3405 * Internal utility routines.
3406 */
3407
3408 #ifndef yytext_ptr
3409 static void yy_flex_strncpy (char* s1, yyconst char * s2, int n , yyscan_t yyscanner)
3410 {
3411 register int i;
3412 for ( i = 0; i < n; ++i )
3413 s1[i] = s2[i];
3414 }
3415 #endif
3416
3417 #ifdef YY_NEED_STRLEN
3418 static int yy_flex_strlen (yyconst char * s , yyscan_t yyscanner)
3419 {
3420 register int n;
3421 for ( n = 0; s[n]; ++n )
3422 ;
3423
3424 return n;
3425 }
3426 #endif
3427
3428 void *config_alloc (yy_size_t size , yyscan_t yyscanner)
3429 {
3430 return (void *) malloc( size );
3431 }
3432
3433 void *config_realloc (void * ptr, yy_size_t size , yyscan_t yyscanner)
3434 {
3435 /* The cast to (char *) in the following accommodates both
3436 * implementations that use char* generic pointers, and those
3437 * that use void* generic pointers. It works with the latter
3438 * because both ANSI C and C++ allow castless assignment from
3439 * any pointer type to void*, and deal with argument conversions
3440 * as though doing an assignment.
3441 */
3442 return (void *) realloc( (char *) ptr, size );
3443 }
3444
3445 void config_free (void * ptr , yyscan_t yyscanner)
3446 {
3447 free( (char *) ptr ); /* see config_realloc() for (char *) cast */
3448 }
3449
3450 /* %if-tables-serialization definitions */
3451 /* %define-yytables The name for this specific scanner's tables. */
3452 #define YYTABLES_NAME "yytables"
3453 /* %endif */
3454
3455 /* %ok-for-header */
3456
3457 #line 218 "libmemcached/options/scanner.l"
3458
3459
3460
3461 void Context::init_scanner()
3462 {
3463 config_lex_init(&scanner);
3464 config_set_extra(this,scanner);
3465 }
3466
3467 void Context::destroy_scanner()
3468 {
3469 config_lex_destroy(scanner);
3470 }
3471
3472