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