calclex.c revision 1.1.1.3 1 1.1.1.3 mrg /* A lexical scanner generated by flex */
2 1.1 mrg
3 1.1.1.3 mrg /* Scanner skeleton version:
4 1.1.1.3 mrg * $Header: /tank/opengrok/rsync2/NetBSD/src/external/lgpl3/gmp/dist/demos/calc/calclex.c,v 1.1.1.3 2017/08/22 09:40:49 mrg Exp $
5 1.1.1.3 mrg * $FreeBSD: releng/9.3/usr.bin/lex/flex.skl 214272 2010-10-24 15:31:41Z uqs $
6 1.1.1.3 mrg */
7 1.1 mrg
8 1.1.1.3 mrg #if defined(__FreeBSD__)
9 1.1.1.3 mrg #include <sys/cdefs.h>
10 1.1.1.3 mrg #else
11 1.1.1.3 mrg #define __unused
12 1.1.1.3 mrg #define __dead2
13 1.1.1.3 mrg #endif
14 1.1 mrg
15 1.1 mrg #define FLEX_SCANNER
16 1.1 mrg #define YY_FLEX_MAJOR_VERSION 2
17 1.1 mrg #define YY_FLEX_MINOR_VERSION 5
18 1.1 mrg
19 1.1 mrg #include <stdio.h>
20 1.1 mrg
21 1.1 mrg
22 1.1.1.3 mrg /* cfront 1.2 defines "c_plusplus" instead of "__cplusplus" */
23 1.1.1.3 mrg #ifdef c_plusplus
24 1.1.1.3 mrg #ifndef __cplusplus
25 1.1.1.3 mrg #define __cplusplus
26 1.1 mrg #endif
27 1.1 mrg #endif
28 1.1 mrg
29 1.1 mrg
30 1.1 mrg #ifdef __cplusplus
31 1.1 mrg
32 1.1.1.3 mrg #include <stdlib.h>
33 1.1.1.3 mrg #include <unistd.h>
34 1.1.1.3 mrg
35 1.1.1.3 mrg /* Use prototypes in function declarations. */
36 1.1.1.3 mrg #define YY_USE_PROTOS
37 1.1.1.3 mrg
38 1.1 mrg /* The "const" storage-class-modifier is valid. */
39 1.1 mrg #define YY_USE_CONST
40 1.1 mrg
41 1.1 mrg #else /* ! __cplusplus */
42 1.1 mrg
43 1.1.1.3 mrg #if __STDC__
44 1.1 mrg
45 1.1.1.3 mrg #define YY_USE_PROTOS
46 1.1 mrg #define YY_USE_CONST
47 1.1 mrg
48 1.1.1.3 mrg #endif /* __STDC__ */
49 1.1 mrg #endif /* ! __cplusplus */
50 1.1 mrg
51 1.1.1.3 mrg #ifdef __TURBOC__
52 1.1.1.3 mrg #pragma warn -rch
53 1.1.1.3 mrg #pragma warn -use
54 1.1.1.3 mrg #include <io.h>
55 1.1.1.3 mrg #include <stdlib.h>
56 1.1.1.3 mrg #define YY_USE_CONST
57 1.1.1.3 mrg #define YY_USE_PROTOS
58 1.1.1.3 mrg #endif
59 1.1.1.3 mrg
60 1.1 mrg #ifdef YY_USE_CONST
61 1.1 mrg #define yyconst const
62 1.1 mrg #else
63 1.1 mrg #define yyconst
64 1.1 mrg #endif
65 1.1 mrg
66 1.1.1.3 mrg
67 1.1.1.3 mrg #ifdef YY_USE_PROTOS
68 1.1.1.3 mrg #define YY_PROTO(proto) proto
69 1.1.1.3 mrg #else
70 1.1.1.3 mrg #define YY_PROTO(proto) ()
71 1.1.1.3 mrg #endif
72 1.1.1.3 mrg
73 1.1 mrg /* Returned upon end-of-file. */
74 1.1 mrg #define YY_NULL 0
75 1.1 mrg
76 1.1 mrg /* Promotes a possibly negative, possibly signed char to an unsigned
77 1.1 mrg * integer for use as an array index. If the signed char is negative,
78 1.1 mrg * we want to instead treat it as an 8-bit unsigned char, hence the
79 1.1 mrg * double cast.
80 1.1 mrg */
81 1.1 mrg #define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c)
82 1.1 mrg
83 1.1 mrg /* Enter a start condition. This macro really ought to take a parameter,
84 1.1 mrg * but we do it the disgusting crufty way forced on us by the ()-less
85 1.1 mrg * definition of BEGIN.
86 1.1 mrg */
87 1.1.1.3 mrg #define BEGIN yy_start = 1 + 2 *
88 1.1 mrg
89 1.1 mrg /* Translate the current start state into a value that can be later handed
90 1.1 mrg * to BEGIN to return to the state. The YYSTATE alias is for lex
91 1.1 mrg * compatibility.
92 1.1 mrg */
93 1.1.1.3 mrg #define YY_START ((yy_start - 1) / 2)
94 1.1 mrg #define YYSTATE YY_START
95 1.1 mrg
96 1.1 mrg /* Action number for EOF rule of a given start state. */
97 1.1 mrg #define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
98 1.1 mrg
99 1.1 mrg /* Special action meaning "start processing a new file". */
100 1.1.1.3 mrg #define YY_NEW_FILE yyrestart( yyin )
101 1.1 mrg
102 1.1 mrg #define YY_END_OF_BUFFER_CHAR 0
103 1.1 mrg
104 1.1 mrg /* Size of default input buffer. */
105 1.1 mrg #define YY_BUF_SIZE 16384
106 1.1 mrg
107 1.1 mrg typedef struct yy_buffer_state *YY_BUFFER_STATE;
108 1.1 mrg
109 1.1.1.3 mrg extern int yyleng;
110 1.1 mrg extern FILE *yyin, *yyout;
111 1.1 mrg
112 1.1 mrg #define EOB_ACT_CONTINUE_SCAN 0
113 1.1 mrg #define EOB_ACT_END_OF_FILE 1
114 1.1 mrg #define EOB_ACT_LAST_MATCH 2
115 1.1 mrg
116 1.1.1.3 mrg /* The funky do-while in the following #define is used to turn the definition
117 1.1.1.3 mrg * int a single C statement (which needs a semi-colon terminator). This
118 1.1.1.3 mrg * avoids problems with code like:
119 1.1.1.3 mrg *
120 1.1.1.3 mrg * if ( condition_holds )
121 1.1.1.3 mrg * yyless( 5 );
122 1.1.1.3 mrg * else
123 1.1.1.3 mrg * do_something_else();
124 1.1.1.3 mrg *
125 1.1.1.3 mrg * Prior to using the do-while the compiler would get upset at the
126 1.1.1.3 mrg * "else" because it interpreted the "if" statement as being all
127 1.1.1.3 mrg * done when it reached the ';' after the yyless() call.
128 1.1.1.3 mrg */
129 1.1.1.3 mrg
130 1.1.1.3 mrg /* Return all but the first 'n' matched characters back to the input stream. */
131 1.1.1.3 mrg
132 1.1 mrg #define yyless(n) \
133 1.1 mrg do \
134 1.1 mrg { \
135 1.1 mrg /* Undo effects of setting up yytext. */ \
136 1.1.1.3 mrg *yy_cp = yy_hold_char; \
137 1.1 mrg YY_RESTORE_YY_MORE_OFFSET \
138 1.1.1.3 mrg yy_c_buf_p = yy_cp = yy_bp + n - YY_MORE_ADJ; \
139 1.1 mrg YY_DO_BEFORE_ACTION; /* set up yytext again */ \
140 1.1 mrg } \
141 1.1 mrg while ( 0 )
142 1.1 mrg
143 1.1.1.3 mrg #define unput(c) yyunput( c, yytext_ptr )
144 1.1.1.3 mrg
145 1.1.1.3 mrg /* The following is because we cannot portably get our hands on size_t
146 1.1.1.3 mrg * (without autoconf's help, which isn't available because we want
147 1.1.1.3 mrg * flex-generated scanners to compile on their own).
148 1.1.1.3 mrg */
149 1.1.1.3 mrg typedef unsigned int yy_size_t;
150 1.1.1.3 mrg
151 1.1 mrg
152 1.1 mrg struct yy_buffer_state
153 1.1 mrg {
154 1.1 mrg FILE *yy_input_file;
155 1.1 mrg
156 1.1 mrg char *yy_ch_buf; /* input buffer */
157 1.1 mrg char *yy_buf_pos; /* current position in input buffer */
158 1.1 mrg
159 1.1 mrg /* Size of input buffer in bytes, not including room for EOB
160 1.1 mrg * characters.
161 1.1 mrg */
162 1.1 mrg yy_size_t yy_buf_size;
163 1.1 mrg
164 1.1 mrg /* Number of characters read into yy_ch_buf, not including EOB
165 1.1 mrg * characters.
166 1.1 mrg */
167 1.1.1.3 mrg int yy_n_chars;
168 1.1 mrg
169 1.1 mrg /* Whether we "own" the buffer - i.e., we know we created it,
170 1.1 mrg * and can realloc() it to grow it, and should free() it to
171 1.1 mrg * delete it.
172 1.1 mrg */
173 1.1 mrg int yy_is_our_buffer;
174 1.1 mrg
175 1.1 mrg /* Whether this is an "interactive" input source; if so, and
176 1.1 mrg * if we're using stdio for input, then we want to use getc()
177 1.1 mrg * instead of fread(), to make sure we stop fetching input after
178 1.1 mrg * each newline.
179 1.1 mrg */
180 1.1 mrg int yy_is_interactive;
181 1.1 mrg
182 1.1 mrg /* Whether we're considered to be at the beginning of a line.
183 1.1 mrg * If so, '^' rules will be active on the next match, otherwise
184 1.1 mrg * not.
185 1.1 mrg */
186 1.1 mrg int yy_at_bol;
187 1.1 mrg
188 1.1 mrg /* Whether to try to fill the input buffer when we reach the
189 1.1 mrg * end of it.
190 1.1 mrg */
191 1.1 mrg int yy_fill_buffer;
192 1.1 mrg
193 1.1 mrg int yy_buffer_status;
194 1.1 mrg #define YY_BUFFER_NEW 0
195 1.1 mrg #define YY_BUFFER_NORMAL 1
196 1.1 mrg /* When an EOF's been seen but there's still some text to process
197 1.1 mrg * then we mark the buffer as YY_EOF_PENDING, to indicate that we
198 1.1 mrg * shouldn't try reading from the input source any more. We might
199 1.1 mrg * still have a bunch of tokens to match, though, because of
200 1.1 mrg * possible backing-up.
201 1.1 mrg *
202 1.1 mrg * When we actually see the EOF, we change the status to "new"
203 1.1 mrg * (via yyrestart()), so that the user can continue scanning by
204 1.1 mrg * just pointing yyin at a new input file.
205 1.1 mrg */
206 1.1 mrg #define YY_BUFFER_EOF_PENDING 2
207 1.1 mrg };
208 1.1 mrg
209 1.1.1.3 mrg static YY_BUFFER_STATE yy_current_buffer = 0;
210 1.1 mrg
211 1.1 mrg /* We provide macros for accessing buffer states in case in the
212 1.1 mrg * future we want to put the buffer states in a more general
213 1.1 mrg * "scanner state".
214 1.1 mrg */
215 1.1.1.3 mrg #define YY_CURRENT_BUFFER yy_current_buffer
216 1.1 mrg
217 1.1 mrg
218 1.1 mrg /* yy_hold_char holds the character lost when yytext is formed. */
219 1.1 mrg static char yy_hold_char;
220 1.1.1.3 mrg
221 1.1.1.3 mrg static int yy_n_chars; /* number of characters read into yy_ch_buf */
222 1.1.1.3 mrg
223 1.1.1.3 mrg
224 1.1.1.3 mrg int yyleng;
225 1.1 mrg
226 1.1 mrg /* Points to current character in buffer. */
227 1.1 mrg static char *yy_c_buf_p = (char *) 0;
228 1.1.1.3 mrg static int yy_init = 1; /* whether we need to initialize */
229 1.1 mrg static int yy_start = 0; /* start state number */
230 1.1 mrg
231 1.1 mrg /* Flag which is used to allow yywrap()'s to do buffer switches
232 1.1 mrg * instead of setting up a fresh yyin. A bit of a hack ...
233 1.1 mrg */
234 1.1 mrg static int yy_did_buffer_switch_on_eof;
235 1.1 mrg
236 1.1.1.3 mrg void yyrestart YY_PROTO(( FILE *input_file ));
237 1.1.1.3 mrg
238 1.1.1.3 mrg void yy_switch_to_buffer YY_PROTO(( YY_BUFFER_STATE new_buffer ));
239 1.1.1.3 mrg void yy_load_buffer_state YY_PROTO(( void ));
240 1.1.1.3 mrg YY_BUFFER_STATE yy_create_buffer YY_PROTO(( FILE *file, int size ));
241 1.1.1.3 mrg void yy_delete_buffer YY_PROTO(( YY_BUFFER_STATE b ));
242 1.1.1.3 mrg void yy_init_buffer YY_PROTO(( YY_BUFFER_STATE b, FILE *file ));
243 1.1.1.3 mrg void yy_flush_buffer YY_PROTO(( YY_BUFFER_STATE b ));
244 1.1.1.3 mrg #define YY_FLUSH_BUFFER yy_flush_buffer( yy_current_buffer )
245 1.1.1.3 mrg
246 1.1.1.3 mrg YY_BUFFER_STATE yy_scan_buffer YY_PROTO(( char *base, yy_size_t size ));
247 1.1.1.3 mrg YY_BUFFER_STATE yy_scan_string YY_PROTO(( yyconst char *yy_str ));
248 1.1.1.3 mrg YY_BUFFER_STATE yy_scan_bytes YY_PROTO(( yyconst char *bytes, int len ));
249 1.1.1.3 mrg
250 1.1.1.3 mrg static void *yy_flex_alloc YY_PROTO(( yy_size_t ));
251 1.1.1.3 mrg static void *yy_flex_realloc YY_PROTO(( void *, yy_size_t )) __unused;
252 1.1.1.3 mrg static void yy_flex_free YY_PROTO(( void * ));
253 1.1 mrg
254 1.1 mrg #define yy_new_buffer yy_create_buffer
255 1.1 mrg
256 1.1 mrg #define yy_set_interactive(is_interactive) \
257 1.1 mrg { \
258 1.1.1.3 mrg if ( ! yy_current_buffer ) \
259 1.1.1.3 mrg yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \
260 1.1.1.3 mrg yy_current_buffer->yy_is_interactive = is_interactive; \
261 1.1 mrg }
262 1.1 mrg
263 1.1 mrg #define yy_set_bol(at_bol) \
264 1.1 mrg { \
265 1.1.1.3 mrg if ( ! yy_current_buffer ) \
266 1.1.1.3 mrg yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \
267 1.1.1.3 mrg yy_current_buffer->yy_at_bol = at_bol; \
268 1.1 mrg }
269 1.1 mrg
270 1.1.1.3 mrg #define YY_AT_BOL() (yy_current_buffer->yy_at_bol)
271 1.1 mrg
272 1.1 mrg typedef unsigned char YY_CHAR;
273 1.1 mrg FILE *yyin = (FILE *) 0, *yyout = (FILE *) 0;
274 1.1 mrg typedef int yy_state_type;
275 1.1 mrg extern char *yytext;
276 1.1 mrg #define yytext_ptr yytext
277 1.1 mrg
278 1.1.1.3 mrg static yy_state_type yy_get_previous_state YY_PROTO(( void ));
279 1.1.1.3 mrg static yy_state_type yy_try_NUL_trans YY_PROTO(( yy_state_type current_state ));
280 1.1.1.3 mrg static int yy_get_next_buffer YY_PROTO(( void ));
281 1.1.1.3 mrg static void yy_fatal_error YY_PROTO(( yyconst char msg[] )) __dead2;
282 1.1 mrg
283 1.1 mrg /* Done after the current pattern has been matched and before the
284 1.1 mrg * corresponding action - sets up yytext.
285 1.1 mrg */
286 1.1 mrg #define YY_DO_BEFORE_ACTION \
287 1.1.1.3 mrg yytext_ptr = yy_bp; \
288 1.1.1.3 mrg yyleng = (int) (yy_cp - yy_bp); \
289 1.1.1.3 mrg yy_hold_char = *yy_cp; \
290 1.1 mrg *yy_cp = '\0'; \
291 1.1.1.3 mrg yy_c_buf_p = yy_cp;
292 1.1 mrg
293 1.1 mrg #define YY_NUM_RULES 19
294 1.1 mrg #define YY_END_OF_BUFFER 20
295 1.1.1.3 mrg static yyconst short int yy_accept[39] =
296 1.1 mrg { 0,
297 1.1 mrg 0, 0, 20, 18, 1, 2, 7, 6, 7, 18,
298 1.1 mrg 16, 16, 2, 7, 7, 7, 16, 17, 18, 18,
299 1.1 mrg 11, 6, 5, 6, 14, 16, 0, 12, 8, 10,
300 1.1 mrg 9, 13, 16, 17, 3, 15, 4, 0
301 1.1 mrg } ;
302 1.1 mrg
303 1.1.1.3 mrg static yyconst int yy_ec[256] =
304 1.1 mrg { 0,
305 1.1 mrg 1, 1, 1, 1, 1, 1, 1, 1, 2, 3,
306 1.1 mrg 1, 2, 1, 1, 1, 1, 1, 1, 1, 1,
307 1.1 mrg 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
308 1.1 mrg 1, 2, 4, 1, 5, 1, 6, 7, 1, 6,
309 1.1 mrg 6, 6, 6, 6, 6, 1, 6, 8, 9, 9,
310 1.1 mrg 9, 9, 9, 9, 9, 9, 9, 1, 10, 11,
311 1.1 mrg 12, 13, 1, 1, 14, 14, 14, 14, 14, 14,
312 1.1 mrg 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
313 1.1 mrg 15, 15, 15, 15, 15, 15, 15, 16, 15, 15,
314 1.1 mrg 1, 17, 1, 6, 1, 1, 15, 15, 15, 15,
315 1.1 mrg
316 1.1 mrg 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
317 1.1 mrg 15, 15, 15, 15, 15, 15, 15, 15, 15, 16,
318 1.1 mrg 15, 15, 1, 18, 1, 1, 1, 1, 1, 1,
319 1.1 mrg 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
320 1.1 mrg 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
321 1.1 mrg 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
322 1.1 mrg 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
323 1.1 mrg 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
324 1.1 mrg 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
325 1.1 mrg 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
326 1.1 mrg
327 1.1 mrg 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
328 1.1 mrg 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
329 1.1 mrg 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
330 1.1 mrg 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
331 1.1 mrg 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
332 1.1 mrg 1, 1, 1, 1, 1
333 1.1 mrg } ;
334 1.1 mrg
335 1.1.1.3 mrg static yyconst int yy_meta[19] =
336 1.1 mrg { 0,
337 1.1 mrg 1, 1, 1, 1, 1, 1, 1, 2, 2, 1,
338 1.1 mrg 1, 1, 1, 2, 3, 2, 1, 1
339 1.1 mrg } ;
340 1.1 mrg
341 1.1.1.3 mrg static yyconst short int yy_base[43] =
342 1.1 mrg { 0,
343 1.1 mrg 0, 0, 39, 49, 49, 49, 26, 16, 49, 30,
344 1.1 mrg 20, 19, 49, 9, 22, 10, 9, 0, 29, 13,
345 1.1 mrg 49, 23, 49, 24, 49, 0, 0, 49, 49, 49,
346 1.1 mrg 49, 49, 13, 0, 49, 49, 49, 49, 41, 28,
347 1.1 mrg 43, 45
348 1.1 mrg } ;
349 1.1 mrg
350 1.1.1.3 mrg static yyconst short int yy_def[43] =
351 1.1 mrg { 0,
352 1.1 mrg 38, 1, 38, 38, 38, 38, 38, 39, 38, 38,
353 1.1 mrg 40, 40, 38, 38, 38, 38, 41, 42, 38, 38,
354 1.1 mrg 38, 39, 38, 39, 38, 12, 12, 38, 38, 38,
355 1.1 mrg 38, 38, 41, 42, 38, 38, 38, 0, 38, 38,
356 1.1 mrg 38, 38
357 1.1 mrg } ;
358 1.1 mrg
359 1.1.1.3 mrg static yyconst short int yy_nxt[68] =
360 1.1 mrg { 0,
361 1.1 mrg 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,
362 1.1 mrg 14, 15, 16, 17, 18, 18, 19, 20, 23, 28,
363 1.1 mrg 29, 31, 32, 34, 34, 23, 37, 34, 34, 26,
364 1.1 mrg 36, 35, 24, 30, 38, 27, 25, 21, 38, 24,
365 1.1 mrg 24, 22, 22, 22, 33, 33, 34, 34, 3, 38,
366 1.1 mrg 38, 38, 38, 38, 38, 38, 38, 38, 38, 38,
367 1.1 mrg 38, 38, 38, 38, 38, 38, 38
368 1.1 mrg } ;
369 1.1 mrg
370 1.1.1.3 mrg static yyconst short int yy_chk[68] =
371 1.1 mrg { 0,
372 1.1 mrg 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
373 1.1 mrg 1, 1, 1, 1, 1, 1, 1, 1, 8, 14,
374 1.1 mrg 14, 16, 16, 17, 17, 22, 24, 33, 33, 40,
375 1.1 mrg 20, 19, 8, 15, 12, 11, 10, 7, 3, 22,
376 1.1 mrg 24, 39, 39, 39, 41, 41, 42, 42, 38, 38,
377 1.1 mrg 38, 38, 38, 38, 38, 38, 38, 38, 38, 38,
378 1.1 mrg 38, 38, 38, 38, 38, 38, 38
379 1.1 mrg } ;
380 1.1 mrg
381 1.1 mrg static yy_state_type yy_last_accepting_state;
382 1.1 mrg static char *yy_last_accepting_cpos;
383 1.1 mrg
384 1.1 mrg /* The intent behind this definition is that it'll catch
385 1.1 mrg * any uses of REJECT which flex missed.
386 1.1 mrg */
387 1.1 mrg #define REJECT reject_used_but_not_detected
388 1.1 mrg #define yymore() yymore_used_but_not_detected
389 1.1 mrg #define YY_MORE_ADJ 0
390 1.1 mrg #define YY_RESTORE_YY_MORE_OFFSET
391 1.1 mrg char *yytext;
392 1.1.1.3 mrg #line 1 "../../../gmp/demos/calc/calclex.l"
393 1.1.1.3 mrg #define INITIAL 0
394 1.1 mrg /* Lexical analyzer for calc program.
395 1.1 mrg
396 1.1.1.3 mrg Copyright 2000-2002 Free Software Foundation, Inc.
397 1.1 mrg
398 1.1 mrg This file is part of the GNU MP Library.
399 1.1 mrg
400 1.1 mrg This program is free software; you can redistribute it and/or modify it under
401 1.1 mrg the terms of the GNU General Public License as published by the Free Software
402 1.1 mrg Foundation; either version 3 of the License, or (at your option) any later
403 1.1 mrg version.
404 1.1 mrg
405 1.1 mrg This program is distributed in the hope that it will be useful, but WITHOUT ANY
406 1.1 mrg WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
407 1.1 mrg PARTICULAR PURPOSE. See the GNU General Public License for more details.
408 1.1 mrg
409 1.1 mrg You should have received a copy of the GNU General Public License along with
410 1.1.1.3 mrg this program. If not, see https://www.gnu.org/licenses/. */
411 1.1.1.3 mrg #line 20 "../../../gmp/demos/calc/calclex.l"
412 1.1 mrg #include <string.h>
413 1.1 mrg #include "calc-common.h"
414 1.1 mrg
415 1.1 mrg
416 1.1 mrg #if WITH_READLINE
417 1.1 mrg /* Let GNU flex use readline. See the calcread.c redefined input() for a
418 1.1 mrg way that might work for a standard lex too. */
419 1.1 mrg #define YY_INPUT(buf,result,max_size) \
420 1.1 mrg result = calc_input (buf, max_size);
421 1.1 mrg #endif
422 1.1 mrg
423 1.1 mrg
424 1.1 mrg /* Non-zero when reading the second or subsequent line of an expression,
425 1.1 mrg used to give a different prompt when using readline. */
426 1.1 mrg int calc_more_input = 0;
427 1.1 mrg
428 1.1 mrg
429 1.1 mrg const struct calc_keywords_t calc_keywords[] = {
430 1.1 mrg { "abs", ABS },
431 1.1 mrg { "bin", BIN },
432 1.1 mrg { "decimal", DECIMAL },
433 1.1 mrg { "fib", FIB },
434 1.1 mrg { "hex", HEX },
435 1.1 mrg { "help", HELP },
436 1.1 mrg { "gcd", GCD },
437 1.1 mrg { "kron", KRON },
438 1.1 mrg { "lcm", LCM },
439 1.1 mrg { "lucnum", LUCNUM },
440 1.1 mrg { "nextprime", NEXTPRIME },
441 1.1 mrg { "powm", POWM },
442 1.1 mrg { "quit", QUIT },
443 1.1 mrg { "root", ROOT },
444 1.1 mrg { "sqrt", SQRT },
445 1.1 mrg { NULL }
446 1.1 mrg };
447 1.1.1.3 mrg #line 448 "calclex.c"
448 1.1 mrg
449 1.1 mrg /* Macros after this point can all be overridden by user definitions in
450 1.1 mrg * section 1.
451 1.1 mrg */
452 1.1 mrg
453 1.1 mrg #ifndef YY_SKIP_YYWRAP
454 1.1 mrg #ifdef __cplusplus
455 1.1.1.3 mrg extern "C" int yywrap YY_PROTO(( void ));
456 1.1 mrg #else
457 1.1.1.3 mrg extern int yywrap YY_PROTO(( void ));
458 1.1.1.3 mrg #endif
459 1.1 mrg #endif
460 1.1.1.3 mrg
461 1.1.1.3 mrg #ifndef YY_NO_UNPUT
462 1.1.1.3 mrg static void yyunput YY_PROTO(( int c, char *buf_ptr ));
463 1.1 mrg #endif
464 1.1 mrg
465 1.1 mrg #ifndef yytext_ptr
466 1.1.1.3 mrg static void yy_flex_strncpy YY_PROTO(( char *, yyconst char *, int ));
467 1.1 mrg #endif
468 1.1 mrg
469 1.1 mrg #ifdef YY_NEED_STRLEN
470 1.1.1.3 mrg static int yy_flex_strlen YY_PROTO(( yyconst char * ));
471 1.1 mrg #endif
472 1.1 mrg
473 1.1 mrg #ifndef YY_NO_INPUT
474 1.1 mrg #ifdef __cplusplus
475 1.1.1.3 mrg static int yyinput YY_PROTO(( void ));
476 1.1.1.3 mrg #else
477 1.1.1.3 mrg static int input YY_PROTO(( void ));
478 1.1.1.3 mrg #endif
479 1.1.1.3 mrg #endif
480 1.1.1.3 mrg
481 1.1.1.3 mrg #if YY_STACK_USED
482 1.1.1.3 mrg static int yy_start_stack_ptr = 0;
483 1.1.1.3 mrg static int yy_start_stack_depth = 0;
484 1.1.1.3 mrg static int *yy_start_stack = 0;
485 1.1.1.3 mrg #ifndef YY_NO_PUSH_STATE
486 1.1.1.3 mrg static void yy_push_state YY_PROTO(( int new_state ));
487 1.1.1.3 mrg #endif
488 1.1.1.3 mrg #ifndef YY_NO_POP_STATE
489 1.1.1.3 mrg static void yy_pop_state YY_PROTO(( void ));
490 1.1.1.3 mrg #endif
491 1.1.1.3 mrg #ifndef YY_NO_TOP_STATE
492 1.1.1.3 mrg static int yy_top_state YY_PROTO(( void ));
493 1.1.1.3 mrg #endif
494 1.1.1.3 mrg
495 1.1 mrg #else
496 1.1.1.3 mrg #define YY_NO_PUSH_STATE 1
497 1.1.1.3 mrg #define YY_NO_POP_STATE 1
498 1.1.1.3 mrg #define YY_NO_TOP_STATE 1
499 1.1 mrg #endif
500 1.1 mrg
501 1.1.1.3 mrg #ifdef YY_MALLOC_DECL
502 1.1.1.3 mrg YY_MALLOC_DECL
503 1.1.1.3 mrg #else
504 1.1.1.3 mrg #if __STDC__
505 1.1.1.3 mrg #ifndef __cplusplus
506 1.1.1.3 mrg #include <stdlib.h>
507 1.1.1.3 mrg #endif
508 1.1.1.3 mrg #else
509 1.1.1.3 mrg /* Just try to get by without declaring the routines. This will fail
510 1.1.1.3 mrg * miserably on non-ANSI systems for which sizeof(size_t) != sizeof(int)
511 1.1.1.3 mrg * or sizeof(void*) != sizeof(int).
512 1.1.1.3 mrg */
513 1.1.1.3 mrg #endif
514 1.1 mrg #endif
515 1.1 mrg
516 1.1 mrg /* Amount of stuff to slurp up with each read. */
517 1.1 mrg #ifndef YY_READ_BUF_SIZE
518 1.1 mrg #define YY_READ_BUF_SIZE 8192
519 1.1 mrg #endif
520 1.1 mrg
521 1.1 mrg /* Copy whatever the last rule matched to the standard output. */
522 1.1.1.3 mrg
523 1.1 mrg #ifndef ECHO
524 1.1 mrg /* This used to be an fputs(), but since the string might contain NUL's,
525 1.1 mrg * we now use fwrite().
526 1.1 mrg */
527 1.1.1.3 mrg #define ECHO (void) fwrite( yytext, yyleng, 1, yyout )
528 1.1 mrg #endif
529 1.1 mrg
530 1.1 mrg /* Gets input and stuffs it into "buf". number of characters read, or YY_NULL,
531 1.1 mrg * is returned in "result".
532 1.1 mrg */
533 1.1 mrg #ifndef YY_INPUT
534 1.1 mrg #define YY_INPUT(buf,result,max_size) \
535 1.1.1.3 mrg if ( yy_current_buffer->yy_is_interactive ) \
536 1.1 mrg { \
537 1.1.1.3 mrg int c = '*', n; \
538 1.1 mrg for ( n = 0; n < max_size && \
539 1.1 mrg (c = getc( yyin )) != EOF && c != '\n'; ++n ) \
540 1.1 mrg buf[n] = (char) c; \
541 1.1 mrg if ( c == '\n' ) \
542 1.1 mrg buf[n++] = (char) c; \
543 1.1 mrg if ( c == EOF && ferror( yyin ) ) \
544 1.1 mrg YY_FATAL_ERROR( "input in flex scanner failed" ); \
545 1.1 mrg result = n; \
546 1.1 mrg } \
547 1.1.1.3 mrg else if ( ((result = fread( buf, 1, max_size, yyin )) == 0) \
548 1.1.1.3 mrg && ferror( yyin ) ) \
549 1.1.1.3 mrg YY_FATAL_ERROR( "input in flex scanner failed" );
550 1.1 mrg #endif
551 1.1 mrg
552 1.1 mrg /* No semi-colon after return; correct usage is to write "yyterminate();" -
553 1.1 mrg * we don't want an extra ';' after the "return" because that will cause
554 1.1 mrg * some compilers to complain about unreachable statements.
555 1.1 mrg */
556 1.1 mrg #ifndef yyterminate
557 1.1 mrg #define yyterminate() return YY_NULL
558 1.1 mrg #endif
559 1.1 mrg
560 1.1 mrg /* Number of entries by which start-condition stack grows. */
561 1.1 mrg #ifndef YY_START_STACK_INCR
562 1.1 mrg #define YY_START_STACK_INCR 25
563 1.1 mrg #endif
564 1.1 mrg
565 1.1 mrg /* Report a fatal error. */
566 1.1 mrg #ifndef YY_FATAL_ERROR
567 1.1 mrg #define YY_FATAL_ERROR(msg) yy_fatal_error( msg )
568 1.1 mrg #endif
569 1.1 mrg
570 1.1 mrg /* Default declaration of generated scanner - a define so the user can
571 1.1 mrg * easily add parameters.
572 1.1 mrg */
573 1.1 mrg #ifndef YY_DECL
574 1.1.1.3 mrg #define YY_DECL int yylex YY_PROTO(( void ))
575 1.1.1.3 mrg #endif
576 1.1 mrg
577 1.1 mrg /* Code executed at the beginning of each rule, after yytext and yyleng
578 1.1 mrg * have been set up.
579 1.1 mrg */
580 1.1 mrg #ifndef YY_USER_ACTION
581 1.1 mrg #define YY_USER_ACTION
582 1.1 mrg #endif
583 1.1 mrg
584 1.1 mrg /* Code executed at the end of each rule. */
585 1.1 mrg #ifndef YY_BREAK
586 1.1 mrg #define YY_BREAK break;
587 1.1 mrg #endif
588 1.1 mrg
589 1.1 mrg #define YY_RULE_SETUP \
590 1.1 mrg YY_USER_ACTION
591 1.1 mrg
592 1.1 mrg YY_DECL
593 1.1.1.3 mrg {
594 1.1.1.3 mrg yy_state_type yy_current_state;
595 1.1.1.3 mrg char *yy_cp, *yy_bp;
596 1.1.1.3 mrg int yy_act;
597 1.1.1.3 mrg
598 1.1.1.3 mrg #line 57 "../../../gmp/demos/calc/calclex.l"
599 1.1 mrg
600 1.1 mrg
601 1.1.1.3 mrg #line 602 "calclex.c"
602 1.1 mrg
603 1.1.1.3 mrg if ( yy_init )
604 1.1 mrg {
605 1.1.1.3 mrg yy_init = 0;
606 1.1 mrg
607 1.1 mrg #ifdef YY_USER_INIT
608 1.1 mrg YY_USER_INIT;
609 1.1 mrg #endif
610 1.1 mrg
611 1.1.1.3 mrg if ( ! yy_start )
612 1.1.1.3 mrg yy_start = 1; /* first start state */
613 1.1 mrg
614 1.1 mrg if ( ! yyin )
615 1.1 mrg yyin = stdin;
616 1.1 mrg
617 1.1 mrg if ( ! yyout )
618 1.1 mrg yyout = stdout;
619 1.1 mrg
620 1.1.1.3 mrg if ( ! yy_current_buffer )
621 1.1.1.3 mrg yy_current_buffer =
622 1.1.1.3 mrg yy_create_buffer( yyin, YY_BUF_SIZE );
623 1.1 mrg
624 1.1.1.3 mrg yy_load_buffer_state();
625 1.1 mrg }
626 1.1 mrg
627 1.1 mrg while ( 1 ) /* loops until end-of-file is reached */
628 1.1 mrg {
629 1.1.1.3 mrg yy_cp = yy_c_buf_p;
630 1.1 mrg
631 1.1 mrg /* Support of yytext. */
632 1.1.1.3 mrg *yy_cp = yy_hold_char;
633 1.1 mrg
634 1.1 mrg /* yy_bp points to the position in yy_ch_buf of the start of
635 1.1 mrg * the current run.
636 1.1 mrg */
637 1.1 mrg yy_bp = yy_cp;
638 1.1 mrg
639 1.1.1.3 mrg yy_current_state = yy_start;
640 1.1 mrg yy_match:
641 1.1 mrg do
642 1.1 mrg {
643 1.1.1.3 mrg YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)];
644 1.1 mrg if ( yy_accept[yy_current_state] )
645 1.1 mrg {
646 1.1.1.3 mrg yy_last_accepting_state = yy_current_state;
647 1.1.1.3 mrg yy_last_accepting_cpos = yy_cp;
648 1.1 mrg }
649 1.1 mrg while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
650 1.1 mrg {
651 1.1 mrg yy_current_state = (int) yy_def[yy_current_state];
652 1.1 mrg if ( yy_current_state >= 39 )
653 1.1 mrg yy_c = yy_meta[(unsigned int) yy_c];
654 1.1 mrg }
655 1.1 mrg yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
656 1.1 mrg ++yy_cp;
657 1.1 mrg }
658 1.1 mrg while ( yy_base[yy_current_state] != 49 );
659 1.1 mrg
660 1.1 mrg yy_find_action:
661 1.1 mrg yy_act = yy_accept[yy_current_state];
662 1.1 mrg if ( yy_act == 0 )
663 1.1 mrg { /* have to back up */
664 1.1.1.3 mrg yy_cp = yy_last_accepting_cpos;
665 1.1.1.3 mrg yy_current_state = yy_last_accepting_state;
666 1.1 mrg yy_act = yy_accept[yy_current_state];
667 1.1 mrg }
668 1.1 mrg
669 1.1 mrg YY_DO_BEFORE_ACTION;
670 1.1 mrg
671 1.1.1.3 mrg
672 1.1 mrg do_action: /* This label is used only to access EOF actions. */
673 1.1 mrg
674 1.1.1.3 mrg
675 1.1 mrg switch ( yy_act )
676 1.1 mrg { /* beginning of action switch */
677 1.1 mrg case 0: /* must back up */
678 1.1 mrg /* undo the effects of YY_DO_BEFORE_ACTION */
679 1.1.1.3 mrg *yy_cp = yy_hold_char;
680 1.1.1.3 mrg yy_cp = yy_last_accepting_cpos;
681 1.1.1.3 mrg yy_current_state = yy_last_accepting_state;
682 1.1 mrg goto yy_find_action;
683 1.1 mrg
684 1.1 mrg case 1:
685 1.1 mrg YY_RULE_SETUP
686 1.1.1.3 mrg #line 59 "../../../gmp/demos/calc/calclex.l"
687 1.1 mrg { /* white space is skipped */ }
688 1.1 mrg YY_BREAK
689 1.1 mrg case 2:
690 1.1 mrg YY_RULE_SETUP
691 1.1.1.3 mrg #line 61 "../../../gmp/demos/calc/calclex.l"
692 1.1 mrg { /* semicolon or newline separates statements */
693 1.1 mrg calc_more_input = 0;
694 1.1 mrg return EOS; }
695 1.1 mrg YY_BREAK
696 1.1 mrg case 3:
697 1.1 mrg YY_RULE_SETUP
698 1.1.1.3 mrg #line 64 "../../../gmp/demos/calc/calclex.l"
699 1.1 mrg { /* escaped newlines are skipped */ }
700 1.1 mrg YY_BREAK
701 1.1 mrg case 4:
702 1.1 mrg YY_RULE_SETUP
703 1.1.1.3 mrg #line 67 "../../../gmp/demos/calc/calclex.l"
704 1.1 mrg {
705 1.1 mrg /* comment through to escaped newline is skipped */ }
706 1.1 mrg YY_BREAK
707 1.1 mrg case 5:
708 1.1 mrg YY_RULE_SETUP
709 1.1.1.3 mrg #line 69 "../../../gmp/demos/calc/calclex.l"
710 1.1 mrg { /* comment through to newline is a separator */
711 1.1 mrg calc_more_input = 0;
712 1.1 mrg return EOS; }
713 1.1 mrg YY_BREAK
714 1.1 mrg case 6:
715 1.1 mrg YY_RULE_SETUP
716 1.1.1.3 mrg #line 72 "../../../gmp/demos/calc/calclex.l"
717 1.1 mrg { /* comment through to EOF skipped */ }
718 1.1 mrg YY_BREAK
719 1.1 mrg case 7:
720 1.1 mrg YY_RULE_SETUP
721 1.1.1.3 mrg #line 75 "../../../gmp/demos/calc/calclex.l"
722 1.1 mrg { return yytext[0]; }
723 1.1 mrg YY_BREAK
724 1.1 mrg case 8:
725 1.1 mrg YY_RULE_SETUP
726 1.1.1.3 mrg #line 76 "../../../gmp/demos/calc/calclex.l"
727 1.1 mrg { return LE; }
728 1.1 mrg YY_BREAK
729 1.1 mrg case 9:
730 1.1 mrg YY_RULE_SETUP
731 1.1.1.3 mrg #line 77 "../../../gmp/demos/calc/calclex.l"
732 1.1 mrg { return GE; }
733 1.1 mrg YY_BREAK
734 1.1 mrg case 10:
735 1.1 mrg YY_RULE_SETUP
736 1.1.1.3 mrg #line 78 "../../../gmp/demos/calc/calclex.l"
737 1.1 mrg { return EQ; }
738 1.1 mrg YY_BREAK
739 1.1 mrg case 11:
740 1.1 mrg YY_RULE_SETUP
741 1.1.1.3 mrg #line 79 "../../../gmp/demos/calc/calclex.l"
742 1.1 mrg { return NE; }
743 1.1 mrg YY_BREAK
744 1.1 mrg case 12:
745 1.1 mrg YY_RULE_SETUP
746 1.1.1.3 mrg #line 80 "../../../gmp/demos/calc/calclex.l"
747 1.1 mrg { return LSHIFT; }
748 1.1 mrg YY_BREAK
749 1.1 mrg case 13:
750 1.1 mrg YY_RULE_SETUP
751 1.1.1.3 mrg #line 81 "../../../gmp/demos/calc/calclex.l"
752 1.1 mrg { return RSHIFT; }
753 1.1 mrg YY_BREAK
754 1.1 mrg case 14:
755 1.1 mrg YY_RULE_SETUP
756 1.1.1.3 mrg #line 82 "../../../gmp/demos/calc/calclex.l"
757 1.1 mrg { return LAND; }
758 1.1 mrg YY_BREAK
759 1.1 mrg case 15:
760 1.1 mrg YY_RULE_SETUP
761 1.1.1.3 mrg #line 83 "../../../gmp/demos/calc/calclex.l"
762 1.1 mrg { return LOR; }
763 1.1 mrg YY_BREAK
764 1.1 mrg case 16:
765 1.1 mrg YY_RULE_SETUP
766 1.1.1.3 mrg #line 85 "../../../gmp/demos/calc/calclex.l"
767 1.1 mrg {
768 1.1 mrg yylval.str = yytext;
769 1.1 mrg return NUMBER; }
770 1.1 mrg YY_BREAK
771 1.1 mrg case 17:
772 1.1 mrg YY_RULE_SETUP
773 1.1.1.3 mrg #line 89 "../../../gmp/demos/calc/calclex.l"
774 1.1 mrg {
775 1.1 mrg int i;
776 1.1 mrg
777 1.1 mrg for (i = 0; calc_keywords[i].name != NULL; i++)
778 1.1 mrg if (strcmp (yytext, calc_keywords[i].name) == 0)
779 1.1 mrg return calc_keywords[i].value;
780 1.1 mrg
781 1.1 mrg if (yytext[0] >= 'a' && yytext[0] <= 'z' && yytext[1] == '\0')
782 1.1 mrg {
783 1.1 mrg yylval.var = yytext[0] - 'a';
784 1.1 mrg return VARIABLE;
785 1.1 mrg }
786 1.1 mrg
787 1.1 mrg return BAD;
788 1.1 mrg }
789 1.1 mrg YY_BREAK
790 1.1 mrg case 18:
791 1.1 mrg YY_RULE_SETUP
792 1.1.1.3 mrg #line 105 "../../../gmp/demos/calc/calclex.l"
793 1.1 mrg { return BAD; }
794 1.1 mrg YY_BREAK
795 1.1 mrg case 19:
796 1.1 mrg YY_RULE_SETUP
797 1.1.1.3 mrg #line 107 "../../../gmp/demos/calc/calclex.l"
798 1.1 mrg ECHO;
799 1.1 mrg YY_BREAK
800 1.1.1.3 mrg #line 801 "calclex.c"
801 1.1 mrg case YY_STATE_EOF(INITIAL):
802 1.1 mrg yyterminate();
803 1.1 mrg
804 1.1 mrg case YY_END_OF_BUFFER:
805 1.1 mrg {
806 1.1 mrg /* Amount of text matched not including the EOB char. */
807 1.1.1.3 mrg int yy_amount_of_matched_text = (int) (yy_cp - yytext_ptr) - 1;
808 1.1 mrg
809 1.1 mrg /* Undo the effects of YY_DO_BEFORE_ACTION. */
810 1.1.1.3 mrg *yy_cp = yy_hold_char;
811 1.1 mrg YY_RESTORE_YY_MORE_OFFSET
812 1.1 mrg
813 1.1.1.3 mrg if ( yy_current_buffer->yy_buffer_status == YY_BUFFER_NEW )
814 1.1 mrg {
815 1.1 mrg /* We're scanning a new file or input source. It's
816 1.1 mrg * possible that this happened because the user
817 1.1 mrg * just pointed yyin at a new source and called
818 1.1 mrg * yylex(). If so, then we have to assure
819 1.1.1.3 mrg * consistency between yy_current_buffer and our
820 1.1 mrg * globals. Here is the right place to do so, because
821 1.1 mrg * this is the first action (other than possibly a
822 1.1 mrg * back-up) that will match for the new input source.
823 1.1 mrg */
824 1.1.1.3 mrg yy_n_chars = yy_current_buffer->yy_n_chars;
825 1.1.1.3 mrg yy_current_buffer->yy_input_file = yyin;
826 1.1.1.3 mrg yy_current_buffer->yy_buffer_status = YY_BUFFER_NORMAL;
827 1.1 mrg }
828 1.1 mrg
829 1.1 mrg /* Note that here we test for yy_c_buf_p "<=" to the position
830 1.1 mrg * of the first EOB in the buffer, since yy_c_buf_p will
831 1.1 mrg * already have been incremented past the NUL character
832 1.1 mrg * (since all states make transitions on EOB to the
833 1.1 mrg * end-of-buffer state). Contrast this with the test
834 1.1 mrg * in input().
835 1.1 mrg */
836 1.1.1.3 mrg if ( yy_c_buf_p <= &yy_current_buffer->yy_ch_buf[yy_n_chars] )
837 1.1 mrg { /* This was really a NUL. */
838 1.1 mrg yy_state_type yy_next_state;
839 1.1 mrg
840 1.1.1.3 mrg yy_c_buf_p = yytext_ptr + yy_amount_of_matched_text;
841 1.1 mrg
842 1.1.1.3 mrg yy_current_state = yy_get_previous_state();
843 1.1 mrg
844 1.1 mrg /* Okay, we're now positioned to make the NUL
845 1.1 mrg * transition. We couldn't have
846 1.1 mrg * yy_get_previous_state() go ahead and do it
847 1.1 mrg * for us because it doesn't know how to deal
848 1.1 mrg * with the possibility of jamming (and we don't
849 1.1 mrg * want to build jamming into it because then it
850 1.1 mrg * will run more slowly).
851 1.1 mrg */
852 1.1 mrg
853 1.1 mrg yy_next_state = yy_try_NUL_trans( yy_current_state );
854 1.1 mrg
855 1.1.1.3 mrg yy_bp = yytext_ptr + YY_MORE_ADJ;
856 1.1 mrg
857 1.1 mrg if ( yy_next_state )
858 1.1 mrg {
859 1.1 mrg /* Consume the NUL. */
860 1.1.1.3 mrg yy_cp = ++yy_c_buf_p;
861 1.1 mrg yy_current_state = yy_next_state;
862 1.1 mrg goto yy_match;
863 1.1 mrg }
864 1.1 mrg
865 1.1 mrg else
866 1.1 mrg {
867 1.1.1.3 mrg yy_cp = yy_c_buf_p;
868 1.1 mrg goto yy_find_action;
869 1.1 mrg }
870 1.1 mrg }
871 1.1 mrg
872 1.1.1.3 mrg else switch ( yy_get_next_buffer() )
873 1.1 mrg {
874 1.1 mrg case EOB_ACT_END_OF_FILE:
875 1.1 mrg {
876 1.1.1.3 mrg yy_did_buffer_switch_on_eof = 0;
877 1.1 mrg
878 1.1.1.3 mrg if ( yywrap() )
879 1.1 mrg {
880 1.1 mrg /* Note: because we've taken care in
881 1.1 mrg * yy_get_next_buffer() to have set up
882 1.1 mrg * yytext, we can now set up
883 1.1 mrg * yy_c_buf_p so that if some total
884 1.1 mrg * hoser (like flex itself) wants to
885 1.1 mrg * call the scanner after we return the
886 1.1 mrg * YY_NULL, it'll still work - another
887 1.1 mrg * YY_NULL will get returned.
888 1.1 mrg */
889 1.1.1.3 mrg yy_c_buf_p = yytext_ptr + YY_MORE_ADJ;
890 1.1 mrg
891 1.1 mrg yy_act = YY_STATE_EOF(YY_START);
892 1.1 mrg goto do_action;
893 1.1 mrg }
894 1.1 mrg
895 1.1 mrg else
896 1.1 mrg {
897 1.1.1.3 mrg if ( ! yy_did_buffer_switch_on_eof )
898 1.1 mrg YY_NEW_FILE;
899 1.1 mrg }
900 1.1 mrg break;
901 1.1 mrg }
902 1.1 mrg
903 1.1 mrg case EOB_ACT_CONTINUE_SCAN:
904 1.1.1.3 mrg yy_c_buf_p =
905 1.1.1.3 mrg yytext_ptr + yy_amount_of_matched_text;
906 1.1 mrg
907 1.1.1.3 mrg yy_current_state = yy_get_previous_state();
908 1.1 mrg
909 1.1.1.3 mrg yy_cp = yy_c_buf_p;
910 1.1.1.3 mrg yy_bp = yytext_ptr + YY_MORE_ADJ;
911 1.1 mrg goto yy_match;
912 1.1 mrg
913 1.1 mrg case EOB_ACT_LAST_MATCH:
914 1.1.1.3 mrg yy_c_buf_p =
915 1.1.1.3 mrg &yy_current_buffer->yy_ch_buf[yy_n_chars];
916 1.1 mrg
917 1.1.1.3 mrg yy_current_state = yy_get_previous_state();
918 1.1 mrg
919 1.1.1.3 mrg yy_cp = yy_c_buf_p;
920 1.1.1.3 mrg yy_bp = yytext_ptr + YY_MORE_ADJ;
921 1.1 mrg goto yy_find_action;
922 1.1 mrg }
923 1.1 mrg break;
924 1.1 mrg }
925 1.1 mrg
926 1.1 mrg default:
927 1.1 mrg YY_FATAL_ERROR(
928 1.1 mrg "fatal flex scanner internal error--no action found" );
929 1.1 mrg } /* end of action switch */
930 1.1 mrg } /* end of scanning one token */
931 1.1.1.3 mrg } /* end of yylex */
932 1.1.1.3 mrg
933 1.1 mrg
934 1.1 mrg /* yy_get_next_buffer - try to read in a new buffer
935 1.1 mrg *
936 1.1 mrg * Returns a code representing an action:
937 1.1 mrg * EOB_ACT_LAST_MATCH -
938 1.1 mrg * EOB_ACT_CONTINUE_SCAN - continue scanning from current position
939 1.1 mrg * EOB_ACT_END_OF_FILE - end of file
940 1.1 mrg */
941 1.1.1.3 mrg
942 1.1.1.3 mrg #ifdef YY_USE_PROTOS
943 1.1.1.3 mrg static int yy_get_next_buffer(void)
944 1.1.1.3 mrg #else
945 1.1.1.3 mrg static int yy_get_next_buffer()
946 1.1.1.3 mrg #endif
947 1.1.1.3 mrg {
948 1.1.1.3 mrg char *dest = yy_current_buffer->yy_ch_buf;
949 1.1.1.3 mrg char *source = yytext_ptr;
950 1.1.1.3 mrg int number_to_move, i;
951 1.1 mrg int ret_val;
952 1.1 mrg
953 1.1.1.3 mrg if ( yy_c_buf_p > &yy_current_buffer->yy_ch_buf[yy_n_chars + 1] )
954 1.1 mrg YY_FATAL_ERROR(
955 1.1 mrg "fatal flex scanner internal error--end of buffer missed" );
956 1.1 mrg
957 1.1.1.3 mrg if ( yy_current_buffer->yy_fill_buffer == 0 )
958 1.1 mrg { /* Don't try to fill the buffer, so this is an EOF. */
959 1.1.1.3 mrg if ( yy_c_buf_p - yytext_ptr - YY_MORE_ADJ == 1 )
960 1.1 mrg {
961 1.1 mrg /* We matched a single character, the EOB, so
962 1.1 mrg * treat this as a final EOF.
963 1.1 mrg */
964 1.1 mrg return EOB_ACT_END_OF_FILE;
965 1.1 mrg }
966 1.1 mrg
967 1.1 mrg else
968 1.1 mrg {
969 1.1 mrg /* We matched some text prior to the EOB, first
970 1.1 mrg * process it.
971 1.1 mrg */
972 1.1 mrg return EOB_ACT_LAST_MATCH;
973 1.1 mrg }
974 1.1 mrg }
975 1.1 mrg
976 1.1 mrg /* Try to read more data. */
977 1.1 mrg
978 1.1 mrg /* First move last chars to start of buffer. */
979 1.1.1.3 mrg number_to_move = (int) (yy_c_buf_p - yytext_ptr) - 1;
980 1.1 mrg
981 1.1 mrg for ( i = 0; i < number_to_move; ++i )
982 1.1 mrg *(dest++) = *(source++);
983 1.1 mrg
984 1.1.1.3 mrg if ( yy_current_buffer->yy_buffer_status == YY_BUFFER_EOF_PENDING )
985 1.1 mrg /* don't do the read, it's not guaranteed to return an EOF,
986 1.1 mrg * just force an EOF
987 1.1 mrg */
988 1.1.1.3 mrg yy_current_buffer->yy_n_chars = yy_n_chars = 0;
989 1.1 mrg
990 1.1 mrg else
991 1.1 mrg {
992 1.1.1.3 mrg int num_to_read =
993 1.1.1.3 mrg yy_current_buffer->yy_buf_size - number_to_move - 1;
994 1.1 mrg
995 1.1 mrg while ( num_to_read <= 0 )
996 1.1 mrg { /* Not enough room in the buffer - grow it. */
997 1.1.1.3 mrg #ifdef YY_USES_REJECT
998 1.1.1.3 mrg YY_FATAL_ERROR(
999 1.1.1.3 mrg "input buffer overflow, can't enlarge buffer because scanner uses REJECT" );
1000 1.1.1.3 mrg #else
1001 1.1 mrg
1002 1.1 mrg /* just a shorter name for the current buffer */
1003 1.1.1.3 mrg YY_BUFFER_STATE b = yy_current_buffer;
1004 1.1 mrg
1005 1.1 mrg int yy_c_buf_p_offset =
1006 1.1.1.3 mrg (int) (yy_c_buf_p - b->yy_ch_buf);
1007 1.1 mrg
1008 1.1 mrg if ( b->yy_is_our_buffer )
1009 1.1 mrg {
1010 1.1.1.3 mrg int new_size = b->yy_buf_size * 2;
1011 1.1 mrg
1012 1.1 mrg if ( new_size <= 0 )
1013 1.1 mrg b->yy_buf_size += b->yy_buf_size / 8;
1014 1.1 mrg else
1015 1.1 mrg b->yy_buf_size *= 2;
1016 1.1 mrg
1017 1.1 mrg b->yy_ch_buf = (char *)
1018 1.1 mrg /* Include room in for 2 EOB chars. */
1019 1.1.1.3 mrg yy_flex_realloc( (void *) b->yy_ch_buf,
1020 1.1.1.3 mrg b->yy_buf_size + 2 );
1021 1.1 mrg }
1022 1.1 mrg else
1023 1.1 mrg /* Can't grow it, we don't own it. */
1024 1.1 mrg b->yy_ch_buf = 0;
1025 1.1 mrg
1026 1.1 mrg if ( ! b->yy_ch_buf )
1027 1.1 mrg YY_FATAL_ERROR(
1028 1.1 mrg "fatal error - scanner input buffer overflow" );
1029 1.1 mrg
1030 1.1.1.3 mrg yy_c_buf_p = &b->yy_ch_buf[yy_c_buf_p_offset];
1031 1.1 mrg
1032 1.1.1.3 mrg num_to_read = yy_current_buffer->yy_buf_size -
1033 1.1 mrg number_to_move - 1;
1034 1.1.1.3 mrg #endif
1035 1.1 mrg }
1036 1.1 mrg
1037 1.1 mrg if ( num_to_read > YY_READ_BUF_SIZE )
1038 1.1 mrg num_to_read = YY_READ_BUF_SIZE;
1039 1.1 mrg
1040 1.1 mrg /* Read in more data. */
1041 1.1.1.3 mrg YY_INPUT( (&yy_current_buffer->yy_ch_buf[number_to_move]),
1042 1.1.1.3 mrg yy_n_chars, num_to_read );
1043 1.1 mrg
1044 1.1.1.3 mrg yy_current_buffer->yy_n_chars = yy_n_chars;
1045 1.1 mrg }
1046 1.1 mrg
1047 1.1.1.3 mrg if ( yy_n_chars == 0 )
1048 1.1 mrg {
1049 1.1 mrg if ( number_to_move == YY_MORE_ADJ )
1050 1.1 mrg {
1051 1.1 mrg ret_val = EOB_ACT_END_OF_FILE;
1052 1.1.1.3 mrg yyrestart( yyin );
1053 1.1 mrg }
1054 1.1 mrg
1055 1.1 mrg else
1056 1.1 mrg {
1057 1.1 mrg ret_val = EOB_ACT_LAST_MATCH;
1058 1.1.1.3 mrg yy_current_buffer->yy_buffer_status =
1059 1.1 mrg YY_BUFFER_EOF_PENDING;
1060 1.1 mrg }
1061 1.1 mrg }
1062 1.1 mrg
1063 1.1 mrg else
1064 1.1 mrg ret_val = EOB_ACT_CONTINUE_SCAN;
1065 1.1 mrg
1066 1.1.1.3 mrg yy_n_chars += number_to_move;
1067 1.1.1.3 mrg yy_current_buffer->yy_ch_buf[yy_n_chars] = YY_END_OF_BUFFER_CHAR;
1068 1.1.1.3 mrg yy_current_buffer->yy_ch_buf[yy_n_chars + 1] = YY_END_OF_BUFFER_CHAR;
1069 1.1 mrg
1070 1.1.1.3 mrg yytext_ptr = &yy_current_buffer->yy_ch_buf[0];
1071 1.1 mrg
1072 1.1 mrg return ret_val;
1073 1.1.1.3 mrg }
1074 1.1.1.3 mrg
1075 1.1 mrg
1076 1.1 mrg /* yy_get_previous_state - get the state just before the EOB char was reached */
1077 1.1 mrg
1078 1.1.1.3 mrg #ifdef YY_USE_PROTOS
1079 1.1.1.3 mrg static yy_state_type yy_get_previous_state(void)
1080 1.1.1.3 mrg #else
1081 1.1.1.3 mrg static yy_state_type yy_get_previous_state()
1082 1.1.1.3 mrg #endif
1083 1.1.1.3 mrg {
1084 1.1.1.3 mrg yy_state_type yy_current_state;
1085 1.1.1.3 mrg char *yy_cp;
1086 1.1 mrg
1087 1.1.1.3 mrg yy_current_state = yy_start;
1088 1.1.1.3 mrg
1089 1.1.1.3 mrg for ( yy_cp = yytext_ptr + YY_MORE_ADJ; yy_cp < yy_c_buf_p; ++yy_cp )
1090 1.1 mrg {
1091 1.1.1.3 mrg YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
1092 1.1 mrg if ( yy_accept[yy_current_state] )
1093 1.1 mrg {
1094 1.1.1.3 mrg yy_last_accepting_state = yy_current_state;
1095 1.1.1.3 mrg yy_last_accepting_cpos = yy_cp;
1096 1.1 mrg }
1097 1.1 mrg while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
1098 1.1 mrg {
1099 1.1 mrg yy_current_state = (int) yy_def[yy_current_state];
1100 1.1 mrg if ( yy_current_state >= 39 )
1101 1.1 mrg yy_c = yy_meta[(unsigned int) yy_c];
1102 1.1 mrg }
1103 1.1 mrg yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
1104 1.1 mrg }
1105 1.1 mrg
1106 1.1 mrg return yy_current_state;
1107 1.1.1.3 mrg }
1108 1.1.1.3 mrg
1109 1.1 mrg
1110 1.1 mrg /* yy_try_NUL_trans - try to make a transition on the NUL character
1111 1.1 mrg *
1112 1.1 mrg * synopsis
1113 1.1 mrg * next_state = yy_try_NUL_trans( current_state );
1114 1.1 mrg */
1115 1.1 mrg
1116 1.1.1.3 mrg #ifdef YY_USE_PROTOS
1117 1.1.1.3 mrg static yy_state_type yy_try_NUL_trans( yy_state_type yy_current_state )
1118 1.1.1.3 mrg #else
1119 1.1.1.3 mrg static yy_state_type yy_try_NUL_trans( yy_current_state )
1120 1.1.1.3 mrg yy_state_type yy_current_state;
1121 1.1.1.3 mrg #endif
1122 1.1.1.3 mrg {
1123 1.1.1.3 mrg int yy_is_jam;
1124 1.1.1.3 mrg char *yy_cp = yy_c_buf_p;
1125 1.1.1.3 mrg
1126 1.1.1.3 mrg YY_CHAR yy_c = 1;
1127 1.1 mrg if ( yy_accept[yy_current_state] )
1128 1.1 mrg {
1129 1.1.1.3 mrg yy_last_accepting_state = yy_current_state;
1130 1.1.1.3 mrg yy_last_accepting_cpos = yy_cp;
1131 1.1 mrg }
1132 1.1 mrg while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
1133 1.1 mrg {
1134 1.1 mrg yy_current_state = (int) yy_def[yy_current_state];
1135 1.1 mrg if ( yy_current_state >= 39 )
1136 1.1 mrg yy_c = yy_meta[(unsigned int) yy_c];
1137 1.1 mrg }
1138 1.1 mrg yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
1139 1.1 mrg yy_is_jam = (yy_current_state == 38);
1140 1.1 mrg
1141 1.1.1.3 mrg return yy_is_jam ? 0 : yy_current_state;
1142 1.1.1.3 mrg }
1143 1.1 mrg
1144 1.1.1.3 mrg
1145 1.1.1.3 mrg #ifndef YY_NO_UNPUT
1146 1.1.1.3 mrg #ifdef YY_USE_PROTOS
1147 1.1.1.3 mrg static void yyunput( int c, char *yy_bp )
1148 1.1.1.3 mrg #else
1149 1.1.1.3 mrg static void yyunput( c, yy_bp )
1150 1.1.1.3 mrg int c;
1151 1.1.1.3 mrg char *yy_bp;
1152 1.1.1.3 mrg #endif
1153 1.1.1.3 mrg {
1154 1.1.1.3 mrg char *yy_cp = yy_c_buf_p;
1155 1.1 mrg
1156 1.1 mrg /* undo effects of setting up yytext */
1157 1.1.1.3 mrg *yy_cp = yy_hold_char;
1158 1.1 mrg
1159 1.1.1.3 mrg if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 )
1160 1.1 mrg { /* need to shift things up to make room */
1161 1.1 mrg /* +2 for EOB chars. */
1162 1.1.1.3 mrg int number_to_move = yy_n_chars + 2;
1163 1.1.1.3 mrg char *dest = &yy_current_buffer->yy_ch_buf[
1164 1.1.1.3 mrg yy_current_buffer->yy_buf_size + 2];
1165 1.1.1.3 mrg char *source =
1166 1.1.1.3 mrg &yy_current_buffer->yy_ch_buf[number_to_move];
1167 1.1 mrg
1168 1.1.1.3 mrg while ( source > yy_current_buffer->yy_ch_buf )
1169 1.1 mrg *--dest = *--source;
1170 1.1 mrg
1171 1.1 mrg yy_cp += (int) (dest - source);
1172 1.1 mrg yy_bp += (int) (dest - source);
1173 1.1.1.3 mrg yy_current_buffer->yy_n_chars =
1174 1.1.1.3 mrg yy_n_chars = yy_current_buffer->yy_buf_size;
1175 1.1 mrg
1176 1.1.1.3 mrg if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 )
1177 1.1 mrg YY_FATAL_ERROR( "flex scanner push-back overflow" );
1178 1.1 mrg }
1179 1.1 mrg
1180 1.1 mrg *--yy_cp = (char) c;
1181 1.1 mrg
1182 1.1.1.3 mrg
1183 1.1.1.3 mrg yytext_ptr = yy_bp;
1184 1.1.1.3 mrg yy_hold_char = *yy_cp;
1185 1.1.1.3 mrg yy_c_buf_p = yy_cp;
1186 1.1.1.3 mrg }
1187 1.1.1.3 mrg #endif /* ifndef YY_NO_UNPUT */
1188 1.1.1.3 mrg
1189 1.1 mrg
1190 1.1 mrg #ifndef YY_NO_INPUT
1191 1.1 mrg #ifdef __cplusplus
1192 1.1.1.3 mrg static int yyinput()
1193 1.1.1.3 mrg #else
1194 1.1.1.3 mrg #ifdef YY_USE_PROTOS
1195 1.1.1.3 mrg static int input(void)
1196 1.1 mrg #else
1197 1.1.1.3 mrg static int input()
1198 1.1 mrg #endif
1199 1.1.1.3 mrg #endif
1200 1.1.1.3 mrg {
1201 1.1 mrg int c;
1202 1.1 mrg
1203 1.1.1.3 mrg *yy_c_buf_p = yy_hold_char;
1204 1.1.1.3 mrg
1205 1.1.1.3 mrg if ( *yy_c_buf_p == YY_END_OF_BUFFER_CHAR )
1206 1.1 mrg {
1207 1.1 mrg /* yy_c_buf_p now points to the character we want to return.
1208 1.1 mrg * If this occurs *before* the EOB characters, then it's a
1209 1.1 mrg * valid NUL; if not, then we've hit the end of the buffer.
1210 1.1 mrg */
1211 1.1.1.3 mrg if ( yy_c_buf_p < &yy_current_buffer->yy_ch_buf[yy_n_chars] )
1212 1.1 mrg /* This was really a NUL. */
1213 1.1.1.3 mrg *yy_c_buf_p = '\0';
1214 1.1 mrg
1215 1.1 mrg else
1216 1.1 mrg { /* need more input */
1217 1.1.1.3 mrg int offset = yy_c_buf_p - yytext_ptr;
1218 1.1.1.3 mrg ++yy_c_buf_p;
1219 1.1 mrg
1220 1.1.1.3 mrg switch ( yy_get_next_buffer() )
1221 1.1 mrg {
1222 1.1 mrg case EOB_ACT_LAST_MATCH:
1223 1.1 mrg /* This happens because yy_g_n_b()
1224 1.1 mrg * sees that we've accumulated a
1225 1.1 mrg * token and flags that we need to
1226 1.1 mrg * try matching the token before
1227 1.1 mrg * proceeding. But for input(),
1228 1.1 mrg * there's no matching to consider.
1229 1.1 mrg * So convert the EOB_ACT_LAST_MATCH
1230 1.1 mrg * to EOB_ACT_END_OF_FILE.
1231 1.1 mrg */
1232 1.1 mrg
1233 1.1 mrg /* Reset buffer status. */
1234 1.1.1.3 mrg yyrestart( yyin );
1235 1.1 mrg
1236 1.1.1.3 mrg /* fall through */
1237 1.1 mrg
1238 1.1 mrg case EOB_ACT_END_OF_FILE:
1239 1.1 mrg {
1240 1.1.1.3 mrg if ( yywrap() )
1241 1.1 mrg return EOF;
1242 1.1 mrg
1243 1.1.1.3 mrg if ( ! yy_did_buffer_switch_on_eof )
1244 1.1 mrg YY_NEW_FILE;
1245 1.1 mrg #ifdef __cplusplus
1246 1.1 mrg return yyinput();
1247 1.1 mrg #else
1248 1.1 mrg return input();
1249 1.1 mrg #endif
1250 1.1 mrg }
1251 1.1 mrg
1252 1.1 mrg case EOB_ACT_CONTINUE_SCAN:
1253 1.1.1.3 mrg yy_c_buf_p = yytext_ptr + offset;
1254 1.1 mrg break;
1255 1.1 mrg }
1256 1.1 mrg }
1257 1.1 mrg }
1258 1.1 mrg
1259 1.1.1.3 mrg c = *(unsigned char *) yy_c_buf_p; /* cast for 8-bit char's */
1260 1.1.1.3 mrg *yy_c_buf_p = '\0'; /* preserve yytext */
1261 1.1.1.3 mrg yy_hold_char = *++yy_c_buf_p;
1262 1.1.1.3 mrg
1263 1.1 mrg
1264 1.1 mrg return c;
1265 1.1.1.3 mrg }
1266 1.1 mrg #endif /* ifndef YY_NO_INPUT */
1267 1.1 mrg
1268 1.1.1.3 mrg
1269 1.1.1.3 mrg #ifdef YY_USE_PROTOS
1270 1.1.1.3 mrg void yyrestart( FILE *input_file )
1271 1.1.1.3 mrg #else
1272 1.1.1.3 mrg void yyrestart( input_file )
1273 1.1.1.3 mrg FILE *input_file;
1274 1.1.1.3 mrg #endif
1275 1.1.1.3 mrg {
1276 1.1.1.3 mrg if ( ! yy_current_buffer )
1277 1.1.1.3 mrg yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE );
1278 1.1.1.3 mrg
1279 1.1.1.3 mrg yy_init_buffer( yy_current_buffer, input_file );
1280 1.1.1.3 mrg yy_load_buffer_state();
1281 1.1 mrg }
1282 1.1 mrg
1283 1.1 mrg
1284 1.1.1.3 mrg #ifdef YY_USE_PROTOS
1285 1.1.1.3 mrg void yy_switch_to_buffer( YY_BUFFER_STATE new_buffer )
1286 1.1.1.3 mrg #else
1287 1.1.1.3 mrg void yy_switch_to_buffer( new_buffer )
1288 1.1.1.3 mrg YY_BUFFER_STATE new_buffer;
1289 1.1.1.3 mrg #endif
1290 1.1.1.3 mrg {
1291 1.1.1.3 mrg if ( yy_current_buffer == new_buffer )
1292 1.1 mrg return;
1293 1.1 mrg
1294 1.1.1.3 mrg if ( yy_current_buffer )
1295 1.1 mrg {
1296 1.1 mrg /* Flush out information for old buffer. */
1297 1.1.1.3 mrg *yy_c_buf_p = yy_hold_char;
1298 1.1.1.3 mrg yy_current_buffer->yy_buf_pos = yy_c_buf_p;
1299 1.1.1.3 mrg yy_current_buffer->yy_n_chars = yy_n_chars;
1300 1.1 mrg }
1301 1.1 mrg
1302 1.1.1.3 mrg yy_current_buffer = new_buffer;
1303 1.1.1.3 mrg yy_load_buffer_state();
1304 1.1 mrg
1305 1.1 mrg /* We don't actually know whether we did this switch during
1306 1.1 mrg * EOF (yywrap()) processing, but the only time this flag
1307 1.1 mrg * is looked at is after yywrap() is called, so it's safe
1308 1.1 mrg * to go ahead and always set it.
1309 1.1 mrg */
1310 1.1.1.3 mrg yy_did_buffer_switch_on_eof = 1;
1311 1.1.1.3 mrg }
1312 1.1 mrg
1313 1.1 mrg
1314 1.1.1.3 mrg #ifdef YY_USE_PROTOS
1315 1.1.1.3 mrg void yy_load_buffer_state( void )
1316 1.1.1.3 mrg #else
1317 1.1.1.3 mrg void yy_load_buffer_state()
1318 1.1.1.3 mrg #endif
1319 1.1.1.3 mrg {
1320 1.1.1.3 mrg yy_n_chars = yy_current_buffer->yy_n_chars;
1321 1.1.1.3 mrg yytext_ptr = yy_c_buf_p = yy_current_buffer->yy_buf_pos;
1322 1.1.1.3 mrg yyin = yy_current_buffer->yy_input_file;
1323 1.1.1.3 mrg yy_hold_char = *yy_c_buf_p;
1324 1.1.1.3 mrg }
1325 1.1.1.3 mrg
1326 1.1.1.3 mrg
1327 1.1.1.3 mrg #ifdef YY_USE_PROTOS
1328 1.1.1.3 mrg YY_BUFFER_STATE yy_create_buffer( FILE *file, int size )
1329 1.1.1.3 mrg #else
1330 1.1.1.3 mrg YY_BUFFER_STATE yy_create_buffer( file, size )
1331 1.1.1.3 mrg FILE *file;
1332 1.1.1.3 mrg int size;
1333 1.1.1.3 mrg #endif
1334 1.1.1.3 mrg {
1335 1.1 mrg YY_BUFFER_STATE b;
1336 1.1.1.3 mrg
1337 1.1.1.3 mrg b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) );
1338 1.1 mrg if ( ! b )
1339 1.1 mrg YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
1340 1.1 mrg
1341 1.1 mrg b->yy_buf_size = size;
1342 1.1 mrg
1343 1.1 mrg /* yy_ch_buf has to be 2 characters longer than the size given because
1344 1.1 mrg * we need to put in 2 end-of-buffer characters.
1345 1.1 mrg */
1346 1.1.1.3 mrg b->yy_ch_buf = (char *) yy_flex_alloc( b->yy_buf_size + 2 );
1347 1.1 mrg if ( ! b->yy_ch_buf )
1348 1.1 mrg YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
1349 1.1 mrg
1350 1.1 mrg b->yy_is_our_buffer = 1;
1351 1.1 mrg
1352 1.1.1.3 mrg yy_init_buffer( b, file );
1353 1.1 mrg
1354 1.1 mrg return b;
1355 1.1.1.3 mrg }
1356 1.1 mrg
1357 1.1.1.3 mrg
1358 1.1.1.3 mrg #ifdef YY_USE_PROTOS
1359 1.1.1.3 mrg void yy_delete_buffer( YY_BUFFER_STATE b )
1360 1.1.1.3 mrg #else
1361 1.1.1.3 mrg void yy_delete_buffer( b )
1362 1.1.1.3 mrg YY_BUFFER_STATE b;
1363 1.1.1.3 mrg #endif
1364 1.1.1.3 mrg {
1365 1.1 mrg if ( ! b )
1366 1.1 mrg return;
1367 1.1 mrg
1368 1.1.1.3 mrg if ( b == yy_current_buffer )
1369 1.1.1.3 mrg yy_current_buffer = (YY_BUFFER_STATE) 0;
1370 1.1 mrg
1371 1.1 mrg if ( b->yy_is_our_buffer )
1372 1.1.1.3 mrg yy_flex_free( (void *) b->yy_ch_buf );
1373 1.1 mrg
1374 1.1.1.3 mrg yy_flex_free( (void *) b );
1375 1.1.1.3 mrg }
1376 1.1 mrg
1377 1.1 mrg
1378 1.1.1.3 mrg #ifndef YY_ALWAYS_INTERACTIVE
1379 1.1.1.3 mrg #ifndef YY_NEVER_INTERACTIVE
1380 1.1.1.3 mrg extern int isatty YY_PROTO(( int ));
1381 1.1.1.3 mrg #endif
1382 1.1.1.3 mrg #endif
1383 1.1.1.3 mrg
1384 1.1.1.3 mrg #ifdef YY_USE_PROTOS
1385 1.1.1.3 mrg void yy_init_buffer( YY_BUFFER_STATE b, FILE *file )
1386 1.1.1.3 mrg #else
1387 1.1.1.3 mrg void yy_init_buffer( b, file )
1388 1.1.1.3 mrg YY_BUFFER_STATE b;
1389 1.1.1.3 mrg FILE *file;
1390 1.1.1.3 mrg #endif
1391 1.1.1.3 mrg
1392 1.1.1.3 mrg
1393 1.1.1.3 mrg {
1394 1.1.1.3 mrg yy_flush_buffer( b );
1395 1.1 mrg
1396 1.1 mrg b->yy_input_file = file;
1397 1.1 mrg b->yy_fill_buffer = 1;
1398 1.1 mrg
1399 1.1.1.3 mrg #if YY_ALWAYS_INTERACTIVE
1400 1.1.1.3 mrg b->yy_is_interactive = 1;
1401 1.1.1.3 mrg #else
1402 1.1.1.3 mrg #if YY_NEVER_INTERACTIVE
1403 1.1.1.3 mrg b->yy_is_interactive = 0;
1404 1.1.1.3 mrg #else
1405 1.1.1.3 mrg b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0;
1406 1.1.1.3 mrg #endif
1407 1.1.1.3 mrg #endif
1408 1.1.1.3 mrg }
1409 1.1 mrg
1410 1.1.1.3 mrg
1411 1.1.1.3 mrg #ifdef YY_USE_PROTOS
1412 1.1.1.3 mrg void yy_flush_buffer( YY_BUFFER_STATE b )
1413 1.1.1.3 mrg #else
1414 1.1.1.3 mrg void yy_flush_buffer( b )
1415 1.1.1.3 mrg YY_BUFFER_STATE b;
1416 1.1.1.3 mrg #endif
1417 1.1.1.3 mrg
1418 1.1.1.3 mrg {
1419 1.1.1.3 mrg if ( ! b )
1420 1.1 mrg return;
1421 1.1 mrg
1422 1.1 mrg b->yy_n_chars = 0;
1423 1.1 mrg
1424 1.1 mrg /* We always need two end-of-buffer characters. The first causes
1425 1.1 mrg * a transition to the end-of-buffer state. The second causes
1426 1.1 mrg * a jam in that state.
1427 1.1 mrg */
1428 1.1 mrg b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;
1429 1.1 mrg b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;
1430 1.1 mrg
1431 1.1 mrg b->yy_buf_pos = &b->yy_ch_buf[0];
1432 1.1 mrg
1433 1.1 mrg b->yy_at_bol = 1;
1434 1.1 mrg b->yy_buffer_status = YY_BUFFER_NEW;
1435 1.1 mrg
1436 1.1.1.3 mrg if ( b == yy_current_buffer )
1437 1.1.1.3 mrg yy_load_buffer_state();
1438 1.1 mrg }
1439 1.1 mrg
1440 1.1 mrg
1441 1.1.1.3 mrg #ifndef YY_NO_SCAN_BUFFER
1442 1.1.1.3 mrg #ifdef YY_USE_PROTOS
1443 1.1.1.3 mrg YY_BUFFER_STATE yy_scan_buffer( char *base, yy_size_t size )
1444 1.1.1.3 mrg #else
1445 1.1.1.3 mrg YY_BUFFER_STATE yy_scan_buffer( base, size )
1446 1.1.1.3 mrg char *base;
1447 1.1.1.3 mrg yy_size_t size;
1448 1.1.1.3 mrg #endif
1449 1.1.1.3 mrg {
1450 1.1 mrg YY_BUFFER_STATE b;
1451 1.1.1.3 mrg
1452 1.1 mrg if ( size < 2 ||
1453 1.1 mrg base[size-2] != YY_END_OF_BUFFER_CHAR ||
1454 1.1 mrg base[size-1] != YY_END_OF_BUFFER_CHAR )
1455 1.1 mrg /* They forgot to leave room for the EOB's. */
1456 1.1 mrg return 0;
1457 1.1 mrg
1458 1.1.1.3 mrg b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) );
1459 1.1 mrg if ( ! b )
1460 1.1 mrg YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" );
1461 1.1 mrg
1462 1.1 mrg b->yy_buf_size = size - 2; /* "- 2" to take care of EOB's */
1463 1.1 mrg b->yy_buf_pos = b->yy_ch_buf = base;
1464 1.1 mrg b->yy_is_our_buffer = 0;
1465 1.1 mrg b->yy_input_file = 0;
1466 1.1 mrg b->yy_n_chars = b->yy_buf_size;
1467 1.1 mrg b->yy_is_interactive = 0;
1468 1.1 mrg b->yy_at_bol = 1;
1469 1.1 mrg b->yy_fill_buffer = 0;
1470 1.1 mrg b->yy_buffer_status = YY_BUFFER_NEW;
1471 1.1 mrg
1472 1.1.1.3 mrg yy_switch_to_buffer( b );
1473 1.1 mrg
1474 1.1 mrg return b;
1475 1.1.1.3 mrg }
1476 1.1.1.3 mrg #endif
1477 1.1 mrg
1478 1.1 mrg
1479 1.1.1.3 mrg #ifndef YY_NO_SCAN_STRING
1480 1.1.1.3 mrg #ifdef YY_USE_PROTOS
1481 1.1.1.3 mrg YY_BUFFER_STATE yy_scan_string( yyconst char *yy_str )
1482 1.1.1.3 mrg #else
1483 1.1.1.3 mrg YY_BUFFER_STATE yy_scan_string( yy_str )
1484 1.1.1.3 mrg yyconst char *yy_str;
1485 1.1.1.3 mrg #endif
1486 1.1.1.3 mrg {
1487 1.1.1.3 mrg int len;
1488 1.1.1.3 mrg for ( len = 0; yy_str[len]; ++len )
1489 1.1.1.3 mrg ;
1490 1.1.1.3 mrg
1491 1.1.1.3 mrg return yy_scan_bytes( yy_str, len );
1492 1.1.1.3 mrg }
1493 1.1.1.3 mrg #endif
1494 1.1.1.3 mrg
1495 1.1.1.3 mrg
1496 1.1.1.3 mrg #ifndef YY_NO_SCAN_BYTES
1497 1.1.1.3 mrg #ifdef YY_USE_PROTOS
1498 1.1.1.3 mrg YY_BUFFER_STATE yy_scan_bytes( yyconst char *bytes, int len )
1499 1.1.1.3 mrg #else
1500 1.1.1.3 mrg YY_BUFFER_STATE yy_scan_bytes( bytes, len )
1501 1.1.1.3 mrg yyconst char *bytes;
1502 1.1.1.3 mrg int len;
1503 1.1.1.3 mrg #endif
1504 1.1.1.3 mrg {
1505 1.1 mrg YY_BUFFER_STATE b;
1506 1.1 mrg char *buf;
1507 1.1 mrg yy_size_t n;
1508 1.1 mrg int i;
1509 1.1.1.3 mrg
1510 1.1 mrg /* Get memory for full buffer, including space for trailing EOB's. */
1511 1.1.1.3 mrg n = len + 2;
1512 1.1.1.3 mrg buf = (char *) yy_flex_alloc( n );
1513 1.1 mrg if ( ! buf )
1514 1.1 mrg YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" );
1515 1.1 mrg
1516 1.1.1.3 mrg for ( i = 0; i < len; ++i )
1517 1.1.1.3 mrg buf[i] = bytes[i];
1518 1.1 mrg
1519 1.1.1.3 mrg buf[len] = buf[len+1] = YY_END_OF_BUFFER_CHAR;
1520 1.1 mrg
1521 1.1.1.3 mrg b = yy_scan_buffer( buf, n );
1522 1.1 mrg if ( ! b )
1523 1.1 mrg YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" );
1524 1.1 mrg
1525 1.1 mrg /* It's okay to grow etc. this buffer, and we should throw it
1526 1.1 mrg * away when we're done.
1527 1.1 mrg */
1528 1.1 mrg b->yy_is_our_buffer = 1;
1529 1.1 mrg
1530 1.1 mrg return b;
1531 1.1.1.3 mrg }
1532 1.1.1.3 mrg #endif
1533 1.1 mrg
1534 1.1.1.3 mrg
1535 1.1.1.3 mrg #ifndef YY_NO_PUSH_STATE
1536 1.1.1.3 mrg #ifdef YY_USE_PROTOS
1537 1.1.1.3 mrg static void yy_push_state( int new_state )
1538 1.1.1.3 mrg #else
1539 1.1.1.3 mrg static void yy_push_state( new_state )
1540 1.1.1.3 mrg int new_state;
1541 1.1 mrg #endif
1542 1.1.1.3 mrg {
1543 1.1.1.3 mrg if ( yy_start_stack_ptr >= yy_start_stack_depth )
1544 1.1.1.3 mrg {
1545 1.1.1.3 mrg yy_size_t new_size;
1546 1.1 mrg
1547 1.1.1.3 mrg yy_start_stack_depth += YY_START_STACK_INCR;
1548 1.1.1.3 mrg new_size = yy_start_stack_depth * sizeof( int );
1549 1.1 mrg
1550 1.1.1.3 mrg if ( ! yy_start_stack )
1551 1.1.1.3 mrg yy_start_stack = (int *) yy_flex_alloc( new_size );
1552 1.1 mrg
1553 1.1.1.3 mrg else
1554 1.1.1.3 mrg yy_start_stack = (int *) yy_flex_realloc(
1555 1.1.1.3 mrg (void *) yy_start_stack, new_size );
1556 1.1 mrg
1557 1.1.1.3 mrg if ( ! yy_start_stack )
1558 1.1.1.3 mrg YY_FATAL_ERROR(
1559 1.1.1.3 mrg "out of memory expanding start-condition stack" );
1560 1.1.1.3 mrg }
1561 1.1 mrg
1562 1.1.1.3 mrg yy_start_stack[yy_start_stack_ptr++] = YY_START;
1563 1.1 mrg
1564 1.1.1.3 mrg BEGIN(new_state);
1565 1.1.1.3 mrg }
1566 1.1.1.3 mrg #endif
1567 1.1 mrg
1568 1.1 mrg
1569 1.1.1.3 mrg #ifndef YY_NO_POP_STATE
1570 1.1.1.3 mrg #ifdef YY_USE_PROTOS
1571 1.1.1.3 mrg static void yy_pop_state(void)
1572 1.1.1.3 mrg #else
1573 1.1.1.3 mrg static void yy_pop_state()
1574 1.1.1.3 mrg #endif
1575 1.1.1.3 mrg {
1576 1.1.1.3 mrg if ( --yy_start_stack_ptr < 0 )
1577 1.1.1.3 mrg YY_FATAL_ERROR( "start-condition stack underflow" );
1578 1.1 mrg
1579 1.1.1.3 mrg BEGIN(yy_start_stack[yy_start_stack_ptr]);
1580 1.1.1.3 mrg }
1581 1.1.1.3 mrg #endif
1582 1.1 mrg
1583 1.1 mrg
1584 1.1.1.3 mrg #ifndef YY_NO_TOP_STATE
1585 1.1.1.3 mrg #ifdef YY_USE_PROTOS
1586 1.1.1.3 mrg static int yy_top_state(void)
1587 1.1.1.3 mrg #else
1588 1.1.1.3 mrg static int yy_top_state()
1589 1.1.1.3 mrg #endif
1590 1.1.1.3 mrg {
1591 1.1.1.3 mrg return yy_start_stack[yy_start_stack_ptr - 1];
1592 1.1.1.3 mrg }
1593 1.1.1.3 mrg #endif
1594 1.1 mrg
1595 1.1.1.3 mrg #ifndef YY_EXIT_FAILURE
1596 1.1.1.3 mrg #define YY_EXIT_FAILURE 2
1597 1.1.1.3 mrg #endif
1598 1.1 mrg
1599 1.1.1.3 mrg #ifdef YY_USE_PROTOS
1600 1.1.1.3 mrg static void yy_fatal_error( yyconst char msg[] )
1601 1.1.1.3 mrg #else
1602 1.1.1.3 mrg static void yy_fatal_error( msg )
1603 1.1.1.3 mrg char msg[];
1604 1.1.1.3 mrg #endif
1605 1.1.1.3 mrg {
1606 1.1.1.3 mrg (void) fprintf( stderr, "%s\n", msg );
1607 1.1.1.3 mrg exit( YY_EXIT_FAILURE );
1608 1.1.1.3 mrg }
1609 1.1 mrg
1610 1.1 mrg
1611 1.1 mrg
1612 1.1.1.3 mrg /* Redefine yyless() so it works in section 3 code. */
1613 1.1 mrg
1614 1.1.1.3 mrg #undef yyless
1615 1.1.1.3 mrg #define yyless(n) \
1616 1.1.1.3 mrg do \
1617 1.1.1.3 mrg { \
1618 1.1.1.3 mrg /* Undo effects of setting up yytext. */ \
1619 1.1.1.3 mrg yytext[yyleng] = yy_hold_char; \
1620 1.1.1.3 mrg yy_c_buf_p = yytext + n; \
1621 1.1.1.3 mrg yy_hold_char = *yy_c_buf_p; \
1622 1.1.1.3 mrg *yy_c_buf_p = '\0'; \
1623 1.1.1.3 mrg yyleng = n; \
1624 1.1.1.3 mrg } \
1625 1.1.1.3 mrg while ( 0 )
1626 1.1 mrg
1627 1.1 mrg
1628 1.1.1.3 mrg /* Internal utility routines. */
1629 1.1 mrg
1630 1.1 mrg #ifndef yytext_ptr
1631 1.1.1.3 mrg #ifdef YY_USE_PROTOS
1632 1.1.1.3 mrg static void yy_flex_strncpy( char *s1, yyconst char *s2, int n )
1633 1.1.1.3 mrg #else
1634 1.1.1.3 mrg static void yy_flex_strncpy( s1, s2, n )
1635 1.1.1.3 mrg char *s1;
1636 1.1.1.3 mrg yyconst char *s2;
1637 1.1.1.3 mrg int n;
1638 1.1.1.3 mrg #endif
1639 1.1.1.3 mrg {
1640 1.1.1.3 mrg int i;
1641 1.1 mrg for ( i = 0; i < n; ++i )
1642 1.1 mrg s1[i] = s2[i];
1643 1.1.1.3 mrg }
1644 1.1 mrg #endif
1645 1.1 mrg
1646 1.1 mrg #ifdef YY_NEED_STRLEN
1647 1.1.1.3 mrg #ifdef YY_USE_PROTOS
1648 1.1.1.3 mrg static int yy_flex_strlen( yyconst char *s )
1649 1.1.1.3 mrg #else
1650 1.1.1.3 mrg static int yy_flex_strlen( s )
1651 1.1.1.3 mrg yyconst char *s;
1652 1.1.1.3 mrg #endif
1653 1.1.1.3 mrg {
1654 1.1.1.3 mrg int n;
1655 1.1 mrg for ( n = 0; s[n]; ++n )
1656 1.1 mrg ;
1657 1.1 mrg
1658 1.1 mrg return n;
1659 1.1.1.3 mrg }
1660 1.1 mrg #endif
1661 1.1 mrg
1662 1.1.1.3 mrg
1663 1.1.1.3 mrg #ifdef YY_USE_PROTOS
1664 1.1.1.3 mrg static void *yy_flex_alloc( yy_size_t size )
1665 1.1.1.3 mrg #else
1666 1.1.1.3 mrg static void *yy_flex_alloc( size )
1667 1.1.1.3 mrg yy_size_t size;
1668 1.1.1.3 mrg #endif
1669 1.1.1.3 mrg {
1670 1.1 mrg return (void *) malloc( size );
1671 1.1.1.3 mrg }
1672 1.1 mrg
1673 1.1.1.3 mrg #ifdef YY_USE_PROTOS
1674 1.1.1.3 mrg static void *yy_flex_realloc( void *ptr, yy_size_t size )
1675 1.1.1.3 mrg #else
1676 1.1.1.3 mrg static void *yy_flex_realloc( ptr, size )
1677 1.1.1.3 mrg void *ptr;
1678 1.1.1.3 mrg yy_size_t size;
1679 1.1.1.3 mrg #endif
1680 1.1.1.3 mrg {
1681 1.1 mrg /* The cast to (char *) in the following accommodates both
1682 1.1 mrg * implementations that use char* generic pointers, and those
1683 1.1 mrg * that use void* generic pointers. It works with the latter
1684 1.1 mrg * because both ANSI C and C++ allow castless assignment from
1685 1.1 mrg * any pointer type to void*, and deal with argument conversions
1686 1.1 mrg * as though doing an assignment.
1687 1.1 mrg */
1688 1.1 mrg return (void *) realloc( (char *) ptr, size );
1689 1.1.1.3 mrg }
1690 1.1 mrg
1691 1.1.1.3 mrg #ifdef YY_USE_PROTOS
1692 1.1.1.3 mrg static void yy_flex_free( void *ptr )
1693 1.1.1.3 mrg #else
1694 1.1.1.3 mrg static void yy_flex_free( ptr )
1695 1.1.1.3 mrg void *ptr;
1696 1.1.1.3 mrg #endif
1697 1.1.1.3 mrg {
1698 1.1.1.3 mrg free( ptr );
1699 1.1.1.3 mrg }
1700 1.1 mrg
1701 1.1.1.3 mrg #if YY_MAIN
1702 1.1.1.3 mrg int main()
1703 1.1.1.3 mrg {
1704 1.1.1.3 mrg yylex();
1705 1.1.1.3 mrg return 0;
1706 1.1.1.3 mrg }
1707 1.1.1.3 mrg #endif
1708 1.1.1.3 mrg #line 107 "../../../gmp/demos/calc/calclex.l"
1709 1.1 mrg
1710 1.1 mrg
1711 1.1 mrg int
1712 1.1 mrg yywrap ()
1713 1.1 mrg {
1714 1.1 mrg return 1;
1715 1.1 mrg }
1716