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