Fix warning around in scanner.
[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 #pragma GCC diagnostic ignored "-Wunused-result"
15 #endif
16
17 #define YY_EXTRA_TYPE Context*
18
19
20
21
22 #line 23 "libmemcached/csl/scanner.cc"
23
24 #define YY_INT_ALIGNED short int
25
26 /* A lexical scanner generated by flex */
27
28 #define FLEX_SCANNER
29 #define YY_FLEX_MAJOR_VERSION 2
30 #define YY_FLEX_MINOR_VERSION 5
31 #define YY_FLEX_SUBMINOR_VERSION 35
32 #if YY_FLEX_SUBMINOR_VERSION > 0
33 #define FLEX_BETA
34 #endif
35
36 /* First, we deal with platform-specific or compiler-specific issues. */
37
38 /* begin standard C headers. */
39 #include <stdio.h>
40 #include <string.h>
41 #include <errno.h>
42 #include <stdlib.h>
43
44 /* end standard C headers. */
45
46 /* flex integer type definitions */
47
48 #ifndef FLEXINT_H
49 #define FLEXINT_H
50
51 /* C99 systems have <inttypes.h>. Non-C99 systems may or may not. */
52
53 #if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
54
55 /* C99 says to define __STDC_LIMIT_MACROS before including stdint.h,
56 * if you want the limit (max/min) macros for int types.
57 */
58 #ifndef __STDC_LIMIT_MACROS
59 #define __STDC_LIMIT_MACROS 1
60 #endif
61
62 #include <inttypes.h>
63 typedef int8_t flex_int8_t;
64 typedef uint8_t flex_uint8_t;
65 typedef int16_t flex_int16_t;
66 typedef uint16_t flex_uint16_t;
67 typedef int32_t flex_int32_t;
68 typedef uint32_t flex_uint32_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 #define EOB_ACT_CONTINUE_SCAN 0
193 #define EOB_ACT_END_OF_FILE 1
194 #define EOB_ACT_LAST_MATCH 2
195
196 #define YY_LESS_LINENO(n)
197
198 /* Return all but the first "n" matched characters back to the input stream. */
199 #define yyless(n) \
200 do \
201 { \
202 /* Undo effects of setting up yytext. */ \
203 int yyless_macro_arg = (n); \
204 YY_LESS_LINENO(yyless_macro_arg);\
205 *yy_cp = yyg->yy_hold_char; \
206 YY_RESTORE_YY_MORE_OFFSET \
207 yyg->yy_c_buf_p = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \
208 YY_DO_BEFORE_ACTION; /* set up yytext again */ \
209 } \
210 while ( 0 )
211
212 #define unput(c) yyunput( c, yyg->yytext_ptr , yyscanner )
213
214 #ifndef YY_TYPEDEF_YY_SIZE_T
215 #define YY_TYPEDEF_YY_SIZE_T
216 typedef size_t yy_size_t;
217 #endif
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 int 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,int 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 = (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 59 "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 int yy_n_chars;
1124 int 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 int 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 int config_get_column (yyscan_t yyscanner );
1186
1187 void config_set_column (int column_no ,yyscan_t yyscanner );
1188
1189 YYSTYPE * config_get_lval (yyscan_t yyscanner );
1190
1191 void config_set_lval (YYSTYPE * yylval_param ,yyscan_t yyscanner );
1192
1193 /* Macros after this point can all be overridden by user definitions in
1194 * section 1.
1195 */
1196
1197 #ifndef YY_SKIP_YYWRAP
1198 #ifdef __cplusplus
1199 extern "C" int config_wrap (yyscan_t yyscanner );
1200 #else
1201 extern int config_wrap (yyscan_t yyscanner );
1202 #endif
1203 #endif
1204
1205 #ifndef yytext_ptr
1206 static void yy_flex_strncpy (char *,yyconst char *,int ,yyscan_t yyscanner);
1207 #endif
1208
1209 #ifdef YY_NEED_STRLEN
1210 static int yy_flex_strlen (yyconst char * ,yyscan_t yyscanner);
1211 #endif
1212
1213 #ifndef YY_NO_INPUT
1214
1215 #ifdef __cplusplus
1216 static int yyinput (yyscan_t yyscanner );
1217 #else
1218 static int input (yyscan_t yyscanner );
1219 #endif
1220
1221 #endif
1222
1223 /* Amount of stuff to slurp up with each read. */
1224 #ifndef YY_READ_BUF_SIZE
1225 #define YY_READ_BUF_SIZE 8192
1226 #endif
1227
1228 /* Copy whatever the last rule matched to the standard output. */
1229 #ifndef ECHO
1230 /* This used to be an fputs(), but since the string might contain NUL's,
1231 * we now use fwrite().
1232 */
1233 #define ECHO do { if (fwrite( yytext, yyleng, 1, yyout )) {} } while (0)
1234 #endif
1235
1236 /* Gets input and stuffs it into "buf". number of characters read, or YY_NULL,
1237 * is returned in "result".
1238 */
1239 #ifndef YY_INPUT
1240 #define YY_INPUT(buf,result,max_size) \
1241 if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \
1242 { \
1243 int c = '*'; \
1244 unsigned n; \
1245 for ( n = 0; n < max_size && \
1246 (c = getc( yyin )) != EOF && c != '\n'; ++n ) \
1247 buf[n] = (char) c; \
1248 if ( c == '\n' ) \
1249 buf[n++] = (char) c; \
1250 if ( c == EOF && ferror( yyin ) ) \
1251 YY_FATAL_ERROR( "input in flex scanner failed" ); \
1252 result = n; \
1253 } \
1254 else \
1255 { \
1256 errno=0; \
1257 while ( (result = fread(buf, 1, max_size, yyin))==0 && ferror(yyin)) \
1258 { \
1259 if( errno != EINTR) \
1260 { \
1261 YY_FATAL_ERROR( "input in flex scanner failed" ); \
1262 break; \
1263 } \
1264 errno=0; \
1265 clearerr(yyin); \
1266 } \
1267 }\
1268 \
1269
1270 #endif
1271
1272 /* No semi-colon after return; correct usage is to write "yyterminate();" -
1273 * we don't want an extra ';' after the "return" because that will cause
1274 * some compilers to complain about unreachable statements.
1275 */
1276 #ifndef yyterminate
1277 #define yyterminate() return YY_NULL
1278 #endif
1279
1280 /* Number of entries by which start-condition stack grows. */
1281 #ifndef YY_START_STACK_INCR
1282 #define YY_START_STACK_INCR 25
1283 #endif
1284
1285 /* Report a fatal error. */
1286 #ifndef YY_FATAL_ERROR
1287 #define YY_FATAL_ERROR(msg) yy_fatal_error( msg , yyscanner)
1288 #endif
1289
1290 /* end tables serialization structures and prototypes */
1291
1292 /* Default declaration of generated scanner - a define so the user can
1293 * easily add parameters.
1294 */
1295 #ifndef YY_DECL
1296 #define YY_DECL_IS_OURS 1
1297
1298 extern int config_lex \
1299 (YYSTYPE * yylval_param ,yyscan_t yyscanner);
1300
1301 #define YY_DECL int config_lex \
1302 (YYSTYPE * yylval_param , yyscan_t yyscanner)
1303 #endif /* !YY_DECL */
1304
1305 /* Code executed at the beginning of each rule, after yytext and yyleng
1306 * have been set up.
1307 */
1308 #ifndef YY_USER_ACTION
1309 #define YY_USER_ACTION
1310 #endif
1311
1312 /* Code executed at the end of each rule. */
1313 #ifndef YY_BREAK
1314 #define YY_BREAK break;
1315 #endif
1316
1317 #define YY_RULE_SETUP \
1318 if ( yyleng > 0 ) \
1319 YY_CURRENT_BUFFER_LVALUE->yy_at_bol = \
1320 (yytext[yyleng - 1] == '\n'); \
1321 YY_USER_ACTION
1322
1323 /** The main scanner function which does all the work.
1324 */
1325 YY_DECL
1326 {
1327 register yy_state_type yy_current_state;
1328 register char *yy_cp, *yy_bp;
1329 register int yy_act;
1330 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
1331
1332 #line 101 "libmemcached/csl/scanner.l"
1333
1334
1335
1336 #line 1337 "libmemcached/csl/scanner.cc"
1337
1338 yylval = yylval_param;
1339
1340 if ( !yyg->yy_init )
1341 {
1342 yyg->yy_init = 1;
1343
1344 #ifdef YY_USER_INIT
1345 YY_USER_INIT;
1346 #endif
1347
1348 if ( ! yyg->yy_start )
1349 yyg->yy_start = 1; /* first start state */
1350
1351 if ( ! yyin )
1352 yyin = stdin;
1353
1354 if ( ! yyout )
1355 yyout = stdout;
1356
1357 if ( ! YY_CURRENT_BUFFER ) {
1358 config_ensure_buffer_stack (yyscanner);
1359 YY_CURRENT_BUFFER_LVALUE =
1360 config__create_buffer(yyin,YY_BUF_SIZE ,yyscanner);
1361 }
1362
1363 config__load_buffer_state(yyscanner );
1364 }
1365
1366 while ( 1 ) /* loops until end-of-file is reached */
1367 {
1368 yy_cp = yyg->yy_c_buf_p;
1369
1370 /* Support of yytext. */
1371 *yy_cp = yyg->yy_hold_char;
1372
1373 /* yy_bp points to the position in yy_ch_buf of the start of
1374 * the current run.
1375 */
1376 yy_bp = yy_cp;
1377
1378 yy_current_state = yyg->yy_start;
1379 yy_current_state += YY_AT_BOL();
1380 yy_match:
1381 do
1382 {
1383 register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)];
1384 if ( yy_accept[yy_current_state] )
1385 {
1386 yyg->yy_last_accepting_state = yy_current_state;
1387 yyg->yy_last_accepting_cpos = yy_cp;
1388 }
1389 while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
1390 {
1391 yy_current_state = (int) yy_def[yy_current_state];
1392 if ( yy_current_state >= 534 )
1393 yy_c = yy_meta[(unsigned int) yy_c];
1394 }
1395 yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
1396 ++yy_cp;
1397 }
1398 while ( yy_current_state != 533 );
1399 yy_cp = yyg->yy_last_accepting_cpos;
1400 yy_current_state = yyg->yy_last_accepting_state;
1401
1402 yy_find_action:
1403 yy_act = yy_accept[yy_current_state];
1404
1405 YY_DO_BEFORE_ACTION;
1406
1407 do_action: /* This label is used only to access EOF actions. */
1408
1409 switch ( yy_act )
1410 { /* beginning of action switch */
1411 case 0: /* must back up */
1412 /* undo the effects of YY_DO_BEFORE_ACTION */
1413 *yy_cp = yyg->yy_hold_char;
1414 yy_cp = yyg->yy_last_accepting_cpos;
1415 yy_current_state = yyg->yy_last_accepting_state;
1416 goto yy_find_action;
1417
1418 case 1:
1419 YY_RULE_SETUP
1420 #line 104 "libmemcached/csl/scanner.l"
1421 { return yytext[0];}
1422 YY_BREAK
1423 case 2:
1424 YY_RULE_SETUP
1425 #line 106 "libmemcached/csl/scanner.l"
1426 { yylval->number= atoi(yytext); return (NUMBER); }
1427 YY_BREAK
1428 case 3:
1429 YY_RULE_SETUP
1430 #line 108 "libmemcached/csl/scanner.l"
1431 { yylval->number= atoi(yytext +1); return PORT; }
1432 YY_BREAK
1433 case 4:
1434 YY_RULE_SETUP
1435 #line 110 "libmemcached/csl/scanner.l"
1436 { yylval->number= atoi(yytext +2); return WEIGHT_START; }
1437 YY_BREAK
1438 case 5:
1439 /* rule 5 can match eol */
1440 YY_RULE_SETUP
1441 #line 112 "libmemcached/csl/scanner.l"
1442 ; /* skip whitespace */
1443 YY_BREAK
1444 case 6:
1445 *yy_cp = yyg->yy_hold_char; /* undo effects of setting up yytext */
1446 yyg->yy_c_buf_p = yy_cp -= 1;
1447 YY_DO_BEFORE_ACTION; /* set up yytext again */
1448 YY_RULE_SETUP
1449 #line 115 "libmemcached/csl/scanner.l"
1450 {
1451 return COMMENT;
1452 }
1453 YY_BREAK
1454 case 7:
1455 YY_RULE_SETUP
1456 #line 119 "libmemcached/csl/scanner.l"
1457 { yyextra->begin= yytext; yyextra->set_server(); return yyextra->previous_token= SERVER; }
1458 YY_BREAK
1459 case 8:
1460 YY_RULE_SETUP
1461 #line 121 "libmemcached/csl/scanner.l"
1462 { yyextra->begin= yytext; return yyextra->previous_token= SOCKET; }
1463 YY_BREAK
1464 case 9:
1465 YY_RULE_SETUP
1466 #line 123 "libmemcached/csl/scanner.l"
1467 { yyextra->begin= yytext; return yyextra->previous_token= BINARY_PROTOCOL; }
1468 YY_BREAK
1469 case 10:
1470 YY_RULE_SETUP
1471 #line 124 "libmemcached/csl/scanner.l"
1472 { yyextra->begin= yytext; return yyextra->previous_token= BUFFER_REQUESTS; }
1473 YY_BREAK
1474 case 11:
1475 YY_RULE_SETUP
1476 #line 125 "libmemcached/csl/scanner.l"
1477 { yyextra->begin= yytext; return yyextra->previous_token= CONFIGURE_FILE; }
1478 YY_BREAK
1479 case 12:
1480 YY_RULE_SETUP
1481 #line 126 "libmemcached/csl/scanner.l"
1482 { yyextra->begin= yytext; return yyextra->previous_token= CONNECT_TIMEOUT; }
1483 YY_BREAK
1484 case 13:
1485 YY_RULE_SETUP
1486 #line 127 "libmemcached/csl/scanner.l"
1487 { yyextra->begin= yytext; return yyextra->previous_token= DISTRIBUTION; }
1488 YY_BREAK
1489 case 14:
1490 YY_RULE_SETUP
1491 #line 128 "libmemcached/csl/scanner.l"
1492 { yyextra->begin= yytext; return yyextra->previous_token= HASH_WITH_NAMESPACE; }
1493 YY_BREAK
1494 case 15:
1495 YY_RULE_SETUP
1496 #line 129 "libmemcached/csl/scanner.l"
1497 { yyextra->begin= yytext; return yyextra->previous_token= HASH; }
1498 YY_BREAK
1499 case 16:
1500 YY_RULE_SETUP
1501 #line 130 "libmemcached/csl/scanner.l"
1502 { yyextra->begin= yytext; return yyextra->previous_token= IO_BYTES_WATERMARK; }
1503 YY_BREAK
1504 case 17:
1505 YY_RULE_SETUP
1506 #line 131 "libmemcached/csl/scanner.l"
1507 { yyextra->begin= yytext; return yyextra->previous_token= IO_KEY_PREFETCH; }
1508 YY_BREAK
1509 case 18:
1510 YY_RULE_SETUP
1511 #line 132 "libmemcached/csl/scanner.l"
1512 { yyextra->begin= yytext; return yyextra->previous_token= IO_MSG_WATERMARK; }
1513 YY_BREAK
1514 case 19:
1515 YY_RULE_SETUP
1516 #line 133 "libmemcached/csl/scanner.l"
1517 { yyextra->begin= yytext; return yyextra->previous_token= NOREPLY; }
1518 YY_BREAK
1519 case 20:
1520 YY_RULE_SETUP
1521 #line 134 "libmemcached/csl/scanner.l"
1522 { yyextra->begin= yytext; return yyextra->previous_token= NUMBER_OF_REPLICAS; }
1523 YY_BREAK
1524 case 21:
1525 YY_RULE_SETUP
1526 #line 135 "libmemcached/csl/scanner.l"
1527 { yyextra->begin= yytext; return yyextra->previous_token= POLL_TIMEOUT; }
1528 YY_BREAK
1529 case 22:
1530 YY_RULE_SETUP
1531 #line 136 "libmemcached/csl/scanner.l"
1532 { yyextra->begin= yytext; return yyextra->previous_token= RANDOMIZE_REPLICA_READ; }
1533 YY_BREAK
1534 case 23:
1535 YY_RULE_SETUP
1536 #line 137 "libmemcached/csl/scanner.l"
1537 { yyextra->begin= yytext; return yyextra->previous_token= RCV_TIMEOUT; }
1538 YY_BREAK
1539 case 24:
1540 YY_RULE_SETUP
1541 #line 138 "libmemcached/csl/scanner.l"
1542 { yyextra->begin= yytext; return yyextra->previous_token= REMOVE_FAILED_SERVERS; }
1543 YY_BREAK
1544 case 25:
1545 YY_RULE_SETUP
1546 #line 139 "libmemcached/csl/scanner.l"
1547 { yyextra->begin= yytext; return yyextra->previous_token= RETRY_TIMEOUT; }
1548 YY_BREAK
1549 case 26:
1550 YY_RULE_SETUP
1551 #line 140 "libmemcached/csl/scanner.l"
1552 { yyextra->begin= yytext; return yyextra->previous_token= SND_TIMEOUT; }
1553 YY_BREAK
1554 case 27:
1555 YY_RULE_SETUP
1556 #line 141 "libmemcached/csl/scanner.l"
1557 { yyextra->begin= yytext; return yyextra->previous_token= SOCKET_RECV_SIZE; }
1558 YY_BREAK
1559 case 28:
1560 YY_RULE_SETUP
1561 #line 142 "libmemcached/csl/scanner.l"
1562 { yyextra->begin= yytext; return yyextra->previous_token= SOCKET_SEND_SIZE; }
1563 YY_BREAK
1564 case 29:
1565 YY_RULE_SETUP
1566 #line 143 "libmemcached/csl/scanner.l"
1567 { yyextra->begin= yytext; return yyextra->previous_token= SORT_HOSTS; }
1568 YY_BREAK
1569 case 30:
1570 YY_RULE_SETUP
1571 #line 144 "libmemcached/csl/scanner.l"
1572 { yyextra->begin= yytext; return yyextra->previous_token= SUPPORT_CAS; }
1573 YY_BREAK
1574 case 31:
1575 YY_RULE_SETUP
1576 #line 145 "libmemcached/csl/scanner.l"
1577 { yyextra->begin= yytext; return yyextra->previous_token= _TCP_KEEPALIVE; }
1578 YY_BREAK
1579 case 32:
1580 YY_RULE_SETUP
1581 #line 146 "libmemcached/csl/scanner.l"
1582 { yyextra->begin= yytext; return yyextra->previous_token= _TCP_KEEPIDLE; }
1583 YY_BREAK
1584 case 33:
1585 YY_RULE_SETUP
1586 #line 147 "libmemcached/csl/scanner.l"
1587 { yyextra->begin= yytext; return yyextra->previous_token= _TCP_NODELAY; }
1588 YY_BREAK
1589 case 34:
1590 YY_RULE_SETUP
1591 #line 148 "libmemcached/csl/scanner.l"
1592 { yyextra->begin= yytext; return yyextra->previous_token= USE_UDP; }
1593 YY_BREAK
1594 case 35:
1595 YY_RULE_SETUP
1596 #line 149 "libmemcached/csl/scanner.l"
1597 { yyextra->begin= yytext; return yyextra->previous_token= USER_DATA; }
1598 YY_BREAK
1599 case 36:
1600 YY_RULE_SETUP
1601 #line 150 "libmemcached/csl/scanner.l"
1602 { yyextra->begin= yytext; return yyextra->previous_token= VERIFY_KEY; }
1603 YY_BREAK
1604 case 37:
1605 YY_RULE_SETUP
1606 #line 152 "libmemcached/csl/scanner.l"
1607 { yyextra->begin= yytext; return yyextra->previous_token= POOL_MIN; }
1608 YY_BREAK
1609 case 38:
1610 YY_RULE_SETUP
1611 #line 153 "libmemcached/csl/scanner.l"
1612 { yyextra->begin= yytext; return yyextra->previous_token= POOL_MAX; }
1613 YY_BREAK
1614 case 39:
1615 YY_RULE_SETUP
1616 #line 155 "libmemcached/csl/scanner.l"
1617 { yyextra->begin= yytext; return yyextra->previous_token= NAMESPACE; }
1618 YY_BREAK
1619 case 40:
1620 YY_RULE_SETUP
1621 #line 157 "libmemcached/csl/scanner.l"
1622 { yyextra->begin= yytext; return yyextra->previous_token= FETCH_VERSION; }
1623 YY_BREAK
1624 case 41:
1625 YY_RULE_SETUP
1626 #line 159 "libmemcached/csl/scanner.l"
1627 { yyextra->begin= yytext; return yyextra->previous_token= INCLUDE; }
1628 YY_BREAK
1629 case 42:
1630 YY_RULE_SETUP
1631 #line 160 "libmemcached/csl/scanner.l"
1632 { yyextra->begin= yytext; return yyextra->previous_token= RESET; }
1633 YY_BREAK
1634 case 43:
1635 YY_RULE_SETUP
1636 #line 161 "libmemcached/csl/scanner.l"
1637 { yyextra->begin= yytext; return yyextra->previous_token= PARSER_DEBUG; }
1638 YY_BREAK
1639 case 44:
1640 YY_RULE_SETUP
1641 #line 162 "libmemcached/csl/scanner.l"
1642 { yyextra->begin= yytext; return yyextra->previous_token= SERVERS; }
1643 YY_BREAK
1644 case 45:
1645 YY_RULE_SETUP
1646 #line 163 "libmemcached/csl/scanner.l"
1647 { yyextra->begin= yytext; return yyextra->previous_token= END; }
1648 YY_BREAK
1649 case 46:
1650 YY_RULE_SETUP
1651 #line 164 "libmemcached/csl/scanner.l"
1652 { yyextra->begin= yytext; return yyextra->previous_token= ERROR; }
1653 YY_BREAK
1654 case 47:
1655 YY_RULE_SETUP
1656 #line 166 "libmemcached/csl/scanner.l"
1657 { return yyextra->previous_token= TRUE; }
1658 YY_BREAK
1659 case 48:
1660 YY_RULE_SETUP
1661 #line 167 "libmemcached/csl/scanner.l"
1662 { return yyextra->previous_token= FALSE; }
1663 YY_BREAK
1664 case 49:
1665 YY_RULE_SETUP
1666 #line 170 "libmemcached/csl/scanner.l"
1667 {
1668 yyextra->begin= yytext;
1669 return UNKNOWN_OPTION;
1670 }
1671 YY_BREAK
1672 case 50:
1673 YY_RULE_SETUP
1674 #line 175 "libmemcached/csl/scanner.l"
1675 { return CONSISTENT; }
1676 YY_BREAK
1677 case 51:
1678 YY_RULE_SETUP
1679 #line 176 "libmemcached/csl/scanner.l"
1680 { return MODULA; }
1681 YY_BREAK
1682 case 52:
1683 YY_RULE_SETUP
1684 #line 177 "libmemcached/csl/scanner.l"
1685 { return RANDOM; }
1686 YY_BREAK
1687 case 53:
1688 YY_RULE_SETUP
1689 #line 179 "libmemcached/csl/scanner.l"
1690 { return MD5; }
1691 YY_BREAK
1692 case 54:
1693 YY_RULE_SETUP
1694 #line 180 "libmemcached/csl/scanner.l"
1695 { return CRC; }
1696 YY_BREAK
1697 case 55:
1698 YY_RULE_SETUP
1699 #line 181 "libmemcached/csl/scanner.l"
1700 { return FNV1_64; }
1701 YY_BREAK
1702 case 56:
1703 YY_RULE_SETUP
1704 #line 182 "libmemcached/csl/scanner.l"
1705 { return FNV1A_64; }
1706 YY_BREAK
1707 case 57:
1708 YY_RULE_SETUP
1709 #line 183 "libmemcached/csl/scanner.l"
1710 { return FNV1_32; }
1711 YY_BREAK
1712 case 58:
1713 YY_RULE_SETUP
1714 #line 184 "libmemcached/csl/scanner.l"
1715 { return FNV1A_32; }
1716 YY_BREAK
1717 case 59:
1718 YY_RULE_SETUP
1719 #line 185 "libmemcached/csl/scanner.l"
1720 { return HSIEH; }
1721 YY_BREAK
1722 case 60:
1723 YY_RULE_SETUP
1724 #line 186 "libmemcached/csl/scanner.l"
1725 { return MURMUR; }
1726 YY_BREAK
1727 case 61:
1728 YY_RULE_SETUP
1729 #line 187 "libmemcached/csl/scanner.l"
1730 { return JENKINS; }
1731 YY_BREAK
1732 case 62:
1733 YY_RULE_SETUP
1734 #line 189 "libmemcached/csl/scanner.l"
1735 {
1736 yyextra->hostname(yytext, yyleng, yylval->server);
1737 return IPADDRESS;
1738 }
1739 YY_BREAK
1740 case 63:
1741 YY_RULE_SETUP
1742 #line 194 "libmemcached/csl/scanner.l"
1743 {
1744 if (yyextra->is_server())
1745 {
1746 yyextra->hostname(yytext, yyleng, yylval->server);
1747
1748 return HOSTNAME;
1749 }
1750
1751 yyextra->string_buffer(yytext, yyleng, yylval->string);
1752
1753 return STRING;
1754 }
1755 YY_BREAK
1756 case 64:
1757 /* rule 64 can match eol */
1758 YY_RULE_SETUP
1759 #line 207 "libmemcached/csl/scanner.l"
1760 {
1761 config_get_text(yyscanner)[yyleng -1]= 0;
1762 yyextra->string_buffer(yytext +1, yyleng -2, yylval->string);
1763 return QUOTED_STRING;
1764 }
1765 YY_BREAK
1766 case 65:
1767 YY_RULE_SETUP
1768 #line 213 "libmemcached/csl/scanner.l"
1769 {
1770 yyextra->begin= yytext;
1771 return UNKNOWN;
1772 }
1773 YY_BREAK
1774 case 66:
1775 YY_RULE_SETUP
1776 #line 218 "libmemcached/csl/scanner.l"
1777 ECHO;
1778 YY_BREAK
1779 #line 1780 "libmemcached/csl/scanner.cc"
1780 case YY_STATE_EOF(INITIAL):
1781 yyterminate();
1782
1783 case YY_END_OF_BUFFER:
1784 {
1785 /* Amount of text matched not including the EOB char. */
1786 int yy_amount_of_matched_text = (int) (yy_cp - yyg->yytext_ptr) - 1;
1787
1788 /* Undo the effects of YY_DO_BEFORE_ACTION. */
1789 *yy_cp = yyg->yy_hold_char;
1790 YY_RESTORE_YY_MORE_OFFSET
1791
1792 if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW )
1793 {
1794 /* We're scanning a new file or input source. It's
1795 * possible that this happened because the user
1796 * just pointed yyin at a new source and called
1797 * config_lex(). If so, then we have to assure
1798 * consistency between YY_CURRENT_BUFFER and our
1799 * globals. Here is the right place to do so, because
1800 * this is the first action (other than possibly a
1801 * back-up) that will match for the new input source.
1802 */
1803 yyg->yy_n_chars = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
1804 YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin;
1805 YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL;
1806 }
1807
1808 /* Note that here we test for yy_c_buf_p "<=" to the position
1809 * of the first EOB in the buffer, since yy_c_buf_p will
1810 * already have been incremented past the NUL character
1811 * (since all states make transitions on EOB to the
1812 * end-of-buffer state). Contrast this with the test
1813 * in input().
1814 */
1815 if ( yyg->yy_c_buf_p <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] )
1816 { /* This was really a NUL. */
1817 yy_state_type yy_next_state;
1818
1819 yyg->yy_c_buf_p = yyg->yytext_ptr + yy_amount_of_matched_text;
1820
1821 yy_current_state = yy_get_previous_state( yyscanner );
1822
1823 /* Okay, we're now positioned to make the NUL
1824 * transition. We couldn't have
1825 * yy_get_previous_state() go ahead and do it
1826 * for us because it doesn't know how to deal
1827 * with the possibility of jamming (and we don't
1828 * want to build jamming into it because then it
1829 * will run more slowly).
1830 */
1831
1832 yy_next_state = yy_try_NUL_trans( yy_current_state , yyscanner);
1833
1834 yy_bp = yyg->yytext_ptr + YY_MORE_ADJ;
1835
1836 if ( yy_next_state )
1837 {
1838 /* Consume the NUL. */
1839 yy_cp = ++yyg->yy_c_buf_p;
1840 yy_current_state = yy_next_state;
1841 goto yy_match;
1842 }
1843
1844 else
1845 {
1846 yy_cp = yyg->yy_last_accepting_cpos;
1847 yy_current_state = yyg->yy_last_accepting_state;
1848 goto yy_find_action;
1849 }
1850 }
1851
1852 else switch ( yy_get_next_buffer( yyscanner ) )
1853 {
1854 case EOB_ACT_END_OF_FILE:
1855 {
1856 yyg->yy_did_buffer_switch_on_eof = 0;
1857
1858 if ( config_wrap(yyscanner ) )
1859 {
1860 /* Note: because we've taken care in
1861 * yy_get_next_buffer() to have set up
1862 * yytext, we can now set up
1863 * yy_c_buf_p so that if some total
1864 * hoser (like flex itself) wants to
1865 * call the scanner after we return the
1866 * YY_NULL, it'll still work - another
1867 * YY_NULL will get returned.
1868 */
1869 yyg->yy_c_buf_p = yyg->yytext_ptr + YY_MORE_ADJ;
1870
1871 yy_act = YY_STATE_EOF(YY_START);
1872 goto do_action;
1873 }
1874
1875 else
1876 {
1877 if ( ! yyg->yy_did_buffer_switch_on_eof )
1878 YY_NEW_FILE;
1879 }
1880 break;
1881 }
1882
1883 case EOB_ACT_CONTINUE_SCAN:
1884 yyg->yy_c_buf_p =
1885 yyg->yytext_ptr + yy_amount_of_matched_text;
1886
1887 yy_current_state = yy_get_previous_state( yyscanner );
1888
1889 yy_cp = yyg->yy_c_buf_p;
1890 yy_bp = yyg->yytext_ptr + YY_MORE_ADJ;
1891 goto yy_match;
1892
1893 case EOB_ACT_LAST_MATCH:
1894 yyg->yy_c_buf_p =
1895 &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars];
1896
1897 yy_current_state = yy_get_previous_state( yyscanner );
1898
1899 yy_cp = yyg->yy_c_buf_p;
1900 yy_bp = yyg->yytext_ptr + YY_MORE_ADJ;
1901 goto yy_find_action;
1902 }
1903 break;
1904 }
1905
1906 default:
1907 YY_FATAL_ERROR(
1908 "fatal flex scanner internal error--no action found" );
1909 } /* end of action switch */
1910 } /* end of scanning one token */
1911 } /* end of config_lex */
1912
1913 /* yy_get_next_buffer - try to read in a new buffer
1914 *
1915 * Returns a code representing an action:
1916 * EOB_ACT_LAST_MATCH -
1917 * EOB_ACT_CONTINUE_SCAN - continue scanning from current position
1918 * EOB_ACT_END_OF_FILE - end of file
1919 */
1920 static int yy_get_next_buffer (yyscan_t yyscanner)
1921 {
1922 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
1923 register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;
1924 register char *source = yyg->yytext_ptr;
1925 register int number_to_move, i;
1926 int ret_val;
1927
1928 if ( yyg->yy_c_buf_p > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars + 1] )
1929 YY_FATAL_ERROR(
1930 "fatal flex scanner internal error--end of buffer missed" );
1931
1932 if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 )
1933 { /* Don't try to fill the buffer, so this is an EOF. */
1934 if ( yyg->yy_c_buf_p - yyg->yytext_ptr - YY_MORE_ADJ == 1 )
1935 {
1936 /* We matched a single character, the EOB, so
1937 * treat this as a final EOF.
1938 */
1939 return EOB_ACT_END_OF_FILE;
1940 }
1941
1942 else
1943 {
1944 /* We matched some text prior to the EOB, first
1945 * process it.
1946 */
1947 return EOB_ACT_LAST_MATCH;
1948 }
1949 }
1950
1951 /* Try to read more data. */
1952
1953 /* First move last chars to start of buffer. */
1954 number_to_move = (int) (yyg->yy_c_buf_p - yyg->yytext_ptr) - 1;
1955
1956 for ( i = 0; i < number_to_move; ++i )
1957 *(dest++) = *(source++);
1958
1959 if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING )
1960 /* don't do the read, it's not guaranteed to return an EOF,
1961 * just force an EOF
1962 */
1963 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars = 0;
1964
1965 else
1966 {
1967 int num_to_read =
1968 YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;
1969
1970 while ( num_to_read <= 0 )
1971 { /* Not enough room in the buffer - grow it. */
1972
1973 /* just a shorter name for the current buffer */
1974 YY_BUFFER_STATE b = YY_CURRENT_BUFFER;
1975
1976 int yy_c_buf_p_offset =
1977 (int) (yyg->yy_c_buf_p - b->yy_ch_buf);
1978
1979 if ( b->yy_is_our_buffer )
1980 {
1981 int new_size = b->yy_buf_size * 2;
1982
1983 if ( new_size <= 0 )
1984 b->yy_buf_size += b->yy_buf_size / 8;
1985 else
1986 b->yy_buf_size *= 2;
1987
1988 b->yy_ch_buf = (char *)
1989 /* Include room in for 2 EOB chars. */
1990 config_realloc((void *) b->yy_ch_buf,b->yy_buf_size + 2 ,yyscanner );
1991 }
1992 else
1993 /* Can't grow it, we don't own it. */
1994 b->yy_ch_buf = 0;
1995
1996 if ( ! b->yy_ch_buf )
1997 YY_FATAL_ERROR(
1998 "fatal error - scanner input buffer overflow" );
1999
2000 yyg->yy_c_buf_p = &b->yy_ch_buf[yy_c_buf_p_offset];
2001
2002 num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size -
2003 number_to_move - 1;
2004
2005 }
2006
2007 if ( num_to_read > YY_READ_BUF_SIZE )
2008 num_to_read = YY_READ_BUF_SIZE;
2009
2010 /* Read in more data. */
2011 YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]),
2012 yyg->yy_n_chars, (size_t) num_to_read );
2013
2014 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars;
2015 }
2016
2017 if ( yyg->yy_n_chars == 0 )
2018 {
2019 if ( number_to_move == YY_MORE_ADJ )
2020 {
2021 ret_val = EOB_ACT_END_OF_FILE;
2022 config_restart(yyin ,yyscanner);
2023 }
2024
2025 else
2026 {
2027 ret_val = EOB_ACT_LAST_MATCH;
2028 YY_CURRENT_BUFFER_LVALUE->yy_buffer_status =
2029 YY_BUFFER_EOF_PENDING;
2030 }
2031 }
2032
2033 else
2034 ret_val = EOB_ACT_CONTINUE_SCAN;
2035
2036 if ((yy_size_t) (yyg->yy_n_chars + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) {
2037 /* Extend the array by 50%, plus the number we really need. */
2038 yy_size_t new_size = yyg->yy_n_chars + number_to_move + (yyg->yy_n_chars >> 1);
2039 YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) config_realloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,new_size ,yyscanner );
2040 if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
2041 YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" );
2042 }
2043
2044 yyg->yy_n_chars += number_to_move;
2045 YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] = YY_END_OF_BUFFER_CHAR;
2046 YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars + 1] = YY_END_OF_BUFFER_CHAR;
2047
2048 yyg->yytext_ptr = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0];
2049
2050 return ret_val;
2051 }
2052
2053 /* yy_get_previous_state - get the state just before the EOB char was reached */
2054
2055 static yy_state_type yy_get_previous_state (yyscan_t yyscanner)
2056 {
2057 register yy_state_type yy_current_state;
2058 register char *yy_cp;
2059 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2060
2061 yy_current_state = yyg->yy_start;
2062 yy_current_state += YY_AT_BOL();
2063
2064 for ( yy_cp = yyg->yytext_ptr + YY_MORE_ADJ; yy_cp < yyg->yy_c_buf_p; ++yy_cp )
2065 {
2066 register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
2067 if ( yy_accept[yy_current_state] )
2068 {
2069 yyg->yy_last_accepting_state = yy_current_state;
2070 yyg->yy_last_accepting_cpos = yy_cp;
2071 }
2072 while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
2073 {
2074 yy_current_state = (int) yy_def[yy_current_state];
2075 if ( yy_current_state >= 534 )
2076 yy_c = yy_meta[(unsigned int) yy_c];
2077 }
2078 yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
2079 }
2080
2081 return yy_current_state;
2082 }
2083
2084 /* yy_try_NUL_trans - try to make a transition on the NUL character
2085 *
2086 * synopsis
2087 * next_state = yy_try_NUL_trans( current_state );
2088 */
2089 static yy_state_type yy_try_NUL_trans (yy_state_type yy_current_state , yyscan_t yyscanner)
2090 {
2091 register int yy_is_jam;
2092 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; /* This var may be unused depending upon options. */
2093 register char *yy_cp = yyg->yy_c_buf_p;
2094
2095 register YY_CHAR yy_c = 1;
2096 if ( yy_accept[yy_current_state] )
2097 {
2098 yyg->yy_last_accepting_state = yy_current_state;
2099 yyg->yy_last_accepting_cpos = yy_cp;
2100 }
2101 while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
2102 {
2103 yy_current_state = (int) yy_def[yy_current_state];
2104 if ( yy_current_state >= 534 )
2105 yy_c = yy_meta[(unsigned int) yy_c];
2106 }
2107 yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
2108 yy_is_jam = (yy_current_state == 533);
2109
2110 return yy_is_jam ? 0 : yy_current_state;
2111 }
2112
2113 #ifndef YY_NO_INPUT
2114 #ifdef __cplusplus
2115 static int yyinput (yyscan_t yyscanner)
2116 #else
2117 static int input (yyscan_t yyscanner)
2118 #endif
2119
2120 {
2121 int c;
2122 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2123
2124 *yyg->yy_c_buf_p = yyg->yy_hold_char;
2125
2126 if ( *yyg->yy_c_buf_p == YY_END_OF_BUFFER_CHAR )
2127 {
2128 /* yy_c_buf_p now points to the character we want to return.
2129 * If this occurs *before* the EOB characters, then it's a
2130 * valid NUL; if not, then we've hit the end of the buffer.
2131 */
2132 if ( yyg->yy_c_buf_p < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] )
2133 /* This was really a NUL. */
2134 *yyg->yy_c_buf_p = '\0';
2135
2136 else
2137 { /* need more input */
2138 int offset = yyg->yy_c_buf_p - yyg->yytext_ptr;
2139 ++yyg->yy_c_buf_p;
2140
2141 switch ( yy_get_next_buffer( yyscanner ) )
2142 {
2143 case EOB_ACT_LAST_MATCH:
2144 /* This happens because yy_g_n_b()
2145 * sees that we've accumulated a
2146 * token and flags that we need to
2147 * try matching the token before
2148 * proceeding. But for input(),
2149 * there's no matching to consider.
2150 * So convert the EOB_ACT_LAST_MATCH
2151 * to EOB_ACT_END_OF_FILE.
2152 */
2153
2154 /* Reset buffer status. */
2155 config_restart(yyin ,yyscanner);
2156
2157 /*FALLTHROUGH*/
2158
2159 case EOB_ACT_END_OF_FILE:
2160 {
2161 if ( config_wrap(yyscanner ) )
2162 return EOF;
2163
2164 if ( ! yyg->yy_did_buffer_switch_on_eof )
2165 YY_NEW_FILE;
2166 #ifdef __cplusplus
2167 return yyinput(yyscanner);
2168 #else
2169 return input(yyscanner);
2170 #endif
2171 }
2172
2173 case EOB_ACT_CONTINUE_SCAN:
2174 yyg->yy_c_buf_p = yyg->yytext_ptr + offset;
2175 break;
2176 }
2177 }
2178 }
2179
2180 c = *(unsigned char *) yyg->yy_c_buf_p; /* cast for 8-bit char's */
2181 *yyg->yy_c_buf_p = '\0'; /* preserve yytext */
2182 yyg->yy_hold_char = *++yyg->yy_c_buf_p;
2183
2184 YY_CURRENT_BUFFER_LVALUE->yy_at_bol = (c == '\n');
2185
2186 return c;
2187 }
2188 #endif /* ifndef YY_NO_INPUT */
2189
2190 /** Immediately switch to a different input stream.
2191 * @param input_file A readable stream.
2192 * @param yyscanner The scanner object.
2193 * @note This function does not reset the start condition to @c INITIAL .
2194 */
2195 void config_restart (FILE * input_file , yyscan_t yyscanner)
2196 {
2197 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2198
2199 if ( ! YY_CURRENT_BUFFER ){
2200 config_ensure_buffer_stack (yyscanner);
2201 YY_CURRENT_BUFFER_LVALUE =
2202 config__create_buffer(yyin,YY_BUF_SIZE ,yyscanner);
2203 }
2204
2205 config__init_buffer(YY_CURRENT_BUFFER,input_file ,yyscanner);
2206 config__load_buffer_state(yyscanner );
2207 }
2208
2209 /** Switch to a different input buffer.
2210 * @param new_buffer The new input buffer.
2211 * @param yyscanner The scanner object.
2212 */
2213 void config__switch_to_buffer (YY_BUFFER_STATE new_buffer , yyscan_t yyscanner)
2214 {
2215 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2216
2217 /* TODO. We should be able to replace this entire function body
2218 * with
2219 * config_pop_buffer_state();
2220 * config_push_buffer_state(new_buffer);
2221 */
2222 config_ensure_buffer_stack (yyscanner);
2223 if ( YY_CURRENT_BUFFER == new_buffer )
2224 return;
2225
2226 if ( YY_CURRENT_BUFFER )
2227 {
2228 /* Flush out information for old buffer. */
2229 *yyg->yy_c_buf_p = yyg->yy_hold_char;
2230 YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = yyg->yy_c_buf_p;
2231 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars;
2232 }
2233
2234 YY_CURRENT_BUFFER_LVALUE = new_buffer;
2235 config__load_buffer_state(yyscanner );
2236
2237 /* We don't actually know whether we did this switch during
2238 * EOF (config_wrap()) processing, but the only time this flag
2239 * is looked at is after config_wrap() is called, so it's safe
2240 * to go ahead and always set it.
2241 */
2242 yyg->yy_did_buffer_switch_on_eof = 1;
2243 }
2244
2245 static void config__load_buffer_state (yyscan_t yyscanner)
2246 {
2247 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2248 yyg->yy_n_chars = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
2249 yyg->yytext_ptr = yyg->yy_c_buf_p = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos;
2250 yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file;
2251 yyg->yy_hold_char = *yyg->yy_c_buf_p;
2252 }
2253
2254 /** Allocate and initialize an input buffer state.
2255 * @param file A readable stream.
2256 * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE.
2257 * @param yyscanner The scanner object.
2258 * @return the allocated buffer state.
2259 */
2260 YY_BUFFER_STATE config__create_buffer (FILE * file, int size , yyscan_t yyscanner)
2261 {
2262 YY_BUFFER_STATE b;
2263
2264 b = (YY_BUFFER_STATE) config_alloc(sizeof( struct yy_buffer_state ) ,yyscanner );
2265 if ( ! b )
2266 YY_FATAL_ERROR( "out of dynamic memory in config__create_buffer()" );
2267
2268 b->yy_buf_size = size;
2269
2270 /* yy_ch_buf has to be 2 characters longer than the size given because
2271 * we need to put in 2 end-of-buffer characters.
2272 */
2273 b->yy_ch_buf = (char *) config_alloc(b->yy_buf_size + 2 ,yyscanner );
2274 if ( ! b->yy_ch_buf )
2275 YY_FATAL_ERROR( "out of dynamic memory in config__create_buffer()" );
2276
2277 b->yy_is_our_buffer = 1;
2278
2279 config__init_buffer(b,file ,yyscanner);
2280
2281 return b;
2282 }
2283
2284 /** Destroy the buffer.
2285 * @param b a buffer created with config__create_buffer()
2286 * @param yyscanner The scanner object.
2287 */
2288 void config__delete_buffer (YY_BUFFER_STATE b , yyscan_t yyscanner)
2289 {
2290 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2291
2292 if ( ! b )
2293 return;
2294
2295 if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */
2296 YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0;
2297
2298 if ( b->yy_is_our_buffer )
2299 config_free((void *) b->yy_ch_buf ,yyscanner );
2300
2301 config_free((void *) b ,yyscanner );
2302 }
2303
2304 /* Initializes or reinitializes a buffer.
2305 * This function is sometimes called more than once on the same buffer,
2306 * such as during a config_restart() or at EOF.
2307 */
2308 static void config__init_buffer (YY_BUFFER_STATE b, FILE * file , yyscan_t yyscanner)
2309
2310 {
2311 int oerrno = errno;
2312 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2313
2314 config__flush_buffer(b ,yyscanner);
2315
2316 b->yy_input_file = file;
2317 b->yy_fill_buffer = 1;
2318
2319 /* If b is the current buffer, then config__init_buffer was _probably_
2320 * called from config_restart() or through yy_get_next_buffer.
2321 * In that case, we don't want to reset the lineno or column.
2322 */
2323 if (b != YY_CURRENT_BUFFER){
2324 b->yy_bs_lineno = 1;
2325 b->yy_bs_column = 0;
2326 }
2327
2328 b->yy_is_interactive = 0;
2329
2330 errno = oerrno;
2331 }
2332
2333 /** Discard all buffered characters. On the next scan, YY_INPUT will be called.
2334 * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER.
2335 * @param yyscanner The scanner object.
2336 */
2337 void config__flush_buffer (YY_BUFFER_STATE b , yyscan_t yyscanner)
2338 {
2339 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2340 if ( ! b )
2341 return;
2342
2343 b->yy_n_chars = 0;
2344
2345 /* We always need two end-of-buffer characters. The first causes
2346 * a transition to the end-of-buffer state. The second causes
2347 * a jam in that state.
2348 */
2349 b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;
2350 b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;
2351
2352 b->yy_buf_pos = &b->yy_ch_buf[0];
2353
2354 b->yy_at_bol = 1;
2355 b->yy_buffer_status = YY_BUFFER_NEW;
2356
2357 if ( b == YY_CURRENT_BUFFER )
2358 config__load_buffer_state(yyscanner );
2359 }
2360
2361 /** Pushes the new state onto the stack. The new state becomes
2362 * the current state. This function will allocate the stack
2363 * if necessary.
2364 * @param new_buffer The new state.
2365 * @param yyscanner The scanner object.
2366 */
2367 void config_push_buffer_state (YY_BUFFER_STATE new_buffer , yyscan_t yyscanner)
2368 {
2369 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2370 if (new_buffer == NULL)
2371 return;
2372
2373 config_ensure_buffer_stack(yyscanner);
2374
2375 /* This block is copied from config__switch_to_buffer. */
2376 if ( YY_CURRENT_BUFFER )
2377 {
2378 /* Flush out information for old buffer. */
2379 *yyg->yy_c_buf_p = yyg->yy_hold_char;
2380 YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = yyg->yy_c_buf_p;
2381 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars;
2382 }
2383
2384 /* Only push if top exists. Otherwise, replace top. */
2385 if (YY_CURRENT_BUFFER)
2386 yyg->yy_buffer_stack_top++;
2387 YY_CURRENT_BUFFER_LVALUE = new_buffer;
2388
2389 /* copied from config__switch_to_buffer. */
2390 config__load_buffer_state(yyscanner );
2391 yyg->yy_did_buffer_switch_on_eof = 1;
2392 }
2393
2394 /** Removes and deletes the top of the stack, if present.
2395 * The next element becomes the new top.
2396 * @param yyscanner The scanner object.
2397 */
2398 void config_pop_buffer_state (yyscan_t yyscanner)
2399 {
2400 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2401 if (!YY_CURRENT_BUFFER)
2402 return;
2403
2404 config__delete_buffer(YY_CURRENT_BUFFER ,yyscanner);
2405 YY_CURRENT_BUFFER_LVALUE = NULL;
2406 if (yyg->yy_buffer_stack_top > 0)
2407 --yyg->yy_buffer_stack_top;
2408
2409 if (YY_CURRENT_BUFFER) {
2410 config__load_buffer_state(yyscanner );
2411 yyg->yy_did_buffer_switch_on_eof = 1;
2412 }
2413 }
2414
2415 /* Allocates the stack if it does not exist.
2416 * Guarantees space for at least one push.
2417 */
2418 static void config_ensure_buffer_stack (yyscan_t yyscanner)
2419 {
2420 int num_to_alloc;
2421 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2422
2423 if (!yyg->yy_buffer_stack) {
2424
2425 /* First allocation is just for 2 elements, since we don't know if this
2426 * scanner will even need a stack. We use 2 instead of 1 to avoid an
2427 * immediate realloc on the next call.
2428 */
2429 num_to_alloc = 1;
2430 yyg->yy_buffer_stack = (struct yy_buffer_state**)config_alloc
2431 (num_to_alloc * sizeof(struct yy_buffer_state*)
2432 , yyscanner);
2433 if ( ! yyg->yy_buffer_stack )
2434 YY_FATAL_ERROR( "out of dynamic memory in config_ensure_buffer_stack()" );
2435
2436 memset(yyg->yy_buffer_stack, 0, num_to_alloc * sizeof(struct yy_buffer_state*));
2437
2438 yyg->yy_buffer_stack_max = num_to_alloc;
2439 yyg->yy_buffer_stack_top = 0;
2440 return;
2441 }
2442
2443 if (yyg->yy_buffer_stack_top >= (yyg->yy_buffer_stack_max) - 1){
2444
2445 /* Increase the buffer to prepare for a possible push. */
2446 int grow_size = 8 /* arbitrary grow size */;
2447
2448 num_to_alloc = yyg->yy_buffer_stack_max + grow_size;
2449 yyg->yy_buffer_stack = (struct yy_buffer_state**)config_realloc
2450 (yyg->yy_buffer_stack,
2451 num_to_alloc * sizeof(struct yy_buffer_state*)
2452 , yyscanner);
2453 if ( ! yyg->yy_buffer_stack )
2454 YY_FATAL_ERROR( "out of dynamic memory in config_ensure_buffer_stack()" );
2455
2456 /* zero only the new slots.*/
2457 memset(yyg->yy_buffer_stack + yyg->yy_buffer_stack_max, 0, grow_size * sizeof(struct yy_buffer_state*));
2458 yyg->yy_buffer_stack_max = num_to_alloc;
2459 }
2460 }
2461
2462 /** Setup the input buffer state to scan directly from a user-specified character buffer.
2463 * @param base the character buffer
2464 * @param size the size in bytes of the character buffer
2465 * @param yyscanner The scanner object.
2466 * @return the newly allocated buffer state object.
2467 */
2468 YY_BUFFER_STATE config__scan_buffer (char * base, yy_size_t size , yyscan_t yyscanner)
2469 {
2470 YY_BUFFER_STATE b;
2471
2472 if ( size < 2 ||
2473 base[size-2] != YY_END_OF_BUFFER_CHAR ||
2474 base[size-1] != YY_END_OF_BUFFER_CHAR )
2475 /* They forgot to leave room for the EOB's. */
2476 return 0;
2477
2478 b = (YY_BUFFER_STATE) config_alloc(sizeof( struct yy_buffer_state ) ,yyscanner );
2479 if ( ! b )
2480 YY_FATAL_ERROR( "out of dynamic memory in config__scan_buffer()" );
2481
2482 b->yy_buf_size = size - 2; /* "- 2" to take care of EOB's */
2483 b->yy_buf_pos = b->yy_ch_buf = base;
2484 b->yy_is_our_buffer = 0;
2485 b->yy_input_file = 0;
2486 b->yy_n_chars = b->yy_buf_size;
2487 b->yy_is_interactive = 0;
2488 b->yy_at_bol = 1;
2489 b->yy_fill_buffer = 0;
2490 b->yy_buffer_status = YY_BUFFER_NEW;
2491
2492 config__switch_to_buffer(b ,yyscanner );
2493
2494 return b;
2495 }
2496
2497 /** Setup the input buffer state to scan a string. The next call to config_lex() will
2498 * scan from a @e copy of @a str.
2499 * @param yystr a NUL-terminated string to scan
2500 * @param yyscanner The scanner object.
2501 * @return the newly allocated buffer state object.
2502 * @note If you want to scan bytes that may contain NUL values, then use
2503 * config__scan_bytes() instead.
2504 */
2505 YY_BUFFER_STATE config__scan_string (yyconst char * yystr , yyscan_t yyscanner)
2506 {
2507
2508 return config__scan_bytes(yystr,strlen(yystr) ,yyscanner);
2509 }
2510
2511 /** Setup the input buffer state to scan the given bytes. The next call to config_lex() will
2512 * scan from a @e copy of @a bytes.
2513 * @param bytes the byte buffer to scan
2514 * @param len the number of bytes in the buffer pointed to by @a bytes.
2515 * @param yyscanner The scanner object.
2516 * @return the newly allocated buffer state object.
2517 */
2518 YY_BUFFER_STATE config__scan_bytes (yyconst char * yybytes, int _yybytes_len , yyscan_t yyscanner)
2519 {
2520 YY_BUFFER_STATE b;
2521 char *buf;
2522 yy_size_t n;
2523 int i;
2524
2525 /* Get memory for full buffer, including space for trailing EOB's. */
2526 n = _yybytes_len + 2;
2527 buf = (char *) config_alloc(n ,yyscanner );
2528 if ( ! buf )
2529 YY_FATAL_ERROR( "out of dynamic memory in config__scan_bytes()" );
2530
2531 for ( i = 0; i < _yybytes_len; ++i )
2532 buf[i] = yybytes[i];
2533
2534 buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR;
2535
2536 b = config__scan_buffer(buf,n ,yyscanner);
2537 if ( ! b )
2538 YY_FATAL_ERROR( "bad buffer in config__scan_bytes()" );
2539
2540 /* It's okay to grow etc. this buffer, and we should throw it
2541 * away when we're done.
2542 */
2543 b->yy_is_our_buffer = 1;
2544
2545 return b;
2546 }
2547
2548 #ifndef YY_EXIT_FAILURE
2549 #define YY_EXIT_FAILURE 2
2550 #endif
2551
2552 static void yy_fatal_error (yyconst char* msg , yyscan_t yyscanner)
2553 {
2554 (void) fprintf( stderr, "%s\n", msg );
2555 exit( YY_EXIT_FAILURE );
2556 }
2557
2558 /* Redefine yyless() so it works in section 3 code. */
2559
2560 #undef yyless
2561 #define yyless(n) \
2562 do \
2563 { \
2564 /* Undo effects of setting up yytext. */ \
2565 int yyless_macro_arg = (n); \
2566 YY_LESS_LINENO(yyless_macro_arg);\
2567 yytext[yyleng] = yyg->yy_hold_char; \
2568 yyg->yy_c_buf_p = yytext + yyless_macro_arg; \
2569 yyg->yy_hold_char = *yyg->yy_c_buf_p; \
2570 *yyg->yy_c_buf_p = '\0'; \
2571 yyleng = yyless_macro_arg; \
2572 } \
2573 while ( 0 )
2574
2575 /* Accessor methods (get/set functions) to struct members. */
2576
2577 /** Get the user-defined data for this scanner.
2578 * @param yyscanner The scanner object.
2579 */
2580 YY_EXTRA_TYPE config_get_extra (yyscan_t yyscanner)
2581 {
2582 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2583 return yyextra;
2584 }
2585
2586 /** Get the current line number.
2587 * @param yyscanner The scanner object.
2588 */
2589 int config_get_lineno (yyscan_t yyscanner)
2590 {
2591 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2592
2593 if (! YY_CURRENT_BUFFER)
2594 return 0;
2595
2596 return yylineno;
2597 }
2598
2599 /** Get the current column number.
2600 * @param yyscanner The scanner object.
2601 */
2602 int config_get_column (yyscan_t yyscanner)
2603 {
2604 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2605
2606 if (! YY_CURRENT_BUFFER)
2607 return 0;
2608
2609 return yycolumn;
2610 }
2611
2612 /** Get the input stream.
2613 * @param yyscanner The scanner object.
2614 */
2615 FILE *config_get_in (yyscan_t yyscanner)
2616 {
2617 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2618 return yyin;
2619 }
2620
2621 /** Get the output stream.
2622 * @param yyscanner The scanner object.
2623 */
2624 FILE *config_get_out (yyscan_t yyscanner)
2625 {
2626 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2627 return yyout;
2628 }
2629
2630 /** Get the length of the current token.
2631 * @param yyscanner The scanner object.
2632 */
2633 int config_get_leng (yyscan_t yyscanner)
2634 {
2635 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2636 return yyleng;
2637 }
2638
2639 /** Get the current token.
2640 * @param yyscanner The scanner object.
2641 */
2642
2643 char *config_get_text (yyscan_t yyscanner)
2644 {
2645 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2646 return yytext;
2647 }
2648
2649 /** Set the user-defined data. This data is never touched by the scanner.
2650 * @param user_defined The data to be associated with this scanner.
2651 * @param yyscanner The scanner object.
2652 */
2653 void config_set_extra (YY_EXTRA_TYPE user_defined , yyscan_t yyscanner)
2654 {
2655 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2656 yyextra = user_defined ;
2657 }
2658
2659 /** Set the current line number.
2660 * @param line_number
2661 * @param yyscanner The scanner object.
2662 */
2663 void config_set_lineno (int line_number , yyscan_t yyscanner)
2664 {
2665 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2666
2667 /* lineno is only valid if an input buffer exists. */
2668 if (! YY_CURRENT_BUFFER )
2669 yy_fatal_error( "config_set_lineno called with no buffer" , yyscanner);
2670
2671 yylineno = line_number;
2672 }
2673
2674 /** Set the current column.
2675 * @param line_number
2676 * @param yyscanner The scanner object.
2677 */
2678 void config_set_column (int column_no , yyscan_t yyscanner)
2679 {
2680 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2681
2682 /* column is only valid if an input buffer exists. */
2683 if (! YY_CURRENT_BUFFER )
2684 yy_fatal_error( "config_set_column called with no buffer" , yyscanner);
2685
2686 yycolumn = column_no;
2687 }
2688
2689 /** Set the input stream. This does not discard the current
2690 * input buffer.
2691 * @param in_str A readable stream.
2692 * @param yyscanner The scanner object.
2693 * @see config__switch_to_buffer
2694 */
2695 void config_set_in (FILE * in_str , yyscan_t yyscanner)
2696 {
2697 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2698 yyin = in_str ;
2699 }
2700
2701 void config_set_out (FILE * out_str , yyscan_t yyscanner)
2702 {
2703 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2704 yyout = out_str ;
2705 }
2706
2707 int config_get_debug (yyscan_t yyscanner)
2708 {
2709 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2710 return yy_flex_debug;
2711 }
2712
2713 void config_set_debug (int bdebug , yyscan_t yyscanner)
2714 {
2715 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2716 yy_flex_debug = bdebug ;
2717 }
2718
2719 /* Accessor methods for yylval and yylloc */
2720
2721 YYSTYPE * config_get_lval (yyscan_t yyscanner)
2722 {
2723 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2724 return yylval;
2725 }
2726
2727 void config_set_lval (YYSTYPE * yylval_param , yyscan_t yyscanner)
2728 {
2729 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2730 yylval = yylval_param;
2731 }
2732
2733 /* User-visible API */
2734
2735 /* config_lex_init is special because it creates the scanner itself, so it is
2736 * the ONLY reentrant function that doesn't take the scanner as the last argument.
2737 * That's why we explicitly handle the declaration, instead of using our macros.
2738 */
2739
2740 int config_lex_init(yyscan_t* ptr_yy_globals)
2741
2742 {
2743 if (ptr_yy_globals == NULL){
2744 errno = EINVAL;
2745 return 1;
2746 }
2747
2748 *ptr_yy_globals = (yyscan_t) config_alloc ( sizeof( struct yyguts_t ), NULL );
2749
2750 if (*ptr_yy_globals == NULL){
2751 errno = ENOMEM;
2752 return 1;
2753 }
2754
2755 /* By setting to 0xAA, we expose bugs in yy_init_globals. Leave at 0x00 for releases. */
2756 memset(*ptr_yy_globals,0x00,sizeof(struct yyguts_t));
2757
2758 return yy_init_globals ( *ptr_yy_globals );
2759 }
2760
2761 /* config_lex_init_extra has the same functionality as config_lex_init, but follows the
2762 * convention of taking the scanner as the last argument. Note however, that
2763 * this is a *pointer* to a scanner, as it will be allocated by this call (and
2764 * is the reason, too, why this function also must handle its own declaration).
2765 * The user defined value in the first argument will be available to config_alloc in
2766 * the yyextra field.
2767 */
2768
2769 int config_lex_init_extra(YY_EXTRA_TYPE yy_user_defined,yyscan_t* ptr_yy_globals )
2770
2771 {
2772 struct yyguts_t dummy_yyguts;
2773
2774 config_set_extra (yy_user_defined, &dummy_yyguts);
2775
2776 if (ptr_yy_globals == NULL){
2777 errno = EINVAL;
2778 return 1;
2779 }
2780
2781 *ptr_yy_globals = (yyscan_t) config_alloc ( sizeof( struct yyguts_t ), &dummy_yyguts );
2782
2783 if (*ptr_yy_globals == NULL){
2784 errno = ENOMEM;
2785 return 1;
2786 }
2787
2788 /* By setting to 0xAA, we expose bugs in
2789 yy_init_globals. Leave at 0x00 for releases. */
2790 memset(*ptr_yy_globals,0x00,sizeof(struct yyguts_t));
2791
2792 config_set_extra (yy_user_defined, *ptr_yy_globals);
2793
2794 return yy_init_globals ( *ptr_yy_globals );
2795 }
2796
2797 static int yy_init_globals (yyscan_t yyscanner)
2798 {
2799 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2800 /* Initialization is the same as for the non-reentrant scanner.
2801 * This function is called from config_lex_destroy(), so don't allocate here.
2802 */
2803
2804 yyg->yy_buffer_stack = 0;
2805 yyg->yy_buffer_stack_top = 0;
2806 yyg->yy_buffer_stack_max = 0;
2807 yyg->yy_c_buf_p = (char *) 0;
2808 yyg->yy_init = 0;
2809 yyg->yy_start = 0;
2810
2811 yyg->yy_start_stack_ptr = 0;
2812 yyg->yy_start_stack_depth = 0;
2813 yyg->yy_start_stack = NULL;
2814
2815 /* Defined in main.c */
2816 #ifdef YY_STDINIT
2817 yyin = stdin;
2818 yyout = stdout;
2819 #else
2820 yyin = (FILE *) 0;
2821 yyout = (FILE *) 0;
2822 #endif
2823
2824 /* For future reference: Set errno on error, since we are called by
2825 * config_lex_init()
2826 */
2827 return 0;
2828 }
2829
2830 /* config_lex_destroy is for both reentrant and non-reentrant scanners. */
2831 int config_lex_destroy (yyscan_t yyscanner)
2832 {
2833 struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
2834
2835 /* Pop the buffer stack, destroying each element. */
2836 while(YY_CURRENT_BUFFER){
2837 config__delete_buffer(YY_CURRENT_BUFFER ,yyscanner );
2838 YY_CURRENT_BUFFER_LVALUE = NULL;
2839 config_pop_buffer_state(yyscanner);
2840 }
2841
2842 /* Destroy the stack itself. */
2843 config_free(yyg->yy_buffer_stack ,yyscanner);
2844 yyg->yy_buffer_stack = NULL;
2845
2846 /* Destroy the start condition stack. */
2847 config_free(yyg->yy_start_stack ,yyscanner );
2848 yyg->yy_start_stack = NULL;
2849
2850 /* Reset the globals. This is important in a non-reentrant scanner so the next time
2851 * config_lex() is called, initialization will occur. */
2852 yy_init_globals( yyscanner);
2853
2854 /* Destroy the main struct (reentrant only). */
2855 config_free ( yyscanner , yyscanner );
2856 yyscanner = NULL;
2857 return 0;
2858 }
2859
2860 /*
2861 * Internal utility routines.
2862 */
2863
2864 #ifndef yytext_ptr
2865 static void yy_flex_strncpy (char* s1, yyconst char * s2, int n , yyscan_t yyscanner)
2866 {
2867 register int i;
2868 for ( i = 0; i < n; ++i )
2869 s1[i] = s2[i];
2870 }
2871 #endif
2872
2873 #ifdef YY_NEED_STRLEN
2874 static int yy_flex_strlen (yyconst char * s , yyscan_t yyscanner)
2875 {
2876 register int n;
2877 for ( n = 0; s[n]; ++n )
2878 ;
2879
2880 return n;
2881 }
2882 #endif
2883
2884 void *config_alloc (yy_size_t size , yyscan_t yyscanner)
2885 {
2886 return (void *) malloc( size );
2887 }
2888
2889 void *config_realloc (void * ptr, yy_size_t size , yyscan_t yyscanner)
2890 {
2891 /* The cast to (char *) in the following accommodates both
2892 * implementations that use char* generic pointers, and those
2893 * that use void* generic pointers. It works with the latter
2894 * because both ANSI C and C++ allow castless assignment from
2895 * any pointer type to void*, and deal with argument conversions
2896 * as though doing an assignment.
2897 */
2898 return (void *) realloc( (char *) ptr, size );
2899 }
2900
2901 void config_free (void * ptr , yyscan_t yyscanner)
2902 {
2903 free( (char *) ptr ); /* see config_realloc() for (char *) cast */
2904 }
2905
2906 #define YYTABLES_NAME "yytables"
2907
2908 #line 218 "libmemcached/csl/scanner.l"
2909
2910
2911
2912 void Context::init_scanner()
2913 {
2914 config_lex_init(&scanner);
2915 config_set_extra(this,scanner);
2916 }
2917
2918 void Context::destroy_scanner()
2919 {
2920 (void)yy_fatal_error; // Removes warning about unused yy_fatal_error()
2921 config_lex_destroy(scanner);
2922 }
2923
2924