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