MySQL 5.6.14 Source Code Document
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
fts0tlex.cc
1 #include "univ.i"
2 #line 2 "fts0tlex.cc"
3 
4 #line 4 "fts0tlex.cc"
5 
6 #define YY_INT_ALIGNED short int
7 
8 /* A lexical scanner generated by flex */
9 
10 #define FLEX_SCANNER
11 #define YY_FLEX_MAJOR_VERSION 2
12 #define YY_FLEX_MINOR_VERSION 5
13 #define YY_FLEX_SUBMINOR_VERSION 35
14 #if YY_FLEX_SUBMINOR_VERSION > 0
15 #define FLEX_BETA
16 #endif
17 
18 /* First, we deal with platform-specific or compiler-specific issues. */
19 
20 /* begin standard C headers. */
21 #include <stdio.h>
22 #include <string.h>
23 #include <errno.h>
24 #include <stdlib.h>
25 
26 /* end standard C headers. */
27 
28 /* flex integer type definitions */
29 
30 #ifndef FLEXINT_H
31 #define FLEXINT_H
32 
33 /* C99 systems have <inttypes.h>. Non-C99 systems may or may not. */
34 
35 #if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
36 
37 /* C99 says to define __STDC_LIMIT_MACROS before including stdint.h,
38  * if you want the limit (max/min) macros for int types.
39  */
40 #ifndef __STDC_LIMIT_MACROS
41 #define __STDC_LIMIT_MACROS 1
42 #endif
43 
44 #include <inttypes.h>
45 typedef int8_t flex_int8_t;
46 typedef uint8_t flex_uint8_t;
47 typedef int16_t flex_int16_t;
48 typedef uint16_t flex_uint16_t;
49 typedef int32_t flex_int32_t;
50 typedef uint32_t flex_uint32_t;
51 #else
52 typedef signed char flex_int8_t;
53 typedef short int flex_int16_t;
54 typedef int flex_int32_t;
55 typedef unsigned char flex_uint8_t;
56 typedef unsigned short int flex_uint16_t;
57 typedef unsigned int flex_uint32_t;
58 
59 /* Limits of integral types. */
60 #ifndef INT8_MIN
61 #define INT8_MIN (-128)
62 #endif
63 #ifndef INT16_MIN
64 #define INT16_MIN (-32767-1)
65 #endif
66 #ifndef INT32_MIN
67 #define INT32_MIN (-2147483647-1)
68 #endif
69 #ifndef INT8_MAX
70 #define INT8_MAX (127)
71 #endif
72 #ifndef INT16_MAX
73 #define INT16_MAX (32767)
74 #endif
75 #ifndef INT32_MAX
76 #define INT32_MAX (2147483647)
77 #endif
78 #ifndef UINT8_MAX
79 #define UINT8_MAX (255U)
80 #endif
81 #ifndef UINT16_MAX
82 #define UINT16_MAX (65535U)
83 #endif
84 #ifndef UINT32_MAX
85 #define UINT32_MAX (4294967295U)
86 #endif
87 
88 #endif /* ! C99 */
89 
90 #endif /* ! FLEXINT_H */
91 
92 #ifdef __cplusplus
93 
94 /* The "const" storage-class-modifier is valid. */
95 #define YY_USE_CONST
96 
97 #else /* ! __cplusplus */
98 
99 /* C99 requires __STDC__ to be defined as 1. */
100 #if defined (__STDC__)
101 
102 #define YY_USE_CONST
103 
104 #endif /* defined (__STDC__) */
105 #endif /* ! __cplusplus */
106 
107 #ifdef YY_USE_CONST
108 #define yyconst const
109 #else
110 #define yyconst
111 #endif
112 
113 /* Returned upon end-of-file. */
114 #define YY_NULL 0
115 
116 /* Promotes a possibly negative, possibly signed char to an unsigned
117  * integer for use as an array index. If the signed char is negative,
118  * we want to instead treat it as an 8-bit unsigned char, hence the
119  * double cast.
120  */
121 #define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c)
122 
123 /* An opaque pointer. */
124 #ifndef YY_TYPEDEF_YY_SCANNER_T
125 #define YY_TYPEDEF_YY_SCANNER_T
126 typedef void* yyscan_t;
127 #endif
128 
129 /* For convenience, these vars (plus the bison vars far below)
130  are macros in the reentrant scanner. */
131 #define yyin yyg->yyin_r
132 #define yyout yyg->yyout_r
133 #define yyextra yyg->yyextra_r
134 #define yyleng yyg->yyleng_r
135 #define yytext yyg->yytext_r
136 #define yylineno (YY_CURRENT_BUFFER_LVALUE->yy_bs_lineno)
137 #define yycolumn (YY_CURRENT_BUFFER_LVALUE->yy_bs_column)
138 #define yy_flex_debug yyg->yy_flex_debug_r
139 
140 /* Enter a start condition. This macro really ought to take a parameter,
141  * but we do it the disgusting crufty way forced on us by the ()-less
142  * definition of BEGIN.
143  */
144 #define BEGIN yyg->yy_start = 1 + 2 *
145 
146 /* Translate the current start state into a value that can be later handed
147  * to BEGIN to return to the state. The YYSTATE alias is for lex
148  * compatibility.
149  */
150 #define YY_START ((yyg->yy_start - 1) / 2)
151 #define YYSTATE YY_START
152 
153 /* Action number for EOF rule of a given start state. */
154 #define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
155 
156 /* Special action meaning "start processing a new file". */
157 #define YY_NEW_FILE fts0trestart(yyin ,yyscanner )
158 
159 #define YY_END_OF_BUFFER_CHAR 0
160 
161 /* Size of default input buffer. */
162 #ifndef YY_BUF_SIZE
163 #ifdef __ia64__
164 /* On IA-64, the buffer size is 16k, not 8k.
165  * Moreover, YY_BUF_SIZE is 2*YY_READ_BUF_SIZE in the general case.
166  * Ditto for the __ia64__ case accordingly.
167  */
168 #define YY_BUF_SIZE 32768
169 #else
170 #define YY_BUF_SIZE 16384
171 #endif /* __ia64__ */
172 #endif
173 
174 /* The state buf must be large enough to hold one state per character in the main buffer.
175  */
176 #define YY_STATE_BUF_SIZE ((YY_BUF_SIZE + 2) * sizeof(yy_state_type))
177 
178 #ifndef YY_TYPEDEF_YY_BUFFER_STATE
179 #define YY_TYPEDEF_YY_BUFFER_STATE
180 typedef struct yy_buffer_state *YY_BUFFER_STATE;
181 #endif
182 
183 #define EOB_ACT_CONTINUE_SCAN 0
184 #define EOB_ACT_END_OF_FILE 1
185 #define EOB_ACT_LAST_MATCH 2
186 
187  #define YY_LESS_LINENO(n)
188 
189 /* Return all but the first "n" matched characters back to the input stream. */
190 #define yyless(n) \
191  do \
192  { \
193  /* Undo effects of setting up yytext. */ \
194  int yyless_macro_arg = (n); \
195  YY_LESS_LINENO(yyless_macro_arg);\
196  *yy_cp = yyg->yy_hold_char; \
197  YY_RESTORE_YY_MORE_OFFSET \
198  yyg->yy_c_buf_p = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \
199  YY_DO_BEFORE_ACTION; /* set up yytext again */ \
200  } \
201  while ( 0 )
202 
203 #define unput(c) yyunput( c, yyg->yytext_ptr , yyscanner )
204 
205 #ifndef YY_TYPEDEF_YY_SIZE_T
206 #define YY_TYPEDEF_YY_SIZE_T
207 typedef size_t yy_size_t;
208 #endif
209 
210 #ifndef YY_STRUCT_YY_BUFFER_STATE
211 #define YY_STRUCT_YY_BUFFER_STATE
212 struct yy_buffer_state
213  {
214  FILE *yy_input_file;
215 
216  char *yy_ch_buf; /* input buffer */
217  char *yy_buf_pos; /* current position in input buffer */
218 
219  /* Size of input buffer in bytes, not including room for EOB
220  * characters.
221  */
222  yy_size_t yy_buf_size;
223 
224  /* Number of characters read into yy_ch_buf, not including EOB
225  * characters.
226  */
227  int yy_n_chars;
228 
229  /* Whether we "own" the buffer - i.e., we know we created it,
230  * and can realloc() it to grow it, and should free() it to
231  * delete it.
232  */
233  int yy_is_our_buffer;
234 
235  /* Whether this is an "interactive" input source; if so, and
236  * if we're using stdio for input, then we want to use getc()
237  * instead of fread(), to make sure we stop fetching input after
238  * each newline.
239  */
240  int yy_is_interactive;
241 
242  /* Whether we're considered to be at the beginning of a line.
243  * If so, '^' rules will be active on the next match, otherwise
244  * not.
245  */
246  int yy_at_bol;
247 
248  int yy_bs_lineno;
249  int yy_bs_column;
251  /* Whether to try to fill the input buffer when we reach the
252  * end of it.
253  */
254  int yy_fill_buffer;
255 
256  int yy_buffer_status;
257 
258 #define YY_BUFFER_NEW 0
259 #define YY_BUFFER_NORMAL 1
260  /* When an EOF's been seen but there's still some text to process
261  * then we mark the buffer as YY_EOF_PENDING, to indicate that we
262  * shouldn't try reading from the input source any more. We might
263  * still have a bunch of tokens to match, though, because of
264  * possible backing-up.
265  *
266  * When we actually see the EOF, we change the status to "new"
267  * (via fts0trestart()), so that the user can continue scanning by
268  * just pointing yyin at a new input file.
269  */
270 #define YY_BUFFER_EOF_PENDING 2
271 
272  };
273 #endif /* !YY_STRUCT_YY_BUFFER_STATE */
274 
275 /* We provide macros for accessing buffer states in case in the
276  * future we want to put the buffer states in a more general
277  * "scanner state".
278  *
279  * Returns the top of the stack, or NULL.
280  */
281 #define YY_CURRENT_BUFFER ( yyg->yy_buffer_stack \
282  ? yyg->yy_buffer_stack[yyg->yy_buffer_stack_top] \
283  : NULL)
284 
285 /* Same as previous macro, but useful when we know that the buffer stack is not
286  * NULL or when we need an lvalue. For internal use only.
287  */
288 #define YY_CURRENT_BUFFER_LVALUE yyg->yy_buffer_stack[yyg->yy_buffer_stack_top]
289 
290 void fts0trestart (FILE *input_file ,yyscan_t yyscanner );
291 void fts0t_switch_to_buffer (YY_BUFFER_STATE new_buffer ,yyscan_t yyscanner );
292 YY_BUFFER_STATE fts0t_create_buffer (FILE *file,int size ,yyscan_t yyscanner );
293 void fts0t_delete_buffer (YY_BUFFER_STATE b ,yyscan_t yyscanner );
294 void fts0t_flush_buffer (YY_BUFFER_STATE b ,yyscan_t yyscanner );
295 void fts0tpush_buffer_state (YY_BUFFER_STATE new_buffer ,yyscan_t yyscanner );
296 void fts0tpop_buffer_state (yyscan_t yyscanner );
297 
298 static void fts0tensure_buffer_stack (yyscan_t yyscanner );
299 static void fts0t_load_buffer_state (yyscan_t yyscanner );
300 static void fts0t_init_buffer (YY_BUFFER_STATE b,FILE *file ,yyscan_t yyscanner );
301 
302 #define YY_FLUSH_BUFFER fts0t_flush_buffer(YY_CURRENT_BUFFER ,yyscanner)
303 
304 YY_BUFFER_STATE fts0t_scan_buffer (char *base,yy_size_t size ,yyscan_t yyscanner );
305 YY_BUFFER_STATE fts0t_scan_string (yyconst char *yy_str ,yyscan_t yyscanner );
306 YY_BUFFER_STATE fts0t_scan_bytes (yyconst char *bytes,int len ,yyscan_t yyscanner );
307 
308 void *fts0talloc (yy_size_t , yyscan_t yyscanner __attribute__((unused)) __attribute__((unused)) __attribute__((unused)) __attribute__((unused)) __attribute__((unused)) __attribute__((unused)) );
309 void *fts0trealloc (void *,yy_size_t , yyscan_t yyscanner __attribute__((unused)) __attribute__((unused)) __attribute__((unused)) __attribute__((unused)) __attribute__((unused)) __attribute__((unused)) );
310 void fts0tfree (void * , yyscan_t yyscanner __attribute__((unused)) __attribute__((unused)) __attribute__((unused)) __attribute__((unused)) __attribute__((unused)) __attribute__((unused)) );
311 
312 #define yy_new_buffer fts0t_create_buffer
313 
314 #define yy_set_interactive(is_interactive) \
315  { \
316  if ( ! YY_CURRENT_BUFFER ){ \
317  fts0tensure_buffer_stack (yyscanner); \
318  YY_CURRENT_BUFFER_LVALUE = \
319  fts0t_create_buffer(yyin,YY_BUF_SIZE ,yyscanner); \
320  } \
321  YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \
322  }
323 
324 #define yy_set_bol(at_bol) \
325  { \
326  if ( ! YY_CURRENT_BUFFER ){\
327  fts0tensure_buffer_stack (yyscanner); \
328  YY_CURRENT_BUFFER_LVALUE = \
329  fts0t_create_buffer(yyin,YY_BUF_SIZE ,yyscanner); \
330  } \
331  YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \
332  }
333 
334 #define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol)
335 
336 /* Begin user sect3 */
337 
338 #define fts0twrap(n) 1
339 #define YY_SKIP_YYWRAP
340 
341 typedef unsigned char YY_CHAR;
342 
343 typedef int yy_state_type;
344 
345 #define yytext_ptr yytext_r
346 
347 static yy_state_type yy_get_previous_state (yyscan_t yyscanner );
348 static yy_state_type yy_try_NUL_trans (yy_state_type current_state ,yyscan_t yyscanner);
349 static int yy_get_next_buffer (yyscan_t yyscanner );
350 static void yy_fatal_error (yyconst char msg[] , yyscan_t yyscanner __attribute__((unused)) __attribute__((unused)) __attribute__((unused)) __attribute__((unused)) __attribute__((unused)) __attribute__((unused)) );
351 
352 /* Done after the current pattern has been matched and before the
353  * corresponding action - sets up yytext.
354  */
355 #define YY_DO_BEFORE_ACTION \
356  yyg->yytext_ptr = yy_bp; \
357  yyleng = (size_t) (yy_cp - yy_bp); \
358  yyg->yy_hold_char = *yy_cp; \
359  *yy_cp = '\0'; \
360  yyg->yy_c_buf_p = yy_cp;
361 
362 #define YY_NUM_RULES 7
363 #define YY_END_OF_BUFFER 8
364 /* This struct is not used in this scanner,
365  but its presence is necessary. */
366 struct yy_trans_info
367  {
368  flex_int32_t yy_verify;
369  flex_int32_t yy_nxt;
370  };
371 static yyconst flex_int16_t yy_accept[17] =
372  { 0,
373  4, 4, 8, 4, 1, 6, 1, 5, 5, 2,
374  4, 1, 1, 0, 3, 0
375  } ;
376 
377 static yyconst flex_int32_t yy_ec[256] =
378  { 0,
379  1, 1, 1, 1, 1, 1, 1, 1, 2, 3,
380  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
381  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
382  1, 4, 1, 5, 1, 1, 6, 1, 1, 1,
383  1, 7, 1, 1, 1, 1, 1, 1, 1, 1,
384  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
385  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
386  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
387  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
388  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
389 
390  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
391  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
392  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
393  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
394  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
395  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
396  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
397  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
398  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
399  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
400 
401  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
402  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
403  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
404  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
405  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
406  1, 1, 1, 1, 1
407  } ;
408 
409 static yyconst flex_int32_t yy_meta[8] =
410  { 0,
411  1, 2, 3, 4, 5, 5, 1
412  } ;
413 
414 static yyconst flex_int16_t yy_base[20] =
415  { 0,
416  0, 0, 18, 0, 6, 21, 0, 9, 21, 0,
417  0, 0, 0, 4, 21, 21, 10, 11, 15
418  } ;
419 
420 static yyconst flex_int16_t yy_def[20] =
421  { 0,
422  16, 1, 16, 17, 17, 16, 18, 19, 16, 17,
423  17, 5, 18, 19, 16, 0, 16, 16, 16
424  } ;
425 
426 static yyconst flex_int16_t yy_nxt[29] =
427  { 0,
428  4, 5, 6, 7, 8, 9, 10, 12, 15, 13,
429  11, 11, 13, 15, 13, 14, 14, 16, 14, 14,
430  3, 16, 16, 16, 16, 16, 16, 16
431  } ;
432 
433 static yyconst flex_int16_t yy_chk[29] =
434  { 0,
435  1, 1, 1, 1, 1, 1, 1, 5, 14, 5,
436  17, 17, 18, 8, 18, 19, 19, 3, 19, 19,
437  16, 16, 16, 16, 16, 16, 16, 16
438  } ;
439 
440 /* The intent behind this definition is that it'll catch
441  * any uses of REJECT which flex missed.
442  */
443 #define REJECT reject_used_but_not_detected
444 #define yymore() yymore_used_but_not_detected
445 #define YY_MORE_ADJ 0
446 #define YY_RESTORE_YY_MORE_OFFSET
447 #line 1 "fts0tlex.l"
448 /*****************************************************************************
449 
450 Copyright (c) 2007, 2011, Oracle and/or its affiliates. All Rights Reserved.
451 
452 This program is free software; you can redistribute it and/or modify it under
453 the terms of the GNU General Public License as published by the Free Software
454 Foundation; version 2 of the License.
455 
456 This program is distributed in the hope that it will be useful, but WITHOUT
457 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
458 FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
459 
460 You should have received a copy of the GNU General Public License along with
461 this program; if not, write to the Free Software Foundation, Inc.,
462 51 Franklin Street, Suite 500, Boston, MA 02110-1335 USA
463 
464 *****************************************************************************/
471 #line 27 "fts0tlex.l"
472 
473 #include "fts0ast.h"
474 #include "fts0pars.h"
475 
476 /* Required for reentrant parser */
477 #define YY_DECL int fts_tlexer(YYSTYPE* val, yyscan_t yyscanner)
478 
479 #define YY_NO_INPUT 1
480 #line 480 "fts0tlex.cc"
481 
482 #define INITIAL 0
483 
484 #ifndef YY_NO_UNISTD_H
485 /* Special case for "unistd.h", since it is non-ANSI. We include it way
486  * down here because we want the user's section 1 to have been scanned first.
487  * The user has a chance to override it with an option.
488  */
489 #include <unistd.h>
490 #endif
491 
492 #ifndef YY_EXTRA_TYPE
493 #define YY_EXTRA_TYPE void *
494 #endif
495 
496 /* Holds the entire state of the reentrant scanner. */
497 struct yyguts_t
498  {
499 
500  /* User-defined. Not touched by flex. */
501  YY_EXTRA_TYPE yyextra_r;
502 
503  /* The rest are the same as the globals declared in the non-reentrant scanner. */
504  FILE *yyin_r, *yyout_r;
505  size_t yy_buffer_stack_top;
506  size_t yy_buffer_stack_max;
507  YY_BUFFER_STATE * yy_buffer_stack;
508  char yy_hold_char;
509  int yy_n_chars;
510  int yyleng_r;
511  char *yy_c_buf_p;
512  int yy_init;
513  int yy_start;
514  int yy_did_buffer_switch_on_eof;
515  int yy_start_stack_ptr;
516  int yy_start_stack_depth;
517  int *yy_start_stack;
518  yy_state_type yy_last_accepting_state;
519  char* yy_last_accepting_cpos;
520 
521  int yylineno_r;
522  int yy_flex_debug_r;
523 
524  char *yytext_r;
525  int yy_more_flag;
526  int yy_more_len;
527 
528  }; /* end struct yyguts_t */
529 
530 static int yy_init_globals (yyscan_t yyscanner );
531 
532 int fts0tlex_init (yyscan_t* scanner);
533 
534 int fts0tlex_init_extra (YY_EXTRA_TYPE user_defined,yyscan_t* scanner);
535 
536 /* Accessor methods to globals.
537  These are made visible to non-reentrant scanners for convenience. */
538 
539 int fts0tlex_destroy (yyscan_t yyscanner );
540 
541 int fts0tget_debug (yyscan_t yyscanner );
542 
543 void fts0tset_debug (int debug_flag ,yyscan_t yyscanner );
544 
545 YY_EXTRA_TYPE fts0tget_extra (yyscan_t yyscanner );
546 
547 void fts0tset_extra (YY_EXTRA_TYPE user_defined ,yyscan_t yyscanner );
548 
549 FILE *fts0tget_in (yyscan_t yyscanner );
550 
551 void fts0tset_in (FILE * in_str ,yyscan_t yyscanner );
552 
553 FILE *fts0tget_out (yyscan_t yyscanner );
554 
555 void fts0tset_out (FILE * out_str ,yyscan_t yyscanner );
556 
557 int fts0tget_leng (yyscan_t yyscanner );
558 
559 char *fts0tget_text (yyscan_t yyscanner );
560 
561 int fts0tget_lineno (yyscan_t yyscanner );
562 
563 void fts0tset_lineno (int line_number ,yyscan_t yyscanner );
564 
565 /* Macros after this point can all be overridden by user definitions in
566  * section 1.
567  */
568 
569 #ifndef YY_SKIP_YYWRAP
570 #ifdef __cplusplus
571 extern "C" int fts0twrap (yyscan_t yyscanner );
572 #else
573 extern int fts0twrap (yyscan_t yyscanner );
574 #endif
575 #endif
576 
577 #ifndef yytext_ptr
578 static void yy_flex_strncpy (char *,yyconst char *,int , yyscan_t yyscanner __attribute__((unused)) __attribute__((unused)) __attribute__((unused)) __attribute__((unused)) __attribute__((unused)) __attribute__((unused)));
579 #endif
580 
581 #ifdef YY_NEED_STRLEN
582 static int yy_flex_strlen (yyconst char * , yyscan_t yyscanner __attribute__((unused)) __attribute__((unused)) __attribute__((unused)) __attribute__((unused)) __attribute__((unused)) __attribute__((unused)));
583 #endif
584 
585 #ifndef YY_NO_INPUT
586 
587 #ifdef __cplusplus
588 static int yyinput (yyscan_t yyscanner );
589 #else
590 static int input (yyscan_t yyscanner );
591 #endif
592 
593 #endif
594 
595 /* Amount of stuff to slurp up with each read. */
596 #ifndef YY_READ_BUF_SIZE
597 #ifdef __ia64__
598 /* On IA-64, the buffer size is 16k, not 8k */
599 #define YY_READ_BUF_SIZE 16384
600 #else
601 #define YY_READ_BUF_SIZE 8192
602 #endif /* __ia64__ */
603 #endif
604 
605 /* Copy whatever the last rule matched to the standard output. */
606 #ifndef ECHO
607 /* This used to be an fputs(), but since the string might contain NUL's,
608  * we now use fwrite().
609  */
610 #define ECHO do { if (fwrite( yytext, yyleng, 1, yyout )) {} } while (0)
611 #endif
612 
613 /* Gets input and stuffs it into "buf". number of characters read, or YY_NULL,
614  * is returned in "result".
615  */
616 #ifndef YY_INPUT
617 #define YY_INPUT(buf,result,max_size) \
618  if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \
619  { \
620  int c = '*'; \
621  size_t n; \
622  for ( n = 0; n < max_size && \
623  (c = getc( yyin )) != EOF && c != '\n'; ++n ) \
624  buf[n] = (char) c; \
625  if ( c == '\n' ) \
626  buf[n++] = (char) c; \
627  if ( c == EOF && ferror( yyin ) ) \
628  YY_FATAL_ERROR( "input in flex scanner failed" ); \
629  result = n; \
630  } \
631  else \
632  { \
633  errno=0; \
634  while ( (result = fread(buf, 1, max_size, yyin))==0 && ferror(yyin)) \
635  { \
636  if( errno != EINTR) \
637  { \
638  YY_FATAL_ERROR( "input in flex scanner failed" ); \
639  break; \
640  } \
641  errno=0; \
642  clearerr(yyin); \
643  } \
644  }\
645 \
646 
647 #endif
648 
649 /* No semi-colon after return; correct usage is to write "yyterminate();" -
650  * we don't want an extra ';' after the "return" because that will cause
651  * some compilers to complain about unreachable statements.
652  */
653 #ifndef yyterminate
654 #define yyterminate() return YY_NULL
655 #endif
656 
657 /* Number of entries by which start-condition stack grows. */
658 #ifndef YY_START_STACK_INCR
659 #define YY_START_STACK_INCR 25
660 #endif
661 
662 /* Report a fatal error. */
663 #ifndef YY_FATAL_ERROR
664 #define YY_FATAL_ERROR(msg) yy_fatal_error( msg , yyscanner)
665 #endif
666 
667 /* end tables serialization structures and prototypes */
668 
669 /* Default declaration of generated scanner - a define so the user can
670  * easily add parameters.
671  */
672 #ifndef YY_DECL
673 #define YY_DECL_IS_OURS 1
674 
675 extern int fts0tlex (yyscan_t yyscanner);
676 
677 #define YY_DECL int fts0tlex (yyscan_t yyscanner)
678 #endif /* !YY_DECL */
679 
680 /* Code executed at the beginning of each rule, after yytext and yyleng
681  * have been set up.
682  */
683 #ifndef YY_USER_ACTION
684 #define YY_USER_ACTION
685 #endif
686 
687 /* Code executed at the end of each rule. */
688 #ifndef YY_BREAK
689 #define YY_BREAK break;
690 #endif
691 
692 #define YY_RULE_SETUP \
693  YY_USER_ACTION
694 
697 YY_DECL
698 {
699  register yy_state_type yy_current_state;
700  register char *yy_cp, *yy_bp;
701  register int yy_act;
702  struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
703 
704 #line 44 "fts0tlex.l"
705 
706 
707 #line 707 "fts0tlex.cc"
708 
709  if ( !yyg->yy_init )
710  {
711  yyg->yy_init = 1;
712 
713 #ifdef YY_USER_INIT
714  YY_USER_INIT;
715 #endif
716 
717  if ( ! yyg->yy_start )
718  yyg->yy_start = 1; /* first start state */
719 
720  if ( ! yyin )
721  yyin = stdin;
722 
723  if ( ! yyout )
724  yyout = stdout;
725 
726  if ( ! YY_CURRENT_BUFFER ) {
727  fts0tensure_buffer_stack (yyscanner);
728  YY_CURRENT_BUFFER_LVALUE =
729  fts0t_create_buffer(yyin,YY_BUF_SIZE ,yyscanner);
730  }
731 
732  fts0t_load_buffer_state(yyscanner );
733  }
734 
735  while ( 1 ) /* loops until end-of-file is reached */
736  {
737  yy_cp = yyg->yy_c_buf_p;
738 
739  /* Support of yytext. */
740  *yy_cp = yyg->yy_hold_char;
741 
742  /* yy_bp points to the position in yy_ch_buf of the start of
743  * the current run.
744  */
745  yy_bp = yy_cp;
746 
747  yy_current_state = yyg->yy_start;
748 yy_match:
749  do
750  {
751  register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)];
752  if ( yy_accept[yy_current_state] )
753  {
754  yyg->yy_last_accepting_state = yy_current_state;
755  yyg->yy_last_accepting_cpos = yy_cp;
756  }
757  while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
758  {
759  yy_current_state = (int) yy_def[yy_current_state];
760  if ( yy_current_state >= 17 )
761  yy_c = yy_meta[(unsigned int) yy_c];
762  }
763  yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
764  ++yy_cp;
765  }
766  while ( yy_current_state != 16 );
767  yy_cp = yyg->yy_last_accepting_cpos;
768  yy_current_state = yyg->yy_last_accepting_state;
769 
770 yy_find_action:
771  yy_act = yy_accept[yy_current_state];
772 
773  YY_DO_BEFORE_ACTION;
774 
775 do_action: /* This label is used only to access EOF actions. */
776 
777  switch ( yy_act )
778  { /* beginning of action switch */
779  case 0: /* must back up */
780  /* undo the effects of YY_DO_BEFORE_ACTION */
781  *yy_cp = yyg->yy_hold_char;
782  yy_cp = yyg->yy_last_accepting_cpos;
783  yy_current_state = yyg->yy_last_accepting_state;
784  goto yy_find_action;
785 
786 case 1:
787 YY_RULE_SETUP
788 #line 46 "fts0tlex.l"
789 /* Ignore whitespace */ ;
790  YY_BREAK
791 case 2:
792 YY_RULE_SETUP
793 #line 48 "fts0tlex.l"
794 {
795  val->oper = fts0tget_text(yyscanner)[0];
796 
797  return(val->oper);
798 }
799  YY_BREAK
800 case 3:
801 YY_RULE_SETUP
802 #line 54 "fts0tlex.l"
803 {
804  val->token = strdup(fts0tget_text(yyscanner));
805 
806  return(FTS_TEXT);
807 }
808  YY_BREAK
809 case 4:
810 YY_RULE_SETUP
811 #line 60 "fts0tlex.l"
812 {
813  val->token = strdup(fts0tget_text(yyscanner));
814 
815  return(FTS_TERM);
816 }
817  YY_BREAK
818 case 5:
819 YY_RULE_SETUP
820 #line 65 "fts0tlex.l"
821 ;
822  YY_BREAK
823 case 6:
824 /* rule 6 can match eol */
825 YY_RULE_SETUP
826 #line 66 "fts0tlex.l"
827 
828  YY_BREAK
829 case 7:
830 YY_RULE_SETUP
831 #line 68 "fts0tlex.l"
832 ECHO;
833  YY_BREAK
834 #line 834 "fts0tlex.cc"
835 case YY_STATE_EOF(INITIAL):
836  yyterminate();
837 
838  case YY_END_OF_BUFFER:
839  {
840  /* Amount of text matched not including the EOB char. */
841  int yy_amount_of_matched_text = (int) (yy_cp - yyg->yytext_ptr) - 1;
842 
843  /* Undo the effects of YY_DO_BEFORE_ACTION. */
844  *yy_cp = yyg->yy_hold_char;
845  YY_RESTORE_YY_MORE_OFFSET
846 
847  if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW )
848  {
849  /* We're scanning a new file or input source. It's
850  * possible that this happened because the user
851  * just pointed yyin at a new source and called
852  * fts0tlex(). If so, then we have to assure
853  * consistency between YY_CURRENT_BUFFER and our
854  * globals. Here is the right place to do so, because
855  * this is the first action (other than possibly a
856  * back-up) that will match for the new input source.
857  */
858  yyg->yy_n_chars = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
859  YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin;
860  YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL;
861  }
862 
863  /* Note that here we test for yy_c_buf_p "<=" to the position
864  * of the first EOB in the buffer, since yy_c_buf_p will
865  * already have been incremented past the NUL character
866  * (since all states make transitions on EOB to the
867  * end-of-buffer state). Contrast this with the test
868  * in input().
869  */
870  if ( yyg->yy_c_buf_p <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] )
871  { /* This was really a NUL. */
872  yy_state_type yy_next_state;
873 
874  yyg->yy_c_buf_p = yyg->yytext_ptr + yy_amount_of_matched_text;
875 
876  yy_current_state = yy_get_previous_state( yyscanner );
877 
878  /* Okay, we're now positioned to make the NUL
879  * transition. We couldn't have
880  * yy_get_previous_state() go ahead and do it
881  * for us because it doesn't know how to deal
882  * with the possibility of jamming (and we don't
883  * want to build jamming into it because then it
884  * will run more slowly).
885  */
886 
887  yy_next_state = yy_try_NUL_trans( yy_current_state , yyscanner);
888 
889  yy_bp = yyg->yytext_ptr + YY_MORE_ADJ;
890 
891  if ( yy_next_state )
892  {
893  /* Consume the NUL. */
894  yy_cp = ++yyg->yy_c_buf_p;
895  yy_current_state = yy_next_state;
896  goto yy_match;
897  }
898 
899  else
900  {
901  yy_cp = yyg->yy_last_accepting_cpos;
902  yy_current_state = yyg->yy_last_accepting_state;
903  goto yy_find_action;
904  }
905  }
906 
907  else switch ( yy_get_next_buffer( yyscanner ) )
908  {
909  case EOB_ACT_END_OF_FILE:
910  {
911  yyg->yy_did_buffer_switch_on_eof = 0;
912 
913  if ( fts0twrap(yyscanner ) )
914  {
915  /* Note: because we've taken care in
916  * yy_get_next_buffer() to have set up
917  * yytext, we can now set up
918  * yy_c_buf_p so that if some total
919  * hoser (like flex itself) wants to
920  * call the scanner after we return the
921  * YY_NULL, it'll still work - another
922  * YY_NULL will get returned.
923  */
924  yyg->yy_c_buf_p = yyg->yytext_ptr + YY_MORE_ADJ;
925 
926  yy_act = YY_STATE_EOF(YY_START);
927  goto do_action;
928  }
929 
930  else
931  {
932  if ( ! yyg->yy_did_buffer_switch_on_eof )
933  YY_NEW_FILE;
934  }
935  break;
936  }
937 
938  case EOB_ACT_CONTINUE_SCAN:
939  yyg->yy_c_buf_p =
940  yyg->yytext_ptr + yy_amount_of_matched_text;
941 
942  yy_current_state = yy_get_previous_state( yyscanner );
943 
944  yy_cp = yyg->yy_c_buf_p;
945  yy_bp = yyg->yytext_ptr + YY_MORE_ADJ;
946  goto yy_match;
947 
948  case EOB_ACT_LAST_MATCH:
949  yyg->yy_c_buf_p =
950  &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars];
951 
952  yy_current_state = yy_get_previous_state( yyscanner );
953 
954  yy_cp = yyg->yy_c_buf_p;
955  yy_bp = yyg->yytext_ptr + YY_MORE_ADJ;
956  goto yy_find_action;
957  }
958  break;
959  }
960 
961  default:
962  YY_FATAL_ERROR(
963  "fatal flex scanner internal error--no action found" );
964  } /* end of action switch */
965  } /* end of scanning one token */
966 } /* end of fts0tlex */
967 
968 /* yy_get_next_buffer - try to read in a new buffer
969  *
970  * Returns a code representing an action:
971  * EOB_ACT_LAST_MATCH -
972  * EOB_ACT_CONTINUE_SCAN - continue scanning from current position
973  * EOB_ACT_END_OF_FILE - end of file
974  */
975 static int yy_get_next_buffer (yyscan_t yyscanner)
976 {
977  struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
978  register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;
979  register char *source = yyg->yytext_ptr;
980  register int number_to_move, i;
981  int ret_val;
982 
983  if ( yyg->yy_c_buf_p > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars + 1] )
984  YY_FATAL_ERROR(
985  "fatal flex scanner internal error--end of buffer missed" );
986 
987  if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 )
988  { /* Don't try to fill the buffer, so this is an EOF. */
989  if ( yyg->yy_c_buf_p - yyg->yytext_ptr - YY_MORE_ADJ == 1 )
990  {
991  /* We matched a single character, the EOB, so
992  * treat this as a final EOF.
993  */
994  return EOB_ACT_END_OF_FILE;
995  }
996 
997  else
998  {
999  /* We matched some text prior to the EOB, first
1000  * process it.
1001  */
1002  return EOB_ACT_LAST_MATCH;
1003  }
1004  }
1005 
1006  /* Try to read more data. */
1007 
1008  /* First move last chars to start of buffer. */
1009  number_to_move = (int) (yyg->yy_c_buf_p - yyg->yytext_ptr) - 1;
1010 
1011  for ( i = 0; i < number_to_move; ++i )
1012  *(dest++) = *(source++);
1013 
1014  if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING )
1015  /* don't do the read, it's not guaranteed to return an EOF,
1016  * just force an EOF
1017  */
1018  YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars = 0;
1019 
1020  else
1021  {
1022  int num_to_read =
1023  YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;
1024 
1025  while ( num_to_read <= 0 )
1026  { /* Not enough room in the buffer - grow it. */
1027 
1028  /* just a shorter name for the current buffer */
1029  YY_BUFFER_STATE b = YY_CURRENT_BUFFER;
1030 
1031  int yy_c_buf_p_offset =
1032  (int) (yyg->yy_c_buf_p - b->yy_ch_buf);
1033 
1034  if ( b->yy_is_our_buffer )
1035  {
1036  int new_size = b->yy_buf_size * 2;
1037 
1038  if ( new_size <= 0 )
1039  b->yy_buf_size += b->yy_buf_size / 8;
1040  else
1041  b->yy_buf_size *= 2;
1042 
1043  b->yy_ch_buf = (char *)
1044  /* Include room in for 2 EOB chars. */
1045  fts0trealloc((void *) b->yy_ch_buf,b->yy_buf_size + 2 ,yyscanner );
1046  }
1047  else
1048  /* Can't grow it, we don't own it. */
1049  b->yy_ch_buf = 0;
1050 
1051  if ( ! b->yy_ch_buf )
1052  YY_FATAL_ERROR(
1053  "fatal error - scanner input buffer overflow" );
1054 
1055  yyg->yy_c_buf_p = &b->yy_ch_buf[yy_c_buf_p_offset];
1056 
1057  num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size -
1058  number_to_move - 1;
1059 
1060  }
1061 
1062  if ( num_to_read > YY_READ_BUF_SIZE )
1063  num_to_read = YY_READ_BUF_SIZE;
1064 
1065  /* Read in more data. */
1066  YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]),
1067  yyg->yy_n_chars, (size_t) num_to_read );
1068 
1069  YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars;
1070  }
1071 
1072  if ( yyg->yy_n_chars == 0 )
1073  {
1074  if ( number_to_move == YY_MORE_ADJ )
1075  {
1076  ret_val = EOB_ACT_END_OF_FILE;
1077  fts0trestart(yyin ,yyscanner);
1078  }
1079 
1080  else
1081  {
1082  ret_val = EOB_ACT_LAST_MATCH;
1083  YY_CURRENT_BUFFER_LVALUE->yy_buffer_status =
1084  YY_BUFFER_EOF_PENDING;
1085  }
1086  }
1087 
1088  else
1089  ret_val = EOB_ACT_CONTINUE_SCAN;
1090 
1091  if ((yy_size_t) (yyg->yy_n_chars + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) {
1092  /* Extend the array by 50%, plus the number we really need. */
1093  yy_size_t new_size = yyg->yy_n_chars + number_to_move + (yyg->yy_n_chars >> 1);
1094  YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) fts0trealloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,new_size ,yyscanner );
1095  if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
1096  YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" );
1097  }
1098 
1099  yyg->yy_n_chars += number_to_move;
1100  YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] = YY_END_OF_BUFFER_CHAR;
1101  YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars + 1] = YY_END_OF_BUFFER_CHAR;
1102 
1103  yyg->yytext_ptr = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0];
1104 
1105  return ret_val;
1106 }
1107 
1108 /* yy_get_previous_state - get the state just before the EOB char was reached */
1109 
1110  static yy_state_type yy_get_previous_state (yyscan_t yyscanner)
1111 {
1112  register yy_state_type yy_current_state;
1113  register char *yy_cp;
1114  struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
1115 
1116  yy_current_state = yyg->yy_start;
1117 
1118  for ( yy_cp = yyg->yytext_ptr + YY_MORE_ADJ; yy_cp < yyg->yy_c_buf_p; ++yy_cp )
1119  {
1120  register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
1121  if ( yy_accept[yy_current_state] )
1122  {
1123  yyg->yy_last_accepting_state = yy_current_state;
1124  yyg->yy_last_accepting_cpos = yy_cp;
1125  }
1126  while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
1127  {
1128  yy_current_state = (int) yy_def[yy_current_state];
1129  if ( yy_current_state >= 17 )
1130  yy_c = yy_meta[(unsigned int) yy_c];
1131  }
1132  yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
1133  }
1134 
1135  return yy_current_state;
1136 }
1137 
1138 /* yy_try_NUL_trans - try to make a transition on the NUL character
1139  *
1140  * synopsis
1141  * next_state = yy_try_NUL_trans( current_state );
1142  */
1143  static yy_state_type yy_try_NUL_trans (yy_state_type yy_current_state , yyscan_t yyscanner)
1144 {
1145  register int yy_is_jam;
1146  struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; /* This var may be unused depending upon options. */
1147  register char *yy_cp = yyg->yy_c_buf_p;
1148 
1149  register YY_CHAR yy_c = 1;
1150  if ( yy_accept[yy_current_state] )
1151  {
1152  yyg->yy_last_accepting_state = yy_current_state;
1153  yyg->yy_last_accepting_cpos = yy_cp;
1154  }
1155  while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
1156  {
1157  yy_current_state = (int) yy_def[yy_current_state];
1158  if ( yy_current_state >= 17 )
1159  yy_c = yy_meta[(unsigned int) yy_c];
1160  }
1161  yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
1162  yy_is_jam = (yy_current_state == 16);
1163 
1164  return yy_is_jam ? 0 : yy_current_state;
1165 }
1166 
1167 #ifndef YY_NO_INPUT
1168 #ifdef __cplusplus
1169  static int yyinput (yyscan_t yyscanner)
1170 #else
1171  static int input (yyscan_t yyscanner)
1172 #endif
1173 
1174 {
1175  int c;
1176  struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
1177 
1178  *yyg->yy_c_buf_p = yyg->yy_hold_char;
1179 
1180  if ( *yyg->yy_c_buf_p == YY_END_OF_BUFFER_CHAR )
1181  {
1182  /* yy_c_buf_p now points to the character we want to return.
1183  * If this occurs *before* the EOB characters, then it's a
1184  * valid NUL; if not, then we've hit the end of the buffer.
1185  */
1186  if ( yyg->yy_c_buf_p < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] )
1187  /* This was really a NUL. */
1188  *yyg->yy_c_buf_p = '\0';
1189 
1190  else
1191  { /* need more input */
1192  int offset = yyg->yy_c_buf_p - yyg->yytext_ptr;
1193  ++yyg->yy_c_buf_p;
1194 
1195  switch ( yy_get_next_buffer( yyscanner ) )
1196  {
1197  case EOB_ACT_LAST_MATCH:
1198  /* This happens because yy_g_n_b()
1199  * sees that we've accumulated a
1200  * token and flags that we need to
1201  * try matching the token before
1202  * proceeding. But for input(),
1203  * there's no matching to consider.
1204  * So convert the EOB_ACT_LAST_MATCH
1205  * to EOB_ACT_END_OF_FILE.
1206  */
1207 
1208  /* Reset buffer status. */
1209  fts0trestart(yyin ,yyscanner);
1210 
1211  /*FALLTHROUGH*/
1212 
1213  case EOB_ACT_END_OF_FILE:
1214  {
1215  if ( fts0twrap(yyscanner ) )
1216  return EOF;
1217 
1218  if ( ! yyg->yy_did_buffer_switch_on_eof )
1219  YY_NEW_FILE;
1220 #ifdef __cplusplus
1221  return yyinput(yyscanner);
1222 #else
1223  return input(yyscanner);
1224 #endif
1225  }
1226 
1227  case EOB_ACT_CONTINUE_SCAN:
1228  yyg->yy_c_buf_p = yyg->yytext_ptr + offset;
1229  break;
1230  }
1231  }
1232  }
1233 
1234  c = *(unsigned char *) yyg->yy_c_buf_p; /* cast for 8-bit char's */
1235  *yyg->yy_c_buf_p = '\0'; /* preserve yytext */
1236  yyg->yy_hold_char = *++yyg->yy_c_buf_p;
1237 
1238  return c;
1239 }
1240 #endif /* ifndef YY_NO_INPUT */
1241 
1247  void fts0trestart (FILE * input_file , yyscan_t yyscanner)
1248 {
1249  struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
1250 
1251  if ( ! YY_CURRENT_BUFFER ){
1252  fts0tensure_buffer_stack (yyscanner);
1253  YY_CURRENT_BUFFER_LVALUE =
1254  fts0t_create_buffer(yyin,YY_BUF_SIZE ,yyscanner);
1255  }
1256 
1257  fts0t_init_buffer(YY_CURRENT_BUFFER,input_file ,yyscanner);
1258  fts0t_load_buffer_state(yyscanner );
1259 }
1260 
1265  void fts0t_switch_to_buffer (YY_BUFFER_STATE new_buffer , yyscan_t yyscanner)
1266 {
1267  struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
1268 
1269  /* TODO. We should be able to replace this entire function body
1270  * with
1271  * fts0tpop_buffer_state();
1272  * fts0tpush_buffer_state(new_buffer);
1273  */
1274  fts0tensure_buffer_stack (yyscanner);
1275  if ( YY_CURRENT_BUFFER == new_buffer )
1276  return;
1277 
1278  if ( YY_CURRENT_BUFFER )
1279  {
1280  /* Flush out information for old buffer. */
1281  *yyg->yy_c_buf_p = yyg->yy_hold_char;
1282  YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = yyg->yy_c_buf_p;
1283  YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars;
1284  }
1285 
1286  YY_CURRENT_BUFFER_LVALUE = new_buffer;
1287  fts0t_load_buffer_state(yyscanner );
1288 
1289  /* We don't actually know whether we did this switch during
1290  * EOF (fts0twrap()) processing, but the only time this flag
1291  * is looked at is after fts0twrap() is called, so it's safe
1292  * to go ahead and always set it.
1293  */
1294  yyg->yy_did_buffer_switch_on_eof = 1;
1295 }
1296 
1297 static void fts0t_load_buffer_state (yyscan_t yyscanner)
1298 {
1299  struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
1300  yyg->yy_n_chars = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
1301  yyg->yytext_ptr = yyg->yy_c_buf_p = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos;
1302  yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file;
1303  yyg->yy_hold_char = *yyg->yy_c_buf_p;
1304 }
1305 
1312  YY_BUFFER_STATE fts0t_create_buffer (FILE * file, int size , yyscan_t yyscanner)
1313 {
1314  YY_BUFFER_STATE b;
1315 
1316  b = (YY_BUFFER_STATE) fts0talloc(sizeof( struct yy_buffer_state ) ,yyscanner );
1317  if ( ! b )
1318  YY_FATAL_ERROR( "out of dynamic memory in fts0t_create_buffer()" );
1319 
1320  b->yy_buf_size = size;
1321 
1322  /* yy_ch_buf has to be 2 characters longer than the size given because
1323  * we need to put in 2 end-of-buffer characters.
1324  */
1325  b->yy_ch_buf = (char *) fts0talloc(b->yy_buf_size + 2 ,yyscanner );
1326  if ( ! b->yy_ch_buf )
1327  YY_FATAL_ERROR( "out of dynamic memory in fts0t_create_buffer()" );
1328 
1329  b->yy_is_our_buffer = 1;
1330 
1331  fts0t_init_buffer(b,file ,yyscanner);
1332 
1333  return b;
1334 }
1335 
1340  void fts0t_delete_buffer (YY_BUFFER_STATE b , yyscan_t yyscanner)
1341 {
1342  struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
1343 
1344  if ( ! b )
1345  return;
1346 
1347  if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */
1348  YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0;
1349 
1350  if ( b->yy_is_our_buffer )
1351  fts0tfree((void *) b->yy_ch_buf ,yyscanner );
1352 
1353  fts0tfree((void *) b ,yyscanner );
1354 }
1355 
1356 /* Initializes or reinitializes a buffer.
1357  * This function is sometimes called more than once on the same buffer,
1358  * such as during a fts0trestart() or at EOF.
1359  */
1360  static void fts0t_init_buffer (YY_BUFFER_STATE b, FILE * file , yyscan_t yyscanner)
1361 
1362 {
1363  int oerrno = errno;
1364  struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
1365 
1366  fts0t_flush_buffer(b ,yyscanner);
1367 
1368  b->yy_input_file = file;
1369  b->yy_fill_buffer = 1;
1370 
1371  /* If b is the current buffer, then fts0t_init_buffer was _probably_
1372  * called from fts0trestart() or through yy_get_next_buffer.
1373  * In that case, we don't want to reset the lineno or column.
1374  */
1375  if (b != YY_CURRENT_BUFFER){
1376  b->yy_bs_lineno = 1;
1377  b->yy_bs_column = 0;
1378  }
1379 
1380  b->yy_is_interactive = 0;
1381 
1382  errno = oerrno;
1383 }
1384 
1389  void fts0t_flush_buffer (YY_BUFFER_STATE b , yyscan_t yyscanner)
1390 {
1391  struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
1392  if ( ! b )
1393  return;
1394 
1395  b->yy_n_chars = 0;
1396 
1397  /* We always need two end-of-buffer characters. The first causes
1398  * a transition to the end-of-buffer state. The second causes
1399  * a jam in that state.
1400  */
1401  b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;
1402  b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;
1403 
1404  b->yy_buf_pos = &b->yy_ch_buf[0];
1405 
1406  b->yy_at_bol = 1;
1407  b->yy_buffer_status = YY_BUFFER_NEW;
1408 
1409  if ( b == YY_CURRENT_BUFFER )
1410  fts0t_load_buffer_state(yyscanner );
1411 }
1412 
1419 void fts0tpush_buffer_state (YY_BUFFER_STATE new_buffer , yyscan_t yyscanner)
1420 {
1421  struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
1422  if (new_buffer == NULL)
1423  return;
1424 
1425  fts0tensure_buffer_stack(yyscanner);
1426 
1427  /* This block is copied from fts0t_switch_to_buffer. */
1428  if ( YY_CURRENT_BUFFER )
1429  {
1430  /* Flush out information for old buffer. */
1431  *yyg->yy_c_buf_p = yyg->yy_hold_char;
1432  YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = yyg->yy_c_buf_p;
1433  YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars;
1434  }
1435 
1436  /* Only push if top exists. Otherwise, replace top. */
1437  if (YY_CURRENT_BUFFER)
1438  yyg->yy_buffer_stack_top++;
1439  YY_CURRENT_BUFFER_LVALUE = new_buffer;
1440 
1441  /* copied from fts0t_switch_to_buffer. */
1442  fts0t_load_buffer_state(yyscanner );
1443  yyg->yy_did_buffer_switch_on_eof = 1;
1444 }
1445 
1450 void fts0tpop_buffer_state (yyscan_t yyscanner)
1451 {
1452  struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
1453  if (!YY_CURRENT_BUFFER)
1454  return;
1455 
1456  fts0t_delete_buffer(YY_CURRENT_BUFFER ,yyscanner);
1457  YY_CURRENT_BUFFER_LVALUE = NULL;
1458  if (yyg->yy_buffer_stack_top > 0)
1459  --yyg->yy_buffer_stack_top;
1460 
1461  if (YY_CURRENT_BUFFER) {
1462  fts0t_load_buffer_state(yyscanner );
1463  yyg->yy_did_buffer_switch_on_eof = 1;
1464  }
1465 }
1466 
1467 /* Allocates the stack if it does not exist.
1468  * Guarantees space for at least one push.
1469  */
1470 static void fts0tensure_buffer_stack (yyscan_t yyscanner)
1471 {
1472  int num_to_alloc;
1473  struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
1474 
1475  if (!yyg->yy_buffer_stack) {
1476 
1477  /* First allocation is just for 2 elements, since we don't know if this
1478  * scanner will even need a stack. We use 2 instead of 1 to avoid an
1479  * immediate realloc on the next call.
1480  */
1481  num_to_alloc = 1;
1482  yyg->yy_buffer_stack = (struct yy_buffer_state**)fts0talloc
1483  (num_to_alloc * sizeof(struct yy_buffer_state*)
1484  , yyscanner);
1485  if ( ! yyg->yy_buffer_stack )
1486  YY_FATAL_ERROR( "out of dynamic memory in fts0tensure_buffer_stack()" );
1487 
1488  memset(yyg->yy_buffer_stack, 0, num_to_alloc * sizeof(struct yy_buffer_state*));
1489 
1490  yyg->yy_buffer_stack_max = num_to_alloc;
1491  yyg->yy_buffer_stack_top = 0;
1492  return;
1493  }
1494 
1495  if (yyg->yy_buffer_stack_top >= (yyg->yy_buffer_stack_max) - 1){
1496 
1497  /* Increase the buffer to prepare for a possible push. */
1498  int grow_size = 8 /* arbitrary grow size */;
1499 
1500  num_to_alloc = yyg->yy_buffer_stack_max + grow_size;
1501  yyg->yy_buffer_stack = (struct yy_buffer_state**)fts0trealloc
1502  (yyg->yy_buffer_stack,
1503  num_to_alloc * sizeof(struct yy_buffer_state*)
1504  , yyscanner);
1505  if ( ! yyg->yy_buffer_stack )
1506  YY_FATAL_ERROR( "out of dynamic memory in fts0tensure_buffer_stack()" );
1507 
1508  /* zero only the new slots.*/
1509  memset(yyg->yy_buffer_stack + yyg->yy_buffer_stack_max, 0, grow_size * sizeof(struct yy_buffer_state*));
1510  yyg->yy_buffer_stack_max = num_to_alloc;
1511  }
1512 }
1513 
1520 YY_BUFFER_STATE fts0t_scan_buffer (char * base, yy_size_t size , yyscan_t yyscanner)
1521 {
1522  YY_BUFFER_STATE b;
1523 
1524  if ( size < 2 ||
1525  base[size-2] != YY_END_OF_BUFFER_CHAR ||
1526  base[size-1] != YY_END_OF_BUFFER_CHAR )
1527  /* They forgot to leave room for the EOB's. */
1528  return 0;
1529 
1530  b = (YY_BUFFER_STATE) fts0talloc(sizeof( struct yy_buffer_state ) ,yyscanner );
1531  if ( ! b )
1532  YY_FATAL_ERROR( "out of dynamic memory in fts0t_scan_buffer()" );
1533 
1534  b->yy_buf_size = size - 2; /* "- 2" to take care of EOB's */
1535  b->yy_buf_pos = b->yy_ch_buf = base;
1536  b->yy_is_our_buffer = 0;
1537  b->yy_input_file = 0;
1538  b->yy_n_chars = b->yy_buf_size;
1539  b->yy_is_interactive = 0;
1540  b->yy_at_bol = 1;
1541  b->yy_fill_buffer = 0;
1542  b->yy_buffer_status = YY_BUFFER_NEW;
1543 
1544  fts0t_switch_to_buffer(b ,yyscanner );
1545 
1546  return b;
1547 }
1548 
1557 YY_BUFFER_STATE fts0t_scan_string (yyconst char * yystr , yyscan_t yyscanner)
1558 {
1559 
1560  return fts0t_scan_bytes(yystr,strlen(yystr) ,yyscanner);
1561 }
1562 
1570 YY_BUFFER_STATE fts0t_scan_bytes (yyconst char * yybytes, int _yybytes_len , yyscan_t yyscanner)
1571 {
1572  YY_BUFFER_STATE b;
1573  char *buf;
1574  yy_size_t n;
1575  int i;
1576 
1577  /* Get memory for full buffer, including space for trailing EOB's. */
1578  n = _yybytes_len + 2;
1579  buf = (char *) fts0talloc(n ,yyscanner );
1580  if ( ! buf )
1581  YY_FATAL_ERROR( "out of dynamic memory in fts0t_scan_bytes()" );
1582 
1583  for ( i = 0; i < _yybytes_len; ++i )
1584  buf[i] = yybytes[i];
1585 
1586  buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR;
1587 
1588  b = fts0t_scan_buffer(buf,n ,yyscanner);
1589  if ( ! b )
1590  YY_FATAL_ERROR( "bad buffer in fts0t_scan_bytes()" );
1591 
1592  /* It's okay to grow etc. this buffer, and we should throw it
1593  * away when we're done.
1594  */
1595  b->yy_is_our_buffer = 1;
1596 
1597  return b;
1598 }
1599 
1600 #ifndef YY_EXIT_FAILURE
1601 #define YY_EXIT_FAILURE 2
1602 #endif
1603 
1604 static void yy_fatal_error (yyconst char* msg , yyscan_t yyscanner __attribute__((unused)) __attribute__((unused)) __attribute__((unused)) __attribute__((unused)) __attribute__((unused)) __attribute__((unused)))
1605 {
1606  (void) fprintf( stderr, "%s\n", msg );
1607  exit( YY_EXIT_FAILURE );
1608 }
1609 
1610 /* Redefine yyless() so it works in section 3 code. */
1611 
1612 #undef yyless
1613 #define yyless(n) \
1614  do \
1615  { \
1616  /* Undo effects of setting up yytext. */ \
1617  int yyless_macro_arg = (n); \
1618  YY_LESS_LINENO(yyless_macro_arg);\
1619  yytext[yyleng] = yyg->yy_hold_char; \
1620  yyg->yy_c_buf_p = yytext + yyless_macro_arg; \
1621  yyg->yy_hold_char = *yyg->yy_c_buf_p; \
1622  *yyg->yy_c_buf_p = '\0'; \
1623  yyleng = yyless_macro_arg; \
1624  } \
1625  while ( 0 )
1626 
1627 /* Accessor methods (get/set functions) to struct members. */
1628 
1632 YY_EXTRA_TYPE fts0tget_extra (yyscan_t yyscanner)
1633 {
1634  struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
1635  return yyextra;
1636 }
1637 
1641 int fts0tget_lineno (yyscan_t yyscanner)
1642 {
1643  struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
1644 
1645  if (! YY_CURRENT_BUFFER)
1646  return 0;
1647 
1648  return yylineno;
1649 }
1650 
1654 int fts0tget_column (yyscan_t yyscanner)
1655 {
1656  struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
1657 
1658  if (! YY_CURRENT_BUFFER)
1659  return 0;
1660 
1661  return yycolumn;
1662 }
1663 
1667 FILE *fts0tget_in (yyscan_t yyscanner)
1668 {
1669  struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
1670  return yyin;
1671 }
1672 
1676 FILE *fts0tget_out (yyscan_t yyscanner)
1677 {
1678  struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
1679  return yyout;
1680 }
1681 
1685 int fts0tget_leng (yyscan_t yyscanner)
1686 {
1687  struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
1688  return yyleng;
1689 }
1690 
1695 char *fts0tget_text (yyscan_t yyscanner)
1696 {
1697  struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
1698  return yytext;
1699 }
1700 
1705 void fts0tset_extra (YY_EXTRA_TYPE user_defined , yyscan_t yyscanner)
1706 {
1707  struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
1708  yyextra = user_defined ;
1709 }
1710 
1715 void fts0tset_lineno (int line_number , yyscan_t yyscanner)
1716 {
1717  struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
1718 
1719  /* lineno is only valid if an input buffer exists. */
1720  if (! YY_CURRENT_BUFFER )
1721  yy_fatal_error( "fts0tset_lineno called with no buffer" , yyscanner);
1722 
1723  yylineno = line_number;
1724 }
1725 
1730 void fts0tset_column (int column_no , yyscan_t yyscanner)
1731 {
1732  struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
1733 
1734  /* column is only valid if an input buffer exists. */
1735  if (! YY_CURRENT_BUFFER )
1736  yy_fatal_error( "fts0tset_column called with no buffer" , yyscanner);
1737 
1738  yycolumn = column_no;
1739 }
1740 
1747 void fts0tset_in (FILE * in_str , yyscan_t yyscanner)
1748 {
1749  struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
1750  yyin = in_str ;
1751 }
1752 
1753 void fts0tset_out (FILE * out_str , yyscan_t yyscanner)
1754 {
1755  struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
1756  yyout = out_str ;
1757 }
1758 
1759 int fts0tget_debug (yyscan_t yyscanner)
1760 {
1761  struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
1762  return yy_flex_debug;
1763 }
1764 
1765 void fts0tset_debug (int bdebug , yyscan_t yyscanner)
1766 {
1767  struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
1768  yy_flex_debug = bdebug ;
1769 }
1770 
1771 /* Accessor methods for yylval and yylloc */
1772 
1773 /* User-visible API */
1774 
1775 /* fts0tlex_init is special because it creates the scanner itself, so it is
1776  * the ONLY reentrant function that doesn't take the scanner as the last argument.
1777  * That's why we explicitly handle the declaration, instead of using our macros.
1778  */
1779 
1780 int fts0tlex_init(yyscan_t* ptr_yy_globals)
1781 
1782 {
1783  if (ptr_yy_globals == NULL){
1784  errno = EINVAL;
1785  return 1;
1786  }
1787 
1788  *ptr_yy_globals = (yyscan_t) fts0talloc ( sizeof( struct yyguts_t ), NULL );
1789 
1790  if (*ptr_yy_globals == NULL){
1791  errno = ENOMEM;
1792  return 1;
1793  }
1794 
1795  /* By setting to 0xAA, we expose bugs in yy_init_globals. Leave at 0x00 for releases. */
1796  memset(*ptr_yy_globals,0x00,sizeof(struct yyguts_t));
1797 
1798  return yy_init_globals ( *ptr_yy_globals );
1799 }
1800 
1801 /* fts0tlex_init_extra has the same functionality as fts0tlex_init, but follows the
1802  * convention of taking the scanner as the last argument. Note however, that
1803  * this is a *pointer* to a scanner, as it will be allocated by this call (and
1804  * is the reason, too, why this function also must handle its own declaration).
1805  * The user defined value in the first argument will be available to fts0talloc in
1806  * the yyextra field.
1807  */
1808 
1809 int fts0tlex_init_extra(YY_EXTRA_TYPE yy_user_defined,yyscan_t* ptr_yy_globals )
1810 
1811 {
1812  struct yyguts_t dummy_yyguts;
1813 
1814  fts0tset_extra (yy_user_defined, &dummy_yyguts);
1815 
1816  if (ptr_yy_globals == NULL){
1817  errno = EINVAL;
1818  return 1;
1819  }
1820 
1821  *ptr_yy_globals = (yyscan_t) fts0talloc ( sizeof( struct yyguts_t ), &dummy_yyguts );
1822 
1823  if (*ptr_yy_globals == NULL){
1824  errno = ENOMEM;
1825  return 1;
1826  }
1827 
1828  /* By setting to 0xAA, we expose bugs in
1829  yy_init_globals. Leave at 0x00 for releases. */
1830  memset(*ptr_yy_globals,0x00,sizeof(struct yyguts_t));
1831 
1832  fts0tset_extra (yy_user_defined, *ptr_yy_globals);
1833 
1834  return yy_init_globals ( *ptr_yy_globals );
1835 }
1836 
1837 static int yy_init_globals (yyscan_t yyscanner)
1838 {
1839  struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
1840  /* Initialization is the same as for the non-reentrant scanner.
1841  * This function is called from fts0tlex_destroy(), so don't allocate here.
1842  */
1843 
1844  yyg->yy_buffer_stack = 0;
1845  yyg->yy_buffer_stack_top = 0;
1846  yyg->yy_buffer_stack_max = 0;
1847  yyg->yy_c_buf_p = (char *) 0;
1848  yyg->yy_init = 0;
1849  yyg->yy_start = 0;
1850 
1851  yyg->yy_start_stack_ptr = 0;
1852  yyg->yy_start_stack_depth = 0;
1853  yyg->yy_start_stack = NULL;
1854 
1855 /* Defined in main.c */
1856 #ifdef YY_STDINIT
1857  yyin = stdin;
1858  yyout = stdout;
1859 #else
1860  yyin = (FILE *) 0;
1861  yyout = (FILE *) 0;
1862 #endif
1863 
1864  /* For future reference: Set errno on error, since we are called by
1865  * fts0tlex_init()
1866  */
1867  return 0;
1868 }
1869 
1870 /* fts0tlex_destroy is for both reentrant and non-reentrant scanners. */
1871 int fts0tlex_destroy (yyscan_t yyscanner)
1872 {
1873  struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
1874 
1875  /* Pop the buffer stack, destroying each element. */
1876  while(YY_CURRENT_BUFFER){
1877  fts0t_delete_buffer(YY_CURRENT_BUFFER ,yyscanner );
1878  YY_CURRENT_BUFFER_LVALUE = NULL;
1879  fts0tpop_buffer_state(yyscanner);
1880  }
1881 
1882  /* Destroy the stack itself. */
1883  fts0tfree(yyg->yy_buffer_stack ,yyscanner);
1884  yyg->yy_buffer_stack = NULL;
1885 
1886  /* Destroy the start condition stack. */
1887  fts0tfree(yyg->yy_start_stack ,yyscanner );
1888  yyg->yy_start_stack = NULL;
1889 
1890  /* Reset the globals. This is important in a non-reentrant scanner so the next time
1891  * fts0tlex() is called, initialization will occur. */
1892  yy_init_globals( yyscanner);
1893 
1894  /* Destroy the main struct (reentrant only). */
1895  fts0tfree ( yyscanner , yyscanner );
1896  yyscanner = NULL;
1897  return 0;
1898 }
1899 
1900 /*
1901  * Internal utility routines.
1902  */
1903 
1904 #ifndef yytext_ptr
1905 static void yy_flex_strncpy (char* s1, yyconst char * s2, int n , yyscan_t yyscanner __attribute__((unused)) __attribute__((unused)) __attribute__((unused)) __attribute__((unused)) __attribute__((unused)) __attribute__((unused)))
1906 {
1907  register int i;
1908  for ( i = 0; i < n; ++i )
1909  s1[i] = s2[i];
1910 }
1911 #endif
1912 
1913 #ifdef YY_NEED_STRLEN
1914 static int yy_flex_strlen (yyconst char * s , yyscan_t yyscanner __attribute__((unused)) __attribute__((unused)) __attribute__((unused)) __attribute__((unused)) __attribute__((unused)) __attribute__((unused)))
1915 {
1916  register int n;
1917  for ( n = 0; s[n]; ++n )
1918  ;
1919 
1920  return n;
1921 }
1922 #endif
1923 
1924 void *fts0talloc (yy_size_t size , yyscan_t yyscanner __attribute__((unused)) __attribute__((unused)) __attribute__((unused)) __attribute__((unused)) __attribute__((unused)) __attribute__((unused)))
1925 {
1926  return (void *) malloc( size );
1927 }
1928 
1929 void *fts0trealloc (void * ptr, yy_size_t size , yyscan_t yyscanner __attribute__((unused)) __attribute__((unused)) __attribute__((unused)) __attribute__((unused)) __attribute__((unused)) __attribute__((unused)))
1930 {
1931  /* The cast to (char *) in the following accommodates both
1932  * implementations that use char* generic pointers, and those
1933  * that use void* generic pointers. It works with the latter
1934  * because both ANSI C and C++ allow castless assignment from
1935  * any pointer type to void*, and deal with argument conversions
1936  * as though doing an assignment.
1937  */
1938  return (void *) realloc( (char *) ptr, size );
1939 }
1940 
1941 void fts0tfree (void * ptr , yyscan_t yyscanner __attribute__((unused)) __attribute__((unused)) __attribute__((unused)) __attribute__((unused)) __attribute__((unused)) __attribute__((unused)))
1942 {
1943  free( (char *) ptr ); /* see fts0trealloc() for (char *) cast */
1944 }
1945 
1946 #define YYTABLES_NAME "yytables"
1947 
1948 #line 68 "fts0tlex.l"
1949 
1950 
1951