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