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