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