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