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