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