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