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