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