xref: /netbsd/tools/m4/bootstrap/tokenizer.c (revision 6550d01e)
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@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