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