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