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