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