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