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